dev2dev 首页 > 资源中心 > 技术文章
WebLogic Server9.2中配置基于SAML的SSO详述
1. 概念
1.1 SAML术语
1.2 SAML架构
1.3 WebLogic Server 9.x概念对应
1.4 WebLogic SAML 框架
2. 实验用例描述 3. 搭建实验环境
3.1 实验环境准备
3.2 配置域
3.2.1 配置密钥库
3.2.2 部署web应用
3.2.3 添加测试用户与组...
4. 配置过程
4.1 配置源站
4.1.1 创建Credential Mapping
4.1.2 配置SAML 1.1 Source Site
4.1.3 配置Relying Parties
4.2 配置目标站
4.2.1 SAML Identity Assertion provider
4.2.2 配置SAML destination site
4.2.3 配置证书
4.2.4 配置Asserting Parties
关于什么是SAML,本文不做详细介绍,读者可以参考其它文章。本文主要是侧重WebLogic Server 9.X版本上实现基于SAML的SSO的原理。并且,通过一个实例,具体讲解配置过程。
概念
1.1 SAML术语
信任方:主要的信任方是服务提供者(Service Provider),其主要职责是提供受保护的资源服务,并且可以根据断言判断访问者可以访问哪些资源与服务。 断言方:也就是Identity Provider,用来提供身份验证服务,在实现统一认证时主要是用来认证用户身份信息,并且生成基于用户身份的断言。 主题:与身份信息相关的用户 断言:关于主题的一段陈述,SAML对于给定的主题定义了三类断言:认证、授权、属性。 凭证(Artifact):通过凭证可以查找到对应的断言。凭证长度为42字节,它包含一个类型代码,长度为20个字节的源标识,以及长度为20个字节的随机数。 ITS(Inter-site transfer):根据主题信息生成凭证。 ACS(Assertion Consumer Service):读取请求中的断言信息。 ARS(Assertion Retrieval Service):根据凭证得到断言服务。
1.2 SAML架构

说明:由Service Provider向Identity Provider发出SAML请求,Identity Provider通过ITS服务,根据主题通过ARS生成断言信息,然后Service Provider通过ACS根据此断言判断该用户是否有权访问受保护的资源。
1.3 WebLogic Server 9.x概念对应

在WebLogic Server上配置SAML时,在联邦服务(Federation Services)一栏中有两个概念:源站(Source Site)与目标站(Destination Site),那么这两个概念在实现基于SAML的统一认证时的作用是怎样的呢?
源站:主要是负责用户身认证与断言的处理。相当于Identity Provider。 目标站:主要负责提供受保护服务。相当于Service Provider。
在实现基于HTTP的统一认证时,通过两种方式传送断言信息:
- Identity Provider推方式
- Identity Provider直接将断言推给Service Provider
- ACS校验断言,如果成功将用户的请求重定向到目标URL
- Service Provider拉方式
- Service Provider通过凭证(Artifact)在Identity Provider上得到断言
- ACS与ARS打开一个通道,根据凭证得到断言,如果校验成功将用户的请求重定向到目标URL
这两种实现方式差别不大,下面我们将分别讲解以上两种方式:
Identity Provider推方式

第一步:用户向目标站发出服务请求。 第二步:不管请求发往哪个目标站,目标站都会通过浏览器转向将请求发往源站做用户认证工作,源站将通过ITS将通过用户的身份信息生成断言。 第三步:源站将生成一个HTML的FORM,其中包含了断言信息,然后重定向到浏览器。 第四步:然后浏览器自动提交该FORM到目标站,目标站根据断言进行模拟登录操作,然后得到服务结果。 第五步:目标站将生成的响应结果返回浏览器,完成统一认证过程。
Service Provider拉方式

第一步:用户向目标站发出服务请求。 第二步:不管请求发往哪个目标站,目标站都会通过浏览器转向将请求发往源站做用户认证工作,源站将通过ITS将通过用户的身份信息生成凭证(Artifact)。 第三步:源站将请求连同凭证重定向到浏览器,然后通过浏览器重定向到目标站。 第四步:目标站将请求转向ACS。 第五步:ACS与源站的ARS打开通道,根据刚才得到的凭证查询断言。 第六步:请求连同断言一起发往目标站,目标站通过断言认证用户,并且模拟用户登录,完成服务请求。 第七步:最后将服务的结果重定向到浏览器,完成统一认证过程。
1.4 WebLogic SAML框架
- WebLogic Server作为Identity Provider
需要在WebLogic安全框架中配置SAML Credential Mapping Provider,同时,还要在服务器的联邦服务中配置Source Site。

配置SAML Credential Mapping Provider
- WebLogic Server作为Service Provider
WebLogic安全框架中的认证模块配置SAML Identity Assertion Provider,同时,还要在服务器的联邦服务中配置Destination Site。

配置SAML Identity Assertion Provider
2. 实验用例描述

说明:在目标站上我们部署了应用benefits.war,此应用中, http://localhost:5001/benefits/store/welcome.html 是受保护资源,只有managers组的用户才可以进行访问。为模拟SSO过程,我们在源站上也部署了一个应用timeoff.war,我们在源站上以managers组中的用户steve身份登录,然后直接访问目标站上的受保护资源,由于使用了基于SAML的SSO技术,最终我们将看到,在访问目标站的受保护资源时,无需再次登录。
3. 搭建实验环境
3.1 实验环境准备
WebLogic Server 9.2 Windows XP Professional Dell D620:CPU 双核1.83GHz ,内存:2G
3.2 构建测试目录 WebLogic Server 9.2安装目录:d:\bea92 实验目录:d:\saml,此目录中包含三个子目录: d:\saml\domains 域存放目录 d:\saml\security 密钥库文件与证书存文件放目录 d:\saml\apps 测试用webapp存放目录
3.2 配置域
通过可视化向导在d:\saml\domains目录下创建两个WebLogic Server域domain1、domain2。
|
domain1 |
domain2 |
| IP地址 |
默认 |
默认 |
| 端口 |
7001 |
5001 |
| 管理员用户名 |
weblogic |
weblogic |
| 管理员密码 |
Weblogic |
weblogic |
3.2.1配置密钥库
3.2.1.1 实验文件说明 在d:\saml\security目录中存放了实验相关的密钥库与证书,具体创建过程本文将不做介绍。
dwkeystore.jks:用于存放证书与私钥 
密钥库密码:keystorepwd 密钥对别名:stevemarkdw 密钥对密码:stevedwpwd stevemarkdw.cer:证书文件 3.2.1.2 在WebLogic Server域中配置密钥库 分别在domain1与domain2上配置密钥库,以domain1为例: 
配置说明: Keystores:Custom Identity and Java Standard Trust Custom Identity Keystore:D:\saml\security\dwkeystore.jks Custom Identity Keystore:keystorepwd Confirm Custom Identity Keystore:keystorepwd
domain2配置过程与domain1相同,配置参数也相同。
3.2.2 部署web应用
在d:\saml\apps\目录中存放了测试用的web应用
- timeoff.war:部署在domain1
- benefits.war:部署在domain2
3.2.3 添加测试用户与组
分别在domain1与domain2上创建用户组managers,然后再分别创建用户steve,最后将用户steve添加到managers用户组。
|
| domain1
| domain2
|
| 创建用户组 |
managers |
managers |
| 创建用户 |
managers/steve (密码:password) |
managers/steve (密码:password) |
4.配置过程
4.1配置源站4.1.1创建Credential Mapping 点击:Security Realms->myrealm->Providers-> Credential Mapping

创建Credential Mapping Providers

名称:MySAMLCredMapProvider 类型:SAMLCredentialMapperV2(注意:是V2)
点击MySAMLCredMapProvider-> Provider Specific

配置说明: Issuer URL:http://www.bea.com/saml
Name Qualifier: bea.com Signing Key Alias: stevemarkdw Signing Key Pass Phrase: stevedwpwd Confirm Signing Key Pass Phrase: stevedwpwd 重新启动服务器
4.1.2配置SAML 1.1 Source Site
点击AdminServer-> Federation Services-> SAML 1.1 Source Site

配置说明: Source Site Enabled:选上 Source Site URL: http://localhost:7001/timeoff Signing Key Alias: stevemarkdw Signing Key Passphrase: stevedwpwd ITS Requires SSL:不选
重新启动
4.1.3配置Relying Parties 点击:Security Realms->myrealm->Providers-> MySAMLCredMapProvider->Management

创建 Relying Party,点击New

点击新创建的rp_00001 
Enabled:选中 Target URL:http://localhost:5001/benefits/store/welcome.html
Assertion Consumer URL:http://localhost:5001/samlacs/acs
Assertion Consumer Parameters:APID=ap_00001 Sign Assertions:选中 :不选
重新启动
4.2配置目标站4.2.1SAML Identity Assertion provider 点击:Security Realms->myrealm->Providers->Authentication 
点击New创建SAMLIdentityAssertV2 
配置说明 Name:MySAMLIdenAssertProvider Type:SAMLIdentityAsserterV2(注意:v2) 重新启动
4.2.2 配置SAML destination site
点击AdminServer->Federation Services->SAML 1.1 Destinatioin Site 
配置说明 Destination Site Enabled:选上 ACS Requires SSL:不选 SSL Client Identity Alias:stevemarkdw SSL Client Identity Pass Phrase:stevedwpwd Used Assertion Cache:APID=ap_00001
重新启动
4.2.3 配置证书 点击:Security Realms->myrealm->Providers-> Authentication-> MySAMLIdenAssertProvider->Management->Certificates 
点击New添加证书

配置说明: Alias:stevemarkdw Certificate File Name:D:\saml\security\stevemarkdw.cer
4.2.4 配置Asserting Parties 点击:Security Realms->myrealm->Providers-> Authentication-> MySAMLIdenAssertProvider->Management->Asserting Parties 
点击New创建Asserting Parties 
点击创建出的ap_00001 
配置说明: Enable:选中 Target URL: http://localhost:7001/timeoff
POST Signing Certificate Alias: stevemarkdw Source Site ITS URL: http://localhost:7001/timeoff
Issuer URI: http://www.bea.com/saml
Assertion Signing Certificate Alias: stevemarkdw
重新启动
5.测试 打开浏览器,输入如下地址: http://localhost:7001/timeoff

点击Close An Office

输入:用户名:steve,密码:password

点击:Access Benefits Applliation

大功告成!!
程序代码下载:Saml.zip
| 作者简介 |
 牛秀元 |
牛秀元是(dev2dev ID: Guru),BEA系统(中国)有限公司技术顾问,曾任Business Objests技术顾问,合力思软件公司技术顾问 |
作者其它文章
|