如何使用weblogic配置单点登陆.docx
《如何使用weblogic配置单点登陆.docx》由会员分享,可在线阅读,更多相关《如何使用weblogic配置单点登陆.docx(24页珍藏版)》请在冰点文库上搜索。
如何使用weblogic配置单点登陆
使用WebLogicServer9.2中的SAML配置单点登录
BEAWebLogicServer9.2为安全性断言标记语言(SecurityAssertionMarkupLanguage,SAML)提供了开包即用支持,可根据安全需要通过少量编码甚至不编码便可创建单点登录(SSO)解决方案。
借助WebLogicServer9.2,可在运行于可靠域内的多个在线应用程序之间添加单点登录。
SAML标准定义了可靠服务器之间安全信息交换的框架。
安全框架的首要功能在于提供了保障应用程序安全的配置工具和API。
本指南介绍了在运行于两个不同WebLogic域的两个简单的JavaEEWeb应用程序之间配置单点登录功能的步骤。
单点登录的SAML配置仅需要使用WebLogicServer9.2AdministrationConsole,而无需编写程序。
本指南还简要介绍了在单点登录过程中WebLogic容器、安全提供程序以及安全框架之间的基本交互。
简介
SAML标准定义了可靠服务器之间安全信息交换的框架。
要了解更多背景信息,请参阅BethLinker编写的SAML简介(中文版,Dev2Dev,2006)。
本指南讲述了如何在两个Web应用程序之间设置SAML授权,并提供了这些应用程序的源代码。
本指南描述了涉及两个Web应用程序的简单示例;appA部署在源(本地)站点,而appB部署在目标(远程)站点。
您将学习到如何使用WebLogicServer9.2AdministrationConsole来配置这些应用程序并参与使用SAML实现SSO的过程。
源站点提供身份验证服务,并且当目标站点请求时,可使用SAMLInter-siteTransferService(ITS)安全地传递身份验证详细信息。
源站点的服务器包含ITSservlet,这个可寻址的组件提供了SAML处理功能,例如凭证生成及将用户重定向到目标站点的能力。
图1显示了SSO过程中源站点和目标站点之间的基本交互。
图1.使用SAML的单点登录过程中源站点和目标站点之间的交互
完整的处理流程如下:
1.通过提供用户凭据,用户的浏览器就可以访问应用程序appA(源站点),该程序位于名为domainA的WebLogicServer域。
2.应用程序appA将用户凭据传递到身份验证服务提供者。
3.如果身份验证成功,则建立已通过身份验证的会话;同时显示appA欢迎页面。
4.用户单击该欢迎页面上的链接,就可以访问应用程序appB(目标站点)的安全Web页面。
应用程序appB位于另一个名为domainB的WebLogicServer域。
这将触发对Inter-SiteTransferService(ITS)servlet的调用。
5.ITSservlet通过调用SAMLCredentialMapper请求调用断言。
SAMLCredentialMapper返回该断言。
同时也返回目标站点应用程序Web页面(一个安全的appBWeb页面)的URL;如果源站点配置为使用POST配置文件,则SAMLCredentialMapper还返回相应POST表单的路径。
6.SAMLITSservlet产生包含生成断言的SAML响应;并对其进行签名、Base-64编码、嵌入HTML表单,然后将该表单返回到用户的浏览器。
7.用户的浏览器将该窗体以POST格式发送到目标站点的AssertionConsumerService(ACS)。
8.验证该断言。
9.若断言成功,用户将被重定向到目标,即appB应用程序的安全Web页面。
10.用户登录到目标站点appB应用程序,无需在appB处重新验证身份。
以上所述的单点登录过程不需要开发人员进行编码(当然,为应用程序appA和appB编码除外),另外通过使用AdministrationConsole即可轻松配置单点登录。
使用WebLogicAdministrativeConsole进行SAML配置
在开始SAML配置之前,前几个步骤将创建并设置示例应用程序appA和appB的服务器环境。
步骤一:
创建SAML源站点域和目标站点域及应用程序服务器
本指南中的示例应用程序位于本地主机上的两个不同的域;因此,第一个步骤是创建运行于特定端口的域和服务器,如表1所示。
主机
应用服务器
应用程序名称
端口
SSL端口
SAML源站点域:
domainA
localhost
AdminServer
appA
7001
7002
SAML目标站点域D:
domainB
localhost
AdminServer
appB
7003
7004
表1.示例应用程序域及应用服务器
使用DomainConfigurationWizard创建表1中所示的域;并使用WebLogicServer9.2AdministrationConsole更新相应的侦听端口。
步骤二:
创建用户
为了简便起见,本指南使用各域中的默认安全域,并以同样的默认域名进行命名,即myrealm。
在每个域的myrealm域中分别创建一个用户ssouser。
此外,也可在集中化的外部LDAP存储中创建该用户,并将这两个域配置为使用这个共同的存储进行身份验证。
此处创建的用户ssouser将验证domainA中的应用程序appA;然后,使用SSO便可直接访问位于domainB中的应用程序appB。
域
用户名/密码
SAML源站点域:
domainA
myrealm
ssouser/demosaml
SAML目标站点域:
domainB
myrealm
ssouser/demosaml
表2.参与单点登录的用户
如表2所示,在这两个域中名为myrealm的安全域内创建用户ssouser。
步骤三:
创建并部署JavaEEWeb应用程序appA和appB
appA的示例应用程序源代码可点击此处进行下载。
将现有的Web应用程序导入到WebLogicWorkShopStudio或者诸如Eclipse的其他任何IDE。
应用程序appA配置为使用基于FORM的身份验证。
该应用程序部署在SAML源站点域(即domainA)。
admin文件夹下名为auth.jsp的appAJSP页面要求已通过身份验证的用户拥有admin角色,才能进行访问。
在weblogic.xml中,admin角色映射到名为ssouser的主体。
图2显示了web.xml中的安全配置。
SamlSourceSiteApplication
SecurePages
Thesepagesareonlyaccessiblebyauthorizedusers.
/admin/*
GET
Thesearetheroleswhohaveaccess.
admin
Thisishowtheuserdatamustbetransmitted.
NONE
FORM
myrealm
/login.jsp
/fail_login.htm
Thesearetheroleswhohaveaccess
admin
例1.应用程序appA-web.xml代码片断
当用户试图访问/admin/auth.jsp页面时,将显示配置好的login.jsp登录页面,要求用户提供身份验证凭据。
在提交详细资料后,该容器将对用户ssouser进行身份验证。
如果验证成功,将显示auth.jsp页面。
在进一步访问auth.jsp页面之前,我们将在目标站点域(即domainB)创建应用程序appB。
appB示例应用程序源代码可在Downloadsection(下载专区)进行下载。
应用程序appB配置为使用CLIENT-CERT,因此它将使用身份断言来进行验证。
该应用程序应部署在SAML目标站点域(即domainB)。
位于/admin文件夹中名为services.jsp的appBJSP页面要求已成功通过身份验证的用户拥有admin角色,才能进行访问。
在weblogic.xml中,admin角色映射到名为ssouser的主体。
图3显示了appB的web.xml配置的摘录:
SAMLDestinationSiteApplication
--...-->
SecurePages
Thesepagesareonlyaccessiblebyauthorizedusers.
/admin/*
GET
Thesearetheroleswhohaveaccess.
admin
Thisishowtheuserdatamustbetransmitted.
NONE
CLIENT-CERT
myrealm
Thesearetheroleswhohaveaccess.
admin
例2.应用程序appB-web.xml代码片断
编译并构建每个应用程序的WAR文件(如appA.war、appB.war)。
要进行部署,将appA.war和appB.war文件分别复制到domainA和domainB的autodeploy文件夹中。
重新启动应用服务器,并测试不具备SSO功能的应用程序的行为。
SAML配置完成之后,在appA(SAML源站点)通过身份验证的用户ssouser就可以直接访问appB(SAML目标站点)的services.jsp页面,无需再次提供凭据。
步骤四:
生成并注册SSL证书
为保障SAML源站点和目标站点之间的通信安全,应该将源站点和目标站点之间的通信进行加密。
此外,应该使用证书来验证对方在SAML交互过程中的身份。
在这个步骤中,我们将创建并注册在源站点和目标站点之间通信所使用的证书。
使用keytool实用工具(JDK的一部分)生成密匙。
默认情况下,已为domainA和domainB配置了名为DemoIdentity.jks的密钥库。
以下将介绍如何生成私有密匙和证书,以进行测试:
∙打开DOS命令窗口,将目录更改为WEBLOGIC_HOME/server/lib。
∙运行keytool命令来生成密匙,见下图。
keytool-genkey-keypasstestkeypass-keystoreDemoIdentity.jks-storepassDemoIdentityKeyStorePassPhrase-keyalgrsa-aliastestalias
图2.生成SSL测试证书的截屏
如图2所示,使用-export选项运行keytool命令来生成名为testalias.der的密匙文件:
keytool-export-keypasstestkeypass-keystoreDemoIdentity.jks-storepassDemoIdentityKeyStorePassPhrase-aliastestalias-filetestalias.der
SAML配置
首先进行SAML源站点配置。
步骤五:
配置SAML源站点domainA
在这个步骤中,我们将创建并配置一个SAMLCredentialMapperV2实例。
作为SAML安全断言的生成程序,SAMLCredentialMapper可以使domainA成为使用SAML实现单点登录的源站点。
SAML安全断言是一种信息包,包含SAML授权(指的是断言方)提供的一个或多个声明。
声明有如下几种类型:
身份验证声明、特性声明以及授权决策声明等。
先配置一个SAMLCredentialMapperV2实例(注:
BEAWebLogicServer9.2不支持SAMLCredentialMapperV1):
∙登录到domainA上的WebLogicServerAdministrationConsole
(http:
//localhost:
7001/console)。
∙在管理控制台中,在DomainStructure窗口中选择SecurityRealms。
∙选择一个安全域;默认使用的域为myrealm。
∙选择Providers选项卡,然后选择CredentialMappings选项卡。
∙如果SAMLCredentialMapper不存在,那么创建一个新的SAMLCredentialMapper,如图3所示。
图3.创建新的SAML凭据映射提供程序
∙选择SAMLCredentialMapper,然后选择ProviderSpecific。
∙选择ChangeCenter窗口中的LockandEdit;这允许您编辑SAMLCredentialMapper设置。
∙编辑发行方URI
∙输入SigningKeyAlias(testalias)和SigningKeyPassPhrase(testkeypass)。
这些值在生成密钥库时使用过。
∙为LiveandCredCacheMinViableTTL设置默认时间及其他值,如图4所示。
图4.SAML凭据映射提供程序设置
∙单击Save。
∙单击ChangeCenter窗口中的ActivateChanges。
此处的SAML凭据映射提供程序配置为使domainA以源站点身份进行运作(SAML安全断言的源);还配置为使用在步骤四中生成的密匙库。
步骤六:
配置信任方属性
这一步将创建并配置信任方。
将WebLogicServer配置为SAML的安全断言源时,您需要注册可能要求接受SAML断言的信任方。
对于SAML信任方,您可以指定以下几项:
所使用的SAML配置文件、信任方的详细信息及信任方的断言中所期望的特性。
信任方决定其是否信任断言方所提供的断言。
SAML定义了一些机制,能够使信任方信任向其提供的断言。
∙单击Management选项卡中的RelyingParties。
∙单击RelyingParties表中的New。
∙在Profile下拉菜单中,选择Browser/POST。
在Description字段中,输入名称demoSAML来识别信任方,如图5所示。
图5.信任方的配置
∙设置信任方的各种值,如表3所示。
参数
值
启用
选中该复选框(真值)
目标URL
http:
//localhost:
7003/appB/admin/services.jsp
断言使用者URL
https:
//localhost:
7004/samlacs/acs
断言使用者参数
APID=ap_00001
要求签名
选中该复选框(真值)
包括Keyinfo
选中该复选框(真值)
表3.信任方(rp_00001)的各种值
尽管信任方可选择信任向其提供的关于用户ssouser的断言,但domainB中的目标站点应用程序appB的本地访问策略才能决定该主题(ssouser)是否可以访问本地资源。
步骤七:
配置源站点SAML
在这个步骤中,我们将对运行应用程序appA的服务器实例配置各种联邦服务源站点设置。
这些设置将使运行在domainA上的服务器实例成为SAML源站点,定义源站点URI及服务URI,添加证书以对断言进行签名并配置检索断言的SSL。
∙在管理控制台中的DomainStructure窗口中选择Environment,然后选择Servers。
∙选择AdminServer,然后在SettingsforAdminServer中,单击SAML1.1SourceSite选项卡上的FederationServices,如图6所示。
图6.源站点的配置
∙如表4所示设置源站点的各种值。
参数
值
启用源站点
选中该复选框(真值)
源站点URL
http:
//localhost:
7001/appA
SigningKeyAlias
testalias
SigningKeyPassphrase
testkeypass
IntersiteTransferURIS
/samlits_cc/its(保留其他值)
ITS要求SSL
选中该复选框(真值)
断言检索URI
/samlars/ars
ARS要求SSL
选中该复选框(真值)
表4.源站点的各种值
步骤八:
配置SAML目标站点domainB
下面将开始配置SAML目标站点。
在这个步骤中,将首先创建并配置一个SAMLIdentityAssertionProviderV2实例。
作为SAML安全断言的使用者,SAMLIdentityAssertion提供者使得WebLogicServer成为使用SAML实现单点登录的目标站点。
SAMLIdentityAssertion提供者通过核对签名并根据提供者维护的证书登记处验证该证书是否可信,从而对SAML断言进行验证。
首先要做的是创建一个SAMLIdentityAssertionProviderV2实例,并将步骤四中所生成的证书导入到提供者的证书登记处。
导入证书:
∙将前面生成的密匙文件(testalias.der)复制到D:
\bea\weblogic92\server\lib目录下。
∙登录到domainB的WebLogicServerAdministrationConsole。
∙选择安全域myrealm。
∙选择Providers选项卡,然后选择Authentication选项卡。
∙若SAMLIdentityAsserter不存在,则先创建一个新的SAMLIdentityAsserter,如图7所示。
身份断言程序允许WebLogicServer通过验证用户来建立信任。
图7.创建新的身份断言程序
∙单击SAMLIdentityAsserter中的Management选项卡,然后单击Certificates。
∙单击Certificates对话框中的New,如图8所示。
图8.创建新的身份断言程序证书
∙在Alias字段中输入该证书的名称。
推荐做法是使用创建证书时使用的名称。
∙在CertificateFileName字段中输入证书的路径。
∙单击Finish。
若已成功,则会显示“Thecertificatehasbeensuccessfullyregistered.”消息。
步骤九:
配置断言方属性
在该步骤中,将创建并配置断言方。
当用户将WebLogicServer配置为SML安全断言的使用者时,您需要注册将提供SAML断言的断言方。
对于SAML断言方,可以指定以下几项:
所使用SAML配置文件、断言方的详细信息以及期望断言方提供的断言中的特性。
断言方断言用户已通过身份验证并对其授予相关特性。
例如,用户ssouser通过密码机制通过了该域的身份验证。
断言方亦称为SAML权威。
∙单击Management选项卡上的AssertingParties。
∙单击AssertingParties表中的New。
∙在Profile下拉菜单中,选择Browser/POST。
在Description字段中输入名称demoSAML来识别断言方,如图9所示。
图9.创建新的断言方
∙