当前位置:首页 > 科技 >

在 Worklight 中开发基于认证器和登陆模块的安全验证

发布时间:2017-09-13 12:39:08

在 Worklight 中开发基于认证器和登陆模块的安全验证

Worklight 安全验证简介

IBM Worklight 作为一个领先的移动应用开发和管理平台,提供了完善的安全验证框架,保证了内部应用、适配器及静态资源的安全,并且提供了很好的扩展功能,可以自定义认证器和登陆模块来进行复杂的验证。

Worklight 安全验证框架

安全框架认证流程如图 1 所示,主要包含四部分:

特定保护资源:包括内部应用、适配器(访问企业信息系统)及静态资源。

security test:由一个或多个 ream 组成,用于资源保护。

realm:定义了处理用户验证的业务逻辑,主要包含两部分:

认证器:服务器端组件,用于收集客户端发来的用户身份信息,分为三类:基于表单的认证器、基于适配器的认证器和基于 HTTP 头的认证器。它可以收集 HTTP request 对象的所有信息,如 cookies,body,headers 及其他属性的值。

登陆模块:服务器端组件,用于接收认证器收集到的用户身份信息,验证该身份并创建用户身份对象。当 session 结束(注销或是超时)后,登陆模块会自动销毁用户身份对象。验证逻辑可以调用企业已有的验证框架,有多种验证方式,常见的有如下几种:

Webservice 方式调用验证接口

在数据库表中查找用户信息

使用 Websphere LTPA Token

challenge handler:客户端组件,每个实例对应一个 realm,用于监测服务器端是不是在发送一个需要安全验证的请求,如果是,则收集用户身份信息,并发送至服务器端。否则验证已经完成,可以直接访问资源。

图 1. 安全框架认证示意图

图 1. 安全框架认证示意图

在多数情况下,我们仅需直接使用 Worklight 提供的认证器和登陆模块,如有复杂的情况,例如认证信息需要从客户端 request 的 cookie、header 和 user-agent 中获取,我们可以用 Java 来实现自己所需的认证器和登陆模块。在本例中,我们将使用认证器和登陆模块的安全验证。

基于认证器和登陆模块的安全验证简介

同其他方式的安全验证流程类似,认证器在拦截到一个访问受保护资源的请求后,会首先检查该请求是否含有合法的用户身份,如果是,则给予访问权限,并返回请求的数据;如果没有合法的用户身份,则启动登陆模块的验证流程,只有在验证流程成功后,才能授予访问权限,返回请求的数据。如图 2 所示。

图 2. 基于认证器和登陆模块的安全验证处理流程图

图 2. 基于认证器和登陆模块的安全验证处理流程图

示例介绍

本文给出了一个基于自定义认证器和登陆模块的安全验证的示例,并使用该安全策略来保护适配器中的过程,读者也可以根据自己的需要使用安全策略来保护应用和静态资源。

本文的示例分为四个部分:认证器、登陆模块、适配器和客户端应用,图 3 给出了示例的请求处理流程,该处理流程同图 2 所示的标准请求处理流程类似:

图 3. 示例请求处理流程

图 3. 示例请求处理流程

请求访问客户端应用中的页面 LoginModuleAuth.html。

页面中的 JavaScript 调用受保护的过程 protectResource。

安全验证框架被触发,调用认证器。

客户端页面中的 JavaScript 检查 authStatus 属性,判断是否需要验证

如已验证,显示请求页面,显示相应的 DIV 内容,并隐藏特定的 DIV 内容,如登录输入框。至此,请求处理流程结束。

如需要验证,则显示请求页面,显示相应的 DIV 内容,如登录输入框,并隐藏特定的 DIV 内容。

用户输入相应身份信息,并触发身份验证请求,相应的登陆模块中的 login 将被触发,用于验证身份信息。

如果验证成功,则转至第 5 步。

如果验证失败,则转至第 6 步,并显示相应的错误消息。

从开发角度看,本例的开发主要分为认证器、登陆模块、适配器和客户端应用的开发,由于只是用于演示用途,本例并未设计复杂的业务逻辑。在登陆模块中,只有简单的认证逻辑;在客户端应用中,页面中主要分成两块,一块是在验证后才会显示的,另一块则在没有验证的时候显示。下面我们将介绍如何开发本例及相应的 Worklight 安全验证框架中的要点。

示例开发 配置服务器端的安全验证策略

当安全验证策略确定后,我们就可以着手配置安全策略,但在配置之前,我们首先需要创建一个 Worklight 项目,本示例选择创建一个混合应用(Hybrid Application)类型的项目,在向导窗口,输入应用名为 LoginModuleAuth,在下面的小节“开发客户端应用”中,我们将基于这里生成的应用做修改。

图 4. 创建 Worklight 项目

图 4. 创建 Worklight 项目

项目创建成功后,我们可以在项目视图中看到已经生成好的文件,打开 server->conf,我们即可找到用于安全配置的文件 authenticationConfig.xml,如图 5 所示。

图 5. 安全配置文件 authenticationConfig.xml

图 5. 安全配置文件 authenticationConfig.xml

Fig5_AuthConfigFile.jpg

正如本文在第一小节提到的,服务器端的安全配置需要配置 security test 和 realm,在服务器端,realm 由登陆模块和认证器组成,下面我们首先配置登陆模块,打开文件 authenticationConfig.xml,在节点 loginModules 加入清单 1 所示的代码片段。

清单 1. 登陆模块配置代码片段

<loginModules> <loginModule name="CustomLoginModule"> <className>com.auth.MyCustomLoginModule</className> </loginModule> </loginModules>

由于示例使用登陆模块来执行安全验证逻辑,所以这里使用了自定义的登陆模块 com.auth.MyCustomLoginModule。它将在后面小节中介绍。

配置好了登陆模块,便可在同一个文件中加入 realm 的配置,找到节点 realms,并加入清单 2 所示的代码片段。

清单 2. realm 配置代码片段

<realm loginModule="CustomLoginModule" name="CustomAuthenticatorRealm"> <className>com.auth.MyCustomAuthenticator</className> </realm>

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:孝感网站制作 http://xiaogan.666rj.com