肖菁 (jing.xiao@chinacreator.com) SSO的实现涉及到企业应用的开发和服务器的配置两部分,接下来,作者将一步一步的演示如何实现WebSphere服务器之间的SSO,希望能够对大家有所帮助。本文的上篇 SSO实现技术准备 对WebSphere环境下的SSO(Single sign-on:单点登录、全网漫游)的相关机制和概念做了详细的介绍。 在本演示环境中,采用了两台配置有WebSphere服务器的主机,他们属于同一个DNS域,具体的配置参数如下: DNS域--chinacreator.com
我们设计一个web应用,它包含一个securityfold文件,我们定义一个安全角色admin_role,只允许是admin_role角色的用户访问securityfold文件夹下面的文件,下面是详细操作步骤: 1. 打开WSAD(我用的是WSAD4英文版),建立一个新的web应用: 2. 分别建立三个。html文件,一个是login.html,一个是error.html,还一个是logout.html A. login.html login.html文件用作网络用户身份认证的登录界面,根据J2EE的规定,这个登录页面有一些具体的规定:
B. error.html error.html用于在网络用户身份认证失败的时候给客户提示错误信息,你可以随意定制。 C. logout.html 允许用户从系统中注销,这个功能不是J2EE中的标准实现,而是WebSphere中给出的一个辅助功能,它不需要在web应用描述文件(web.xml)中作任何定义,而是一个简单的.html文件。
[注]这三个文件的源代码大家可以在示例文件中找到。 3. 继续其他操作,完成您的web应用,在作者的例子中,为了说明方便,在根目录下建立了securityfold子目录,然后在securityfold下面建立了helloworld.jsp,整个web应用的文件结构如下图:
4. 给这个web应用设置为需要安全控制,这需要修改web.xml的属性。 在WSAD中打开web.xml文件,切换到pages标签页,修改其中的属性如下: realm name - 安全域名字 authortication method-认证方式 Login page - 用户没有认证就访问受保护的资源时弹出的登录页面 Error page -- 网络用户使用错误信息登录系统时的错误提示页面
5. 给web应用增加角色 在WSAD中打开web.xml文件,切换到security标签页。 A. 增加一个安全角色admin_role
D. 给这个安全约束增加安全角色可以选择将自己定义的安全角色加入到这个安全约束中来,就是说只有属于指定的安全角色的用户才可以访问这个安全约束中规定的资源。
6. 将整个应用打包成.EAR文件 这样,我们的企业应用的开发就完成了。 为了配置WebSphere的安全配置和测试的需要,我们需要用到LDAP数据库,在我的LDAP数据库中,我建立了2个根,分别是cn=root和cn=sso,其中cn=root下面建立一个admin用户用于启动管理控制台的安全认证,cn=sso目录下面建立了一个administrators用户和我们的应用中安全角色进行绑定。 由于WebSphere服务器默认不支持SSO,所以我们需要自己配置服务器的特性,是服务器支持SSO,下面将演示SSO配置的详细过程。 1. 确保您已经安装了WebSphere服务器4.0版本,最好是高级版(Advanced Edition) 2. 下载WebSphere的补丁,将WebSphere升级到4.0.6版本 3. 启动服务器,启动管理控制台 4. 单击管理控制台->安全性中心,在常规标签页中选中"启用SSO"前面的复选框,其他设置可以根据自己需要修改。
5. 切换到认证标签页 i. 选中轻量级第三方认证(LPTA),表示我们使用LPTA安全认证机制,因为SSO不支持基于本地操作系统的用户认证机制,所以我们只能选择这个选项。 ii. 选中"启用单次注册"左边的复选框,在"域"后面的文本框中输入你要用的到dns域,比如我的机器的名字是b.chinacreator.com,那么这里应该输入chinacreator.com。 iii. 选择启用web信任关联。 iv. 如果是配置所有webpshere服务器中的第一台服务器,那么我们需要单击"生成密钥",在弹出的提示框中输入用户名和密码。 v. 选中LDAP左边的单选框,表示使用LDAP数据库作为用户注册库,如果是WebSphere和WebSphere之间的SSO,我们还可以选择自己实现注册库,如果需要实现WebSphere和Domino之间的SSO,则只能选择LDAP数据库作为用户注册库,因为Domino不支持用户自己实现的注册库。 vi. 安全性服务器标识是指管理域的管理用户名 vii. 安全性服务器密码是和上面的用户名对应的密码 viii. 主机是LDAP的机器名,我们这里是b.chinacreator.com [注] 最好不要使用主机的ip地址。 ix. 端口是LDAP服务器的端口,默认是389 x. 基本专有名称是指我们可以绑定用户的根目录,在我们的演示实例中,所有的网络用户信息都存放在cn=sso根目录下,所以这里输入cn=sso. xi. 绑定专有名称和绑定密码是指可以搜索LDAP的用户信息的用户的DN信息和密码,一般可以不填写,因为LDAP数据库默认所有的用户都拥有这个权限,除非LDAP中增加了另外的限制条件。 xii. 单击"确定"按钮结束WebSphere服务器安全性的配置 xiii. 重起服务器使安全定义生效
现在我们需要将我们开发的需要安全特性的web应用安装到webspher服务器上。 1. 打开a.chinacreator.com机器上的管理控制台 2. 选择企业应用程序,单击右键,选择安装企业应用程序 3. 单击浏览,选择我们前面已经导出的securitysso.ear,单击下一步 4. 单击选择,选择所有已认证用户 5. 一直单击下一步直到应用被安装到服务器上 6. 启动我们刚才安装的企业应用 1. 验证web应用的安全特性是否发挥作用 2. 验证SSO 如果没有出现理想中的情况,那么请参考IBM WebSphere信息中心中安全部分的5.8.4章节"讨嫌的SSO配置问题"。 在本文中,作者用一个实例演示了如何实现两台处于同一个DNS域下面的WebSphere服务器之间的SSO,并且详细地解释了实现过程中需要注意的关键点和特殊要求。 在配置过程中,作者碰到了一个问题还没有解决,就是映射用户的时候,不能选择LDAP数据库中存在的用户组(参见5.5节的第4步),作者将继续研究,争取能够解决,如果各位解决了这个问题,也烦请各位通知一下作者。整个演示实例在作者的测试环境中通过,如果读者SSO配置过程中碰到了什么困难或者疑问,可以和作者进行交流。 工具下载: 1. WebSphere4.0.6补丁下载地址: 1. sun 的Java ACC规范http://java.sun.com/j2ee/javaacc/ 2. sun 的 JAAS规范http://java.sun.com/products/jaas/ 3. opengroup 的安全实现部分http://www.opengroup.org/security/ 4. ibm 的《LDAP入门》教程 5. IBM WebSphere文档中心安全部分 http://www-3.ibm.com/software/webservers/appserv/doc/v40/ae/infocenter/was/pdf/nav_Securityguide.pdf 姓名: 肖菁联系方式: jing.xiao@chinacreator.com 简介: 本人目前是湖南省长沙铁道学院科创计算机系统集成有限公司软件中心软件工程师,主要研究J2EE编程技术和Web Service技术。 |