sso saml
本教程系列的第3部分重点介绍了使用IBM®WebSphere DataPower(以下称为DataPower)作为身份提供者,并通过签名的SAML断言来实现对Salesforce的服务提供者发起的单点登录(SSO)。 图1和图2代表了该解决方案的高层概述。 本教程没有概述第1部分中已经介绍过的Salesforce联合SSO的基础知识。
本节提供了在Force.com平台上实施SSO设置的步骤。 如果您已经实现了本系列任何教程中的示例,则可能无需再次重复相同的步骤。 但是,请确保已配置此示例所需的其他设置。
首先,从Salesforce开发人员站点创建一个用户帐户(Salesforce管理员)(如果您还没有的话)。 图3显示了Salesforce用户(开发人员版)的注册过程。
本教程系列说明的示例使用以下示例用户帐户进行SSO设置。 我们强烈建议您不要启用您的组织的Salesforce管理员SSO功能,因为身份提供者(DataPower的)应用程序的任何中断将阻止所有管理有关的活动。
用户ID: [email protected]
联盟ID: [email protected]
证书用于与外部身份提供者进行身份验证的SSO。 您需要服务提供商发起的SSO的Salesforce证书,才能在Force.com端对SAML身份验证请求进行签名,并在身份提供商侧验证相同的签名。 创建证书后,将其下载并保存到本地系统中。 本教程系列说明的示例使用以下自签名证书(标签: Salesforce SSO
),如图6和图7所示。
使用“ 我的域” (图8),可以定义自定义Salesforce域名。 此名称可以通过多种方式帮助您更好地管理组织的登录和身份验证。 有关域管理的详细信息,请参阅Salesforce文档 。 本教程系列说明的示例使用以下域名。 我们建议您为组织使用合适的域名。 示例域名的示例是https://dipak-sdfc-dev-ed.my.salesforce.com/
。
https://< dp-host:port >/sso/salesforce/saml/request
),以便Force.com可以将请求重定向到身份提供者的SSO登录网址。 本教程中使用的SAML声明未加密,并且在Subject语句的NameIdentifier( NameID )字段中包含登录用户的联盟ID 。 https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC
,如上面的图9和图10所示。 转到设置>域管理>我的域 ,编辑登录页面品牌,然后检查适当的身份验证服务 。 此登录页面品牌设置将确保在特定于域的登录页面上显示SSO登录选项,如图11和图12所示。
本节描述了开发必要的DataPower工件的步骤,这些工件主要由HTTPS前端处理程序和多协议网关组成,包括所需的处理策略规则和AAA策略。
temporary://
目录下载该证书(图14)。 如果您已经实现了本教程系列中的任何示例,则可以重复使用相同的加密配置。 确保配置了加密验证凭证,其中包括在步骤2中下载的Salesforce证书。 创建一个HTTPS前端处理程序以接受来自浏览器的SSO请求(图20)。
创建具有动态后端路由的多协议网关(图21)。 还要确保为请求和响应数据类型选择“ 非XML ”以处理HTTP表单数据和HTML数据。 下一部分,步骤9,描述了多协议网关策略的详细信息。
使用以下处理规则创建一个多协议网关策略。
方向:客户端到服务器。
/favicon.ico
var://service/mpgw/skip-backside
/AuthnRequest/@AssertionConsumerServiceURL
属性提取Salesforce登录URL。 https://dipak-sdfc-dev-ed.my.salesforce.com
)进行身份验证。 方向:客户端到服务器(图23)。
/sso/salesforce/saml/request
注意 :根据组织的标准使用适当的URL。 此操作将解码(base-64)SAML身份验证请求,并从/AuthnRequest/@AssertionConsumerServiceURL
属性提取Salesforce登录URL。 清单1显示了用于此转换的XSLT。
该操作将验证来自SAML身份验证请求的签名(图26)。
创建另一个AAA策略以认证用户并生成SAML断言XML(图28)。 有关AAA配置的详细信息,请参阅步骤11 。
使用本教程的下载部分中提供的XSLT( remove-specific-attribute.xsl )从< SubjectConfirmationData >元素中删除@NotBefore属性,因为Salesforce SAML断言验证器框架不允许该属性(图29)。
如图30所示,此操作对SAML声明XML进行数字签名(XPATH:/ /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
:SAML: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
)通过使用在步骤6中生成的DataPower加密密钥和证书。
此Transform Action生成一个HTML页面,该页面包括带有HTTP POST ActionHTML FORM,并包含以base-64编码的SAML断言XML和RelayState作为隐藏参数。 图31显示了成功认证后DataPower响应的示例HTML页面。 使用清单3中所示的XSLT( SSO-Generate-HTML-SP.xsl ),本教程的“ 下载”部分中也提供了XSLT。
Login to Salesforce
var://service/mpgw/skip-backside
此AAA策略从SAML身份验证请求中提取颁发者作为自定义令牌:
{XPATH: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='AuthnRequest']
/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:assertion' and local-name()='Issuer']/text()}
它针对清单4中所示的AAA策略信息文件进行身份验证。图34至36显示了AAA策略配置的详细信息。
1
local:///AAAInfoPolicy.xml
AAA Policy Info XML file
dipakpal
dipakpal-password
[email protected]
sdfc.user
sdfc-password
[email protected]
https://dipak-sdfc-dev-ed.my.salesforce.com
saml.auth.request.issuer
CN=Alice, O=DataPower, L=Cambridge, ST=MA, C=US
admin
127.0.0.1
admin
::1
admin
guest
guest
user
[email protected]
/sso/*
allow
[email protected]
/sso/*
allow
saml.auth.request.issuer
/sso/*
allow
guest
/sso/salesforce
deny
admin
/sso/salesforce
allow
3
0
sha1WithRSAEncryption
C=US, ST=MA, L=Cambridge, O=DataPower, CN=Alice
2002-11-23T01:15:33Z
2012-11-23T01:15:33Z
C=US, ST=MA, L=Cambridge, O=DataPower, CN=Alice
rsaEncryption
/sso/*
allow
https://datapowersso.ibm.com/
)( 步骤4 )。 https://dipak-sdfc-dev-ed.my.salesforce.com/005?retURL=%2Fui%2Fsetup%2FSetup%3Fsetupid%3DUsers
&setupid=ManageUsers)
https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC
)。 假设您熟悉DataPower的常见调试和故障排除方法,那么本教程将主要侧重于Salesforce。
您可以使用Google Chrome中的 开发人员工具捕获基于base-64编码的SAML身份验证请求,如图46和图47所示。尽管您可以从HTML页面源获取此数据,但是可以使用Google Chrome或Internet Explorer的 开发人员工具来分析HTTP事件,包括它们的请求/响应标头和数据结构。 您可以使用任何在线工具(例如http://www.string-functions.com/base64decode.aspx
)解码(base-64)此数据,以获取SAML身份验证请求XML。 清单5显示了一个示例SAML身份验证请求XML。 清单6显示了一个示例SAML身份验证响应。
https://dipak-sdfc-dev-ed.my.salesforce.com
jR2TgfzwxiM4Ie1sUOEFaOBZvyw=
gbd1PtArCK+nI0+n6QNTnQJr44sP30LwFXSimLPSnRUahQgfpkU91IWo/ShUiQo
oaV5MTG/LBn/MYpm8AOIOZsMI87yN7Br8ZLTpe6dNn..........................
MIIEcjCCA1qgAwIBAgIOAUdWZRxHAAAAABAQi70wDQYJKoZIhvcNAQEF
BQAwfjEWMBQGA1UEAwwNU2FsZXNmb3JjZV.............................
https://datapowersso.ibm.com/
UQfHUqRZdwnScs464iGeEIh3yRI=
nT3te6rSK1mU65Jv3aktug+5HIO5etw+j9gAqD7BddRQEBHkN8avKoPd61UiYzSz+u
xgIQ1QRq1NTu7jj9Cvs0zDkvGBWO34I.................................
MIIDtzCCAp+gAwIBAgIIAhBEWantyAswDQYJKoZIhvcNAQEFBQAwQjELMAk
GA1UEBhMCVVMxDDAKBgNVBAoTA0l......................................
CN=DATAPOWER-SDFC, OU=GBS, O=IBM, C=US
148693939596937227
https://datapowersso.ibm.com/
[email protected]
https://dipak-sdfc-dev-ed.my.salesforce.com
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified
https://datapowersso.ibm.com/
以管理员身份登录到Salesforce,并验证base-64编码的SAML声明,以检查SSO身份提供程序(DataPower)是否生成了Salesforce期望的正确SAML声明。 图49至52显示了使用Force.com SAML断言验证器框架进行的SAML断言验证。
在测试SSO登录名时,您可以从Salesforce管理员的单独登录名中监视Force.com上的登录历史记录。 图53显示了Force.com站点上的登录历史记录页面,该页面可以帮助您解决SSO登录失败。
Salesforce用户较少的组织可能不需要单一登录解决方案,因为他们可以继续使用Salesforce标准登录过程。 但是,拥有大量Salesforce用户的组织可以通过为其所有内部应用程序以及支持Federated的基于云的和外部应用程序(例如Force.com)实施基于DataPower的单点登录基础结构来利用此解决方案。使用外部SSO身份提供程序进行身份管理。
要继续本系列,请参阅以下教程:
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1505_pal3/1505_pal3.html
sso saml