内容


IBM Security Access Manager:使用基于上下文的访问保护网站

使用 ISAM 安全设备实现基于上下文的强身份验证,从而实现网站安全性

Comments

IBM Security Access Manager for Mobile (ISAM for Mobile) 允许安全架构师通过 IBM Security Access Manager for Web (ISAM for Web or WebSEAL) 安全设备制定关于 Web 访问的基于上下文的授权 (CBA) 决策(也称为基于风险的访问 决策)。此设计中的一个重要考虑因素是,开发的 Web 安全架构能够最小化风险计算次数,同时维护一个得到上下文保护的 Web 环境。

在本文中,我们将介绍如何一起配置 ISAM for Web 和 ISAM for Mobile 的架构和配置,以便允许对用户身份验证制定 CBA 风险决策,从而保护 Web 资源集合(或整个网站)。这种架构可以确保仅在必要时执行风险计算,而不是对每个后续访问请求都执行风险计算。

图 1 列出了此架构。

图 1. 此解决方案的架构
此解决方案的架构
此解决方案的架构

解决方案设计

要配置此解决方案,需要拥有以下组件:

  • 一个 IBM Security Access Manager for Web 设备。该设备可以是一个硬件或软件设备,但它至少安装了 V8.0 Fixpack 1。在安装该设备后,应为网络接口配置一个可用的、正在运行的 WebSEAL 逆向代理实例。
  • 一个 IBM Security Access Manager for Mobile 设备。该设备可以是一个硬件或软件设备。应该安装并激活该设备,配置网络接口,不需要执行任何进一步配置。
  • 一个运行您希望保护的站点的应用服务器。在使用这个应用服务器作为集成的一部分时,它还应该能够运行某种活动服务器页面。WebSphere、Tomcat 或 IIS 都适用。
  • 一个客户端浏览器和一部智能电话。一个能够运行 HMAC OTP 生成器(比如 Google Authenticator)来生成一次性密码的设备。

在本场景中,我们有一个需要强身份验证的 Web 应用程序。该 Web 应用程序将使用 ISAM 设备上的 WebSEAL 进行保护。

示例应用程序

本文中使用的示例应用程序是一个名为 Your Bank 的虚假的网络银行网站。在该网站内,有一个为进行未经验证的访问而设计的页面和一个仅用于经过验证的访问的页面。此设计在许多在线 Web 应用程序中很常见,这使它成为了一个演示 ISAM for Mobile 的更强身份验证功能的恰当示例应用程序。

图 2. 银行网站首页
银行网站首页
银行网站首页
图 3. 银行受保护的页面
银行受保护的页面
银行受保护的页面

该站点的 URL 结构大体类似于表 1。

表 1. 示例应用程序站点的 URL 结构
URL 模式 用途
/bank/* 此文件夹下的 URL 是为来自普通银行客户的经过验证的访问而设计的。
/* 站点核心上的 URL 一般是为来自未经验证的用户的访问而设计的。

下载 部分中,我们提供了共含两页的等效示例银行 Web 应用程序;它适合在 Tomcat 上运行,或者可以将它部署到一个 WebSphere 环境中。

安全策略示例

Your Bank 拥有以下安全策略需求:

  • 所有希望访问在线网络银行功能的银行客户都必须使用用户名和密码进行验证。
  • 如果客户之前未从已注册的设备/浏览器访问该站点,那么他们还必须使用一次性密码进行验证。
  • 在用户使用 OTP 执行验证后,将会注册浏览器实例。

该安全策略的核心就是显著改善了银行客户的安全状态,因为它始终要求经过第二因素身份验证才能登录。在第一次与网站交互时,用户需要输入一个用户名和一次性密码。

在最初的交互期间,用户的浏览器会被采集指纹并注册。

在后续交互中,在用户输入用户名和密码后,ISAM for Mobile 中的 CBA 模块会将用户的浏览器指纹与以前的交互进行对比。如果指纹相同,则为用户提供第二因素身份验证。

此方法为用户提供了更高的易用性,在这种情况下他们只需要在注册新浏览器或设备时提供一个 OTP。这一步可以减少管理和实现 OTP SMS 战略的成本,为组织节省金钱。

配置步骤

现在我们将详细介绍配置 ISAM 设备来满足安全场景所采用的步骤。

网络接口

通过使用这些设备,我们引入了管理接口和应用程序网络接口的概念。管理任务是通过管理接口执行的,而运行时通信是通过应用程序接口执行的。这在设备上创造了一种逻辑网络分离,允许通过网络分离来实现一种更强的安全状态。

图 4. 网络接口端点
网络接口端点
网络接口端点

ISAM 设备

配置 ISAM 设备来使用本地策略服务器和本地注册表。您可以使用一个远程 LDAP 和策略服务器,但本文中提供的示例假设使用了一个本地服务器。

图 5. 配置了本地策略服务器和 LDAP 目录的 ISAM 设备
配置了本地策略服务器和 LDAP 目录的 ISAM 设备
配置了本地策略服务器和 LDAP 目录的 ISAM 设备

为 ISAM 设备配置一个在应用程序网络接口上监听的活动的逆向代理实例。

图 6. 配置了 WebSEAL 逆向代理实例的 ISAM 设备
配置了 WebSEAL 逆向代理实例的 ISAM 设备
配置了 WebSEAL 逆向代理实例的 ISAM 设备

ISAM for Mobile 基本配置

在本节中,我们将介绍配置 ISAM 设备(外部授权服务插件)和 ISAM for Mobile 设备(授权服务)之间的连接的步骤。

主机名解析

因为此示例使用了一个虚拟主机联接,所以映射到 ISAM 设备的应用程序接口的主机名 localhost 需要包含在您的网络 DNS 中,或者在 MGA 设备的 hosts 配置文件中设置它。为了在 hosts 文件中设置该值,在 MGA 设备中,请导航到 Manage System Settings > Hosts File 并添加以下值:

  • 地址:10.166.1.14
  • 主机名:bank.test
图 7. Hosts 文件配置
Hosts 文件配置
Hosts 文件配置

isamcfg 配置工具

第二个配置步骤需要运行 isamcfg 工具。该工具可以从 ISAM for Mobile 设备运行,或者从 Manage System Settings > File Downloads 页面的 /mga/tools/isamcfg 下进行下载。对于此配置,我们将通过 SSH 命令行在 ISAM for Mobile 设备的本地运行它。

首先,使用 PuTTY 或等效工具通过 SSH 连接到 ISAM for Mobile 管理接口。

图 8. 连接到 ISAM for Mobile 设备的 PuTTY 终端会话
连接到 ISAM for Mobile 设备的 PuTTY 终端会话
连接到 ISAM for Mobile 设备的 PuTTY 终端会话

接下来,在进入菜单提示中后,导航到配置工具:

isam8> isam
isam8:isam> mga
isam8:mga> config
Security Access Manager Autoconfiguration Tool Version 8.0.1.0 [20141203-1958]

启动配置工具后,首先选择配置 Context-based AuthorizationAuthentication Service 的选项。这会转变为启用 WebSEAL 实例,以便能够调用 ISAM for Mobile 设备来制定 CBA 决策和执行 OTP 强身份验证。

按照提示进行操作。(您可以将 bold 变量替换为与您的环境匹配的细节。)一定要在配置工具中保持 Context-based AuthorizationAuthentication Service 被选中为 [ X ]

isam8> isam
Select/deselect the capabilities you would like to configure by typing its number. 
Press enter to continue: 
   [ X ] 1. Context-based Authorization
   [ X ] 2. Authentication Service
   [ X ] 3. API Protection
Enter your choice: <Press Enter>
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1

提供 ISAM 设备的 ISAM for Mobile 管理接口的信息并提供管理凭证。

Security Access Manager for Mobile Local Management Interface hostname: 10.150.27.149
Security Access Manager for Mobile Local Management Interface port [443]: 443
Security Access Manager for Mobile Appliance administrator user ID [admin]: admin
Security Access Manager for Mobile Appliance administrator password: <password> 
Testing connection to https://10.150.27.149:443/.
SSL certificate information: 
   Issuer DN: CN=isam4m 
   Subject DN: CN=isam4m
SSL certificate fingerprints: 
   MD5: 7A:93:EB:F4:65:EA:F3:A2:10:37:CD:88:C3:52:FC:3D
   SHA1: 2A:A2:29:DB:E9:38:C5:0E:ED:27:35:95:0E:F1:B3:06:C6:E2:0D:E9
SSL certificate data valid (y/n): y
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1
Web Gateway Appliance Local Management Interface hostname: 10.150.27.149
Web Gateway Appliance Local Management Interface port [443]: 443
Web Gateway Appliance administrator user ID [admin]: admin
Web Gateway Appliance administrator password: <password>
Testing connection to https://10.150.27.149:443/.
SSL certificate information: 
   Issuer DN: CN=isam4w
   Subject DN: CN=siam4w
SSL certificate fingerprints: 
   MD5: 7E:88:5C:FA:F6:E3:5C:12:D5:72:64:EF:F3:4C:AA:83
   SHA1: BB:EA:97:55:25:DC:67:64:01:35:79:F7:E6:27:E0:97:90:A9:1A:84

SSL certificate data valid (y/n): y
Instance to configure: 
   1. wga 
   2. Cancel
Enter your choice [1]: 1
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1
Security Access Manager administrator user ID [sec_master]: sec_master
Security Access Manager administrator password: <password>
Security Access Manager Domain Name [Default]: <press Enter to select the default>
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1

提供 ISAM for Mobile 设备的应用程序接口的信息,包括 CBA 授权决策 Web 服务(我们之前测试的同一个 Web 服务)的用户名和密码。

Security Access Manager for Mobile application interface hostname: localhost
Security Access Manager for Mobile application interface port: 443
Select the method for authentication between WebSEAL and the Security Access Manager for Mobile application interface:
   1. Certificate authentication 
   2. User-id/password authentication
Enter your choice [1]: 2
Security Access Manager for Mobile application interface user ID: easuser
Security Access Manager for Mobile application interface password: passw0rd <this is the default out-of-the-box password>
Testing connection to https://localhost:443.
Connection completed.
SSL certificate information: 
   Issuer DN: CN=isam, O=ibm, C=us 
   Subject DN: CN=isam, O=ibm, C=us
SSL certificate fingerprints: 
   MD5: 79:23:E3:5D:27:DC:66:2B:D2:C5:43:93:10:C4:3E:3F
   SHA1: F8:08:49:4A:47:CF:92:C2:54:29:EF:24:59:DD:7A:9E:D6:E0:1F:81

SSL certificate data valid (y/n): y
Automatically add CA certificate to the key database (y/n): y
Restarting the WebSEAL server...
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1
The following files are available on the Web Gateway Appliance. Choose one for the '400 Bad Request'
response page.
1. oauth_template_rsp_400_bad_request.html
2. oauth_template_rsp_401_unauthorized.html
3. oauth_template_rsp_502_bad_gateway.html
Enter your choice [1]: 1
The following files are available on the Web Gateway Appliance. Choose one for the '401 Unauthorized'
response page.
1. oauth_template_rsp_400_bad_request.html
2. oauth_template_rsp_401_unauthorized.html
3. oauth_template_rsp_502_bad_gateway.html
Enter your choice [1]: 2
The following files are available on the Web Gateway Appliance. Choose one for the '502 Bad Gateway'
response page.
1. oauth_template_rsp_400_bad_request.html
2. oauth_template_rsp_401_unauthorized.html
3. oauth_template_rsp_502_bad_gateway.html
Enter your choice [1]: 3
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1
The junction /mga contains endpoints that require Authorization HTTP header to be forwarded to the backend
server.
Do you want to enable this feature? [y|n]? y

isamcfg 工具现在将配置 WebSEAL ACL 和 EAS POP。

URLs allowing unauthenticated access: 
   https://localhost/mga/sps/static
URLs allowing all authenticated users access: 
   https://localhost/mga/sps/ac 
   https://localhost/mga/sps/xauth 
   https://localhost/mga/sps/mga/user/mgmt/html 
   https://localhost/mga/sps/mga/user/mgmt/device 
   https://localhost/mga/sps/mga/user/mgmt/otp
Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1
-----------------------------------------------
Planned configuration steps:

A junction to the Security Access Manager server will be created at /mga.

The POP oauth-pop will be created.
The POP rba-pop will be created.

ACLs denying access to all users will be attached to:
   /WebSEAL/isam8-wga/mga

ACLs allowing access to all users will be attached to:
   /WebSEAL/isam8-wga/mga/sps/authsvc
   /WebSEAL/isam8-wga/mga/sps/xauth
   /WebSEAL/isam8-wga/mga/sps/authservice/authentication
   /WebSEAL/isam8-wga/mga/sps/oauth/oauth20/authorize
   /WebSEAL/isam8-wga/mga/sps/static
   /WebSEAL/isam8-wga/mga/sps/oauth/oauth20/session
   /WebSEAL/isam8-wga/mga/sps/oauth/oauth20/token

ACLs allowing access to all authenticated users will be attached to:
   /WebSEAL/isam8-wga/mga/sps/auth
   /WebSEAL/isam8-wga/mga/sps/ac
   /WebSEAL/isam8-wga/mga/sps/xauth
   /WebSEAL/isam8-wga/mga/sps/mga/user/mgmt/html
   /WebSEAL/isam8-wga/mga/sps/oauth/oauth20/clients
   /WebSEAL/isam8-wga/mga/sps/common/qr
   /WebSEAL/isam8-wga/mga/sps/mga/user/mgmt/device
   /WebSEAL/isam8-wga/mga/sps/mga/user/mgmt/questions
   /WebSEAL/isam8-wga/mga/sps/mga/user/mgmt/otp
   /WebSEAL/isam8-wga/mga/sps/mga/user/mgmt/grant

EAI authentication will be enabled for the endpoints:
   /WebSEAL/isam8-wga/mga/sps/oauth/oauth20/session
   /WebSEAL/isam8-wga/mga/sps/auth
   /WebSEAL/isam8-wga/mga/sps/authservice/authentication
   /WebSEAL/isam8-wga/mga/sps/authsvc

Certificate authentication will be disabled.

HTTP-Tag-Value header insertion will be configured for the attributes:
   user_session_id=user_session_id

Press 1 for Next, 2 for Previous, 3 to Repeat, C to Cancel: 1

Beginning configuration...

Attaching ACLs.
Creating ACL isam_mobile_nobody.
Creating ACL isam_mobile_unauth.
Creating ACL isam_mobile_rest.
Creating ACL isam_mobile_anyauth.
Creating junction /mga.

Editing configuration file...
Disabling BA authentication.
Enabling forms authentication.

Restarting the WebSEAL server...
Configuration complete.

备注:确保您等待了约 30 秒,让 WebSEAL 服务器重新启动,然后再前进到下一步。

在完成配置后,ISAM 设备上的 WebSEAL 将拥有:

  • 一个与 CBA 和 OTP 组件的联接 /mga,具有允许进行适当访问的 ACL
  • 一个名为 rba-pop 的 POP,可以将它附加到需要基于上下文的访问策略的资源
  • 在 HTTPS 上配置表单和 EAI 身份验证

配置 ISAM for Mobile 和 ISAM for Web Policy Server 之间的通信。这是将基于上下文的访问策略附加到 ISAM for Web 资源的必要步骤。WebSEAL 上定义的资源可以通过 ISAM for Mobile 控制台进行查看。请导航到 Secure Mobile Settings > Access Control,单击 Resources,然后单击 Add 图标。

图 9. 查看并添加 WebSEAL 资源
查看并添加 WebSEAL 资源
查看并添加 WebSEAL 资源

控制台会提示您输入策略服务器管理凭证;输入 sec_master 用户名和它的密码。

图 10. 策略服务器登录细节
策略服务器登录细节
策略服务器登录细节

单击 Add 图标;现在应能够浏览 WebSEAL 对象空间中的资源了。

图 11. 浏览 WebSEAL 资源
浏览 WebSEAL 资源
浏览 WebSEAL 资源

创建 IBM Security Access Manager 用户

在本节中,我们将介绍在 ISAM 设备本地注册表中创建示例用户的步骤。

从前面步骤中使用的 PuTTY 终端启动 ISAM 管理实用程序。对于熟悉以前的 ISAM 版本的人,这也称为 pdadmin。使用策略服务器管理员 sec_master 的身份和配置的密码进行登录。

isam8> isam
isam8:isam> admin
pdadmin> login
Enter User ID: sec_master
Enter Password: <password>
pdadmin sec_master>

在本地 ISAM 设备注册表中创建一个测试用户 testuser

pdadmin sec_master> user create testuser cn=testuser,dc=iswga testuser testuser passw0rd 
pdadmin sec_master> user modify testuser account-valid yes

备注:使用板载 LDAP 服务器时,后缀为 dc=iswga。此后缀无法更改。

创建 ISAM for Web 联接

在这一节中,我们将介绍配置联接到示例应用程序的一个联接的步骤。创建联接到 Your Bank 服务器的联接有许多备选机制。在示例环境中,Your Bank Java™ WAR 文件作为 ROOT 应用程序部署在 Tomcat 上。

ISAM 设备引入了通过逻辑管理接口 (LMI) 创建联接的功能,如下所示:

图 12. 通过 LMI 接口的联接管理
通过 LMI 接口的联接管理
通过 LMI 接口的联接管理

使用 LMI,导航到 Secure Reverse Proxy Settings > Reverse Proxy,为您的应用服务器配置一个虚拟主机联接。选择您希望向其添加联接的实例并单击 Manage > Junction Management。在显示的页面上,单击 New > Virtual Junction。在 Junction 选项卡下,在 Junction Point Name 字段中输入标签 bank

图 13. 创建一个虚拟主机联接,第 1 部分
创建一个虚拟主机联接,第 1 部分
创建一个虚拟主机联接,第 1 部分

Server 选项卡下,添加托管 Your Bank 站点的联接服务器(Tomcat 或等效的服务器)。在测试环境中,Tomcat 在位于 10.166.1.14 上的服务器上的端口 8080 上进行监听。使用的虚拟主机将是 localhost,它将在应用程序接口 10.150.27.215 上的 WebSEAL 端口 80 上进行监听。请注意,如果使用一个具有虚拟主机感知功能的后端服务器,应该确保主机名和端口在 WebSEAL 前端和后端服务器配置上都是匹配的。

图 14. 创建一个虚拟主机联接,第 2 部分
创建一个虚拟主机联接,第 2 部分
创建一个虚拟主机联接,第 2 部分

Identity 选项卡上配置一个联接,以标头形式发送用户名 iv-user 属性。

图 15. 创建一个虚拟主机联接,第 3 部分
创建一个虚拟主机联接,第 3 部分
创建一个虚拟主机联接,第 3 部分

完成时保存联接。LMI 现在应显示为 ISAM 设备实例列出的两个联接。

图 16. 创建一个虚拟主机联接,已完成
创建一个虚拟主机联接,已完成
创建一个虚拟主机联接,已完成

也可以像前面的用户创建步骤中的那样,仍然通过传统的管理 (pdadmin) 命令行接口来创建虚拟主机联接。

pdadmin sec_master> server task <WebSEAL instance> virtualhost create -t tcp -h 10.166.1.14 -p 8080 -v localhost -c iv-user -p 8080 bank
Created Virtual Host Junction at bank

此命令创建一个与我们的应用服务器的联接,基于主机名 localhost 来建立映射,在 iv-user 标头中提供用户名。

Host 文件或 DNS 配置

向您的 DNS 服务器或本地测试客户端计算机 hosts 文件添加一个条目,以便将 ISAM 设备应用程序接口映射到您定义的主机名 localhost。

图 17. Hosts 文件示例
Hosts 文件示例
Hosts 文件示例

ISAM for Web 配置步骤

此场景需要对默认 WebSEAL 配置文件执行一些更改。按照本节中的步骤更新配置。

首先编辑配置文件:导航到 Secure Reverse Proxy Settings > Reverse Proxy。单击 Reverse Proxy 实例,然后导航到 Manage > Configuration > Edit Configuration File

图 18. 配置逆向代理实例
配置逆向代理实例
配置逆向代理实例

这将打开传统的 WebSEAL 配置文件。

图 19. WebSEAL 配置文件
WebSEAL 配置文件
WebSEAL 配置文件

接下来,设置以下参数来启用本场景中使用的通过 HTTP 的身份验证:

  1. 设置此选项来启用基于 HTTP 的表单身份验证。
[forms]
#----------------------
# FORMS
#----------------------
# Enable authentication using the forms authentication mechanism
# One of <http, https, both, none>
forms-auth = both
  1. 设置此选项来启用基于 HTTP 的 EAI 身份验证。
[eai]
#----------------------
# EXTERNAL AUTHENTICATION INTERFACE
#----------------------
# Enable EAI authentication.
#
# One of <http, https, both, none>
eai-auth = both

现在,设置以下参数来启用本场景中使用标准和虚拟主机联接的混合处理:

  1. 设置此选项,以便允许对 pkmslogout URL 进行不经验证的访问。
[acnt-mgt]...
#-----------------------------
# ALLOW UNAUTHENTICATED LOGOUT
#-----------------------------
# Set this parameter to 'yes' to allow unauthenticated users to be able
# to request the pkmslogout resource. If this parameter is set to 'no'
# an unauthenticated user will be requested to authenticate before the
# pkmslogout resource is returned.
allow-unauthenticated-logout = yes
  1. 设置此选项,以便允许通过虚拟主机联接访问标准联接 /mga。
[junction]
...
# Two separate junction tables are managed by WebSEAL, one for virtual host
# junctions, and the other for standard junctions. When a request is
# received the VHJ table is searched first, and if no match is found the
# table which manages the standard junctions is then searched. The following
# configuration item is used to reverse the search order so that the table
# which manages the standard junctions is searched before the VHJ table.
match-vhj-first = no
  1. 设置此选项,以便支持在标准联接和虚拟主机联接之间共享经过验证的会话。
[session]
...
# Enable a cookie based session to be shared across all standard and virtual
# host junctions on a single WebSEAL instance. This is achieved through
# enabling the WebSEAL instance to store a single session key as an
# independent value in a multi-valued domain cookie, indexed by the instance
# name. The domain cookie itself is shared across all participating WebSEAL
# instances, but the session values are specific to each instance.
#
# If WebSEAL exists in an environment where SMS already handles single
# sign-on across domains, do not enable this configuration item.
shared-domain-cookie = yes

最后,保存对配置文件的更改,部署更改,并重新启动逆向代理实例。

ISAM for Web 安全策略

在默认情况下,WebSEAL 将需要身份验证才能访问受保护的网站的任何部分。以下命令将修改安全策略,以支持未经验证地访问应用程序根,以及要求经过验证才能访问受保护的银行页面。它还允许未经验证地访问属性收集流程来采集 CBA 风险计算浏览器指纹。

此外,我们将经过验证的 ACL 附加到标记了 @bank 的虚拟主机联接上名为 /stepup/ 的资源 — 这是我们将在 CBA 设计中使用的应用程序,将在以后详细介绍。

isam8> isam
isam8:isam> admin
pdadmin> login
Enter User ID: sec_master
Enter Password: <password> 
pdadmin sec_master> acl attach /WebSEAL/<WebSEAL instance>/@bank/ isam_mobile_unauth
pdadmin sec_master> acl attach /WebSEAL/<WebSEAL instance>/@bank/bank/ default-webseal
pdadmin sec_master> acl attach /WebSEAL/<WebSEAL instance>/@bank/stepup/ default-webseal
pdadmin sec_master> server replicate

有了这条基本安全策略,在我们导航到 ISAM 设备应用程序接口时,就会显示 Your Bank 网站,不需要任何身份验证凭证,而且 /bank 文件夹下的任何信息将使用基于表单的身份验证来保护。

图 20. 通过 WebSEAL 联接访问的银行应用程序
通过 WebSEAL 联接访问的银行应用程序
通过 WebSEAL 联接访问的银行应用程序

接下来,我们将定义一个需要 2 级身份验证才能访问 /bank 文件夹的安全策略。第一步是定义一条需要 2 级身份验证的受保护的对象策略 (POP)。

pdadmin sec_master> pop create level2
pdadmin sec_master> pop modify level2 set ipauth anyothernw 2

现在我们将此策略附加到我们的银行资源。

pdadmin sec_master> pop attach /WebSEAL/<WebSEAL instance>/@bank/bank level2

进阶应用程序

有了访问银行站点所需的 2 级身份验证的配置,我们现在必须配置一种机制,使用户能够获得 2 级凭证。出于此目的,我们将使用一个非常简单的 EAI JSP 页面,它将返回一个没有用户交互的 2 级身份验证消息。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.Enumeration"%>
<html>
<head>
<title>Stepup</title>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<% 
	String URL = request.getParameter("URL");
	String username = request.getHeader("iv-user");
	/* This is where the EAI returns the authenticated user, 
	 * and the higher level authentication credential. 
	 */ 

	response.setHeader("am-fim-eai-user-id", username);
	response.setHeader("am-eai-auth-level", "2");
	if (URL != null) 
		response.setHeader("am-fim-eai-redir-url", URL);
 %> 
	</head> 
	</html>

包含这个 JSP 页面的示例 WAR 文件可从 下载 部分获得。

将 ISAM for Mobile 配置到 ISAM 设备中后,WebSEAL EAI 接口已完成了针对此目的的部分配置。还剩下两个步骤。

首先将此应用程序 URL 设置为 WebSEAL EAI 触发器 URL。在 ISAM 设备管理界面上,导航到逆向代理实例:

  1. 导航到 Secure Reverse Proxy Settings > Reverse Proxy。选择逆向代理实例并单击 Edit
  2. Authentication 选项卡,为 EAI 应用程序添加一个新触发器 URL。
http://bank.test/stepup/*
图 21. 将触发器 URL 添加到 ISAM 设备逆向代理配置
将触发器 URL 添加到 ISAM 设备逆向代理配置
将触发器 URL 添加到 ISAM 设备逆向代理配置
  1. 单击 Save 保存更改。

现在配置进阶 HTML 模板,以便重定向到进阶应用程序:

  1. 保持在上一步中仍选中逆向代理实例,单击 Manage > Management Root 来查看模板页面。
图 22. 编辑 stepup.html 模板页面
编辑 stepup.html 模板页面
编辑 stepup.html 模板页面
  1. 找到 stepuplogin.html 文件:management > C > stepuplogin.html
  2. 单击 Manage > Export 来保存到您的本地计算机,以备份现有页面。(可选)
  3. 编辑该文件,将其替换为以下 HTML。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>Fingerprinting Browser...</title>
<script src="/mga/sps/ac/js/info.js">
</script>
</head> 
	<body> 
		<form action="/stepup/" method="post"> 
			<input type="hidden" name="URL" value="%URL%" /> 
		</form>
<script TYPE="text/javascript"> 
	var loginText = 'Fingerprinting Browser - Please wait...<br>' + 
		'Note, this page contains an intentional delay of 3 seconds.'; 
	document.write(loginText); 
	// Set the parameter '3000' to '0' to remove the 3 second delay. 
	setTimeout('document.forms[0].submit()', 3000);
</script> 
</body>
</html>

这一页将加载属性集合 JavaScript 文件:

http://bank.test/mga/sps/ac/js/info.js

属性集合基于选择的风险概况来采集浏览器的指纹。这已在 基于上下文的授权策略定义 部分进行了更详细的介绍。

备注:为了让您能够看到此页面已加载到浏览器中,我们特意设置了一个 3 秒的延迟。

在完成属性集合后,它将重定向到部署在应用服务器上的 /stepup/ 文件夹下的进阶应用程序。此模板文件的一个版本已包含在 下载 部分。

最后,在完成配置之后,保存并部署更改,然后重新启动逆向代理实例。

安全策略测试

现在尝试访问 /bank 资源,WebSEAL 现在会提示输入用户名和密码来执行基于表单的身份验证,这会让用户通过 1 级身份验证。然后,WebSEAL 将执行要求用户通过 2 级身份验证的 POP 安全策略,并重定向到进阶模板页面。进阶模板页面将会重定向浏览器来访问进阶 EAI,后者将凭证升级到 2 级凭证,然后重定向回 /bank 站点 — 满足安全策略。

图 23. 安全策略测试的顺序图
安全策略测试的顺序图
安全策略测试的顺序图

获取第二因素一次性密码凭证

ISAM for Mobile 设备引入了大量 OTP 生成和交付功能。对于本演示环境,最容易演示的是基于 HMAC 的一次性密码 (HOTP) 机制。对于其他 OTP 凭证,请访问 ISAM for Mobile 信息中心来了解配置细节。

使用您的移动电话下载并安装一个支持 TOTP 或 HOTP 的移动应用程序。对于本测试,我们使用了 Google Authenticator [下载 iOS 版本 | 下载 Android 版本]。

接下来,通过您的 ISAM 设备受保护应用程序界面,导航到 MGA 联接,获取您的测试用户的 HOTP 秘密共享密钥。

https://bank.test/mga/sps/mga/user/mgmt/html/otp/otp.html

在提示时执行身份验证,使用您的移动电话采集 HOTP 条形码。请注意,这里显示了两个条形码,所以请确保使用标为 HOTP 的条形码。HOTP 是一个基于计数器的软件标记,在虚拟化的测试环境中很有用,因为不需要时钟同步。

图 24. 使用 Google Authenticator 扫描 HOTP QR 代码
使用 Google Authenticator 扫描 HOTP QR 代码
使用 Google Authenticator 扫描 HOTP QR 代码

基于上下文的授权策略定义

在这一节中,我们将介绍设置静默设备注册和将使用 HMAC 一次性密码验证的进阶身份验证的步骤。

首先,打开 ISAM for Mobile 管理逻辑管理接口。

接下来,修改风险概况以用于计算风险分数。对于本场景,我们将使用 Browser 概况:

  1. 导航到 Secure Mobile Settings > Risk Profiles
图 25. 配置活动风险概况
配置活动风险概况
配置活动风险概况
  1. 单击 Browser 概况并单击 Set Active
图 26. 将浏览器概况设置为 Active
将浏览器概况设置为 Active
将浏览器概况设置为 Active
  1. 在将浏览器概括设置为 Active 后,将会出现一个部署更改的提示。现在开始部署更改。
图 27. 部署更改
部署更改
部署更改

备注:这需要花费一段时间,因为此更改需要重新启动运行时。

下一步是导航到 Secure Mobile Settings > Access Control

在完成此操作之后,单击 Policy 表上的 + 图标来创建一条新策略。

图 28. 创建一个新策略
创建一个新策略
创建一个新策略

现在创建一条触发 HOTP 和设备注册的策略:

  1. 为该策略提供一个名称(比如 Silent Device Register with HOTP)和一段描述。
图 29. 输入策略名称和描述
输入策略名称和描述
输入策略名称和描述
  1. 单击 Add Rule 并创建策略的第一部分,类似于下图。
图 30. 策略创建,第 1 部分
策略创建,第 1 部分
策略创建,第 1 部分

在规则的第一部分中,我们定义一条策略,用它来处理已使用用户名和密码执行身份验证、但之前未使用此浏览器访问过该站点的用户。这被标识为较低的身份验证级别(1 级),他们拥有一个大于或等于 55 的 riskScore。因为我们配置了基于浏览器的风险概况,所以这个 riskScore 是基于浏览器指纹来计算的。执行此访问时,我们使用 HOTP 身份验证功能将它们重定向到 HOTP 流程。

单击 OK 完成规则的第一部分。

  1. 单击 Add Rule 并创建策略的第二部分,类似于下图。
图 31. 策略创建,第 2 部分
策略创建,第 2 部分
策略创建,第 2 部分

在规则的第二部分中,我们定义一条策略来处理以下用户:已使用用户名和密码执行身份验证,拥有一个未注册的浏览器且已完成其 OTP 流的用户。这标识为它们的 authenticationTypes,它没有成员 urn:ibm:security:authentication:asf:hotp,而且它们有一个仍然很高 (>55) 的 riskScore。执行此访问时,我们允许通过静默设备注册来实现访问。

单击 OK 完成规则的第二部分。

  1. 单击 Add Rule 并创建策略的第三部分,类似于下图。
图 32. 策略创建,第 3 部分
策略创建,第 3 部分
策略创建,第 3 部分

在规则的第三部分中,我们定义了一条策略,用它来处理已使用用户名和密码执行验证且拥有一个已注册的浏览器的用户。这使用低于 55 的较低 riskScore 来标识。执行此访问时,我们直接允许访问。

单击 OK 完成规则的第三部分。

  1. 单击 Save 保存该策略。

完整的策略应该类似于下面的屏幕截图:

图 33. 完整的策略
完整的策略
完整的策略

下一步是创建一个新资源并附加新策略:

  1. 单击 Resources,然后单击 + 图标来添加一个可用的资源。
图 34. 创建一个新的资源点
创建一个新的资源点
创建一个新的资源点
  1. 定义一个映射到虚拟主机上的增强 EAI 应用程序的资源。
图 35. 定义进阶资源点
定义进阶资源点
定义进阶资源点
  1. 选择进阶资源后,单击 Attach 来附加 Silent Device Register with HOTP 策略。选择该策略并单击 OK
图 36. 附加 Silent Device Register with HOTP 策略,第 1 部分
附加 Silent Device Register with HOTP 策略,第 1 部分
附加 Silent Device Register with HOTP 策略,第 1 部分
图 37. 附加 Silent Device Register with HOTP 策略,第 2 部分
附加 Silent Device Register with HOTP 策略,第 2 部分
附加 Silent Device Register with HOTP 策略,第 2 部分
  1. 单击 Publish 以部署该策略。
图 38. 发布策略
发布策略
发布策略

建立此策略,在配置 ACL 和 POP 后,该站点现在应受到了真正的双因素身份验证的保护。下图描述了这些流程。

图 39. 保护 /bank 网站的 CBA 双因素身份验证
保护 /bank 网站的 CBA 双因素身份验证
保护 /bank 网站的 CBA 双因素身份验证

管理注册的设备

注册的设备可由最终用户和系统管理员管理。

Web/REST 接口

在通过 WebSEAL 执行验证后,用户可以导航到下面这个 URL 来查看他注册的设备。

http://bank.test/mga/sps/mga/user/mgmt/html/device/device_selection.html
图 40. 设备列表
设备列表
设备列表

此页面的外观和功能可通过 ISAM for Mobile 模板页面修改。此页面上的数据使用来自 REST 接口的 JavaScript 来填充。

通过这种方式,演示中包含的示例银行网站可列出注册的设备。

图 41. 集成到 Your Bank 站点中的设备列表
集成到 Your Bank 站点中的设备列表
集成到 Your Bank 站点中的设备列表

管理接口

管理员可通过 ISAM for Mobile LMI 管理用户注册的设备。

  1. 导航到 Secure Mobile Settings > Devices
图 42. 用户注册的设备的管理
用户注册的设备的管理
用户注册的设备的管理
  1. 搜索用户;可以使用通配符 *。
图 43. 列出和管理用户的设备
列出和管理用户的设备
列出和管理用户的设备

结束语

我们介绍了如何通过集成和配置 IBM Security Access Manager for Web 和 IBM Security Access Manager for Mobile,在整个受 WebSEAL 保护的网站上安全地实现双因素身份验证。我们还演示了如何使用 ISAM for Mobile 的基于上下文的访问和一次性密码 (OTP) 接口,使您能够在整个组织的网站上应用智能的更强身份验证访问决策。这一节中的简短视频演示了完成的场景。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Java technology, 移动开发
ArticleID=1027793
ArticleTitle=IBM Security Access Manager:使用基于上下文的访问保护网站
publish-date=12212015