saml断言
本教程系列的第4部分没有概述Salesforce联合单点登录(SSO)的基础。 本教程主要讨论如何使用由IBM®WebSphere DataPower(以下称为DataPower)作为身份提供者,由加密并签名的SAML声明提供支持,将服务提供者发起的SSO实施到Salesforce。 图1和图2展示了该解决方案的高层概述。
本节提供了为Force.com平台实施单点登录设置的步骤。 如果您已经实现了本系列中的任何教程所说明的示例,则可能无需再次重复相同的步骤。 但是,请确保已配置此示例所需的其他设置。
首先,如果您尚未创建一个用户帐户(Salesforce管理员),则在Salesforce开发人员站点上 。 图3显示了Salesforce用户(开发人员版)的注册过程。
通过输入在注册过程中获得的凭据登录到Salesforce,并创建另一个用户帐户。 确保输入如图4所示的联合身份验证ID,以启用该用户帐户的SSO登录。
用户ID: [email protected]
联盟ID: [email protected]
图5显示了一个Salesforce用户详细信息页面。 本教程系列说明的示例使用以下示例用户帐户进行SSO设置。 我们强烈建议您不要启用您的组织的Salesforce管理员SSO功能,因为身份提供者(DataPower的)应用程序的任何中断将阻止所有管理有关的活动。
证书用于与外部身份提供商进行经过身份验证的单点登录。 您需要服务提供商发起的SSO的Salesforce证书,才能在Force.com端对SAML身份验证请求进行签名,并在身份提供商侧验证相同的签名。 在此示例中,身份提供者还使用Salesforce证书对SAML断言响应进行加密。 创建证书后,将其下载并保存到本地系统中。 本教程系列说明的示例使用以下自签名证书(标签: Salesforce SSO ),如图6和图7所示。
使用“ 我的域” (图8),可以定义自定义Salesforce域名。 此名称可以通过多种方式帮助您更好地管理组织的登录和身份验证。 有关域管理的详细信息,请参阅Salesforce文档。 本教程系列说明的示例使用以下域名。 我们建议您为组织使用合适的域名。 示例域名的示例是https://dipak-sdfc-dev-ed.my.salesforce.com/
。
https:///sso/salesforce/saml/request
),以便Force.com可以将请求重定向到身份提供者的SSO登录网址。 本教程中使用的SAML声明已加密,并且在Subject语句的NameIdentifier( NameID )字段中包含登录用户的联盟ID 。 https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb
。 转到“ 设置”>“域管理”>“我的域” ,编辑“ 登录页面品牌” ,然后检查适当的身份验证服务 。 此登录页面品牌设置在域特定的登录页面上显示SSO登录选项,如图11和图12所示。
本部分描述了开发必要的DataPower工件的步骤,这些工件主要由HTTPS前端处理程序和多协议网关组成,包括所需的处理策略和AAA策略。
temporary://
目录下载该证书(图14)。 如果您已经实现了本教程系列中的任何示例,则可以重复使用相同的加密配置。 确保配置了加密验证凭证,其中包括在步骤2中下载的Salesforce证书。 创建一个HTTPS前端处理程序(图20)以接受来自浏览器的SSO请求。
创建具有动态后端路由的多协议网关(图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身份验证请求的签名。
创建AAA策略以对SAML身份验证请求颁发者进行身份验证。 有关AAA配置的详细信息,请参阅步骤10 。
创建另一个AAA策略以认证用户并生成SAML断言XML。 有关AAA配置的详细信息,请参阅步骤11 。
如清单2所示,使用提供的XSLT( remove-specific-attribute.xsl )从< SubjectConfirmationData >元素中删除@NotBefore属性,因为Salesforce SAML断言验证器框架不允许该属性。
此操作通过使用Salesforce证书对SAML声明进行加密。 创建一个指定以下XPATH的Document Crypto Map(清单3),如图31所示。
/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and
local-name()='Response']/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:assertion' and
local-name()='Assertion']
此操作通过使用以下方式对加密的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']
)进行数字签名DataPower加密密钥和在步骤6中生成的证书。
此操作将生成一个HTML页面,该页面包括带有HTTP POST操作HTML FORM,并包含以base-64编码的SAML断言XML和RelayState作为隐藏参数。 图33显示了成功认证后DataPower响应的示例HTML页面。 使用清单4中所示的XSLT( SSO-Generate-HTML-SP.xsl ),该教程也在“ 下载”部分中提供。
Login to Salesforce
var://service/mpgw/skip-backside
此AAA策略从SAML身份验证请求中提取发行者作为自定义令牌,并针对清单5中所示的AAA Policy Info文件进行身份验证:
XPATH: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='AuthnRequest']
/*[namespace-ri()='urn:oasis:names:tc:SAML:2.0:assertion' and local-name()='Issuer']/text()
图36、37和38显示了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/
//datapowersso.ibm.com/)。 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=00DF0000000ghL&sc=0LEF0000000Kytb
)。 假设您熟悉DataPower的常见调试和故障排除方法,那么本教程将主要侧重于Salesforce。
您可以使用Google Chrome中的 Developer Tools捕获base-64编码的SAML身份验证请求,如图48和图49所示。尽管您可以从HTML页面源获取此数据,但使用Developer Tools或Internet Explorer可以帮助您分析HTTP事件,包括其请求/响应标头和数据结构。 您可以使用任何联机工具(例如, http://www.string-functions.com/base64decode.aspx
)对此数据进行解码(基于64),以获取SAML身份验证请求XML。 清单6显示了一个示例SAML身份验证请求XML。
https://dipak-sdfc-dev-ed.my.salesforce.com
vPFOzywPaMuL2RR5A6kn2yMn1b0=
SXKNfCiYk6lzqrJNaeBLp0bT3FhI/iUvGFr9u+ncqmTm+0UyXo0t3qqHbENk+pN
qXNIrwDFMP4NQJssHVfrEJt0k0XJ0Tr............................
MIIEcjCCA1qgAwIBAgIOAUdWZRxHAAAAABAQi70wDQYJKoZIhvcNAQEF
BQAwfjEWMBQGA1UEAwwN...............................
您可以使用Google Chrome中的Developer Tools捕获base64编码的SAML声明响应数据,如图50所示。清单7显示了一个示例SAML声明XML。
https://datapowersso.ibm.com/
W145ngU06DdGMAguqb6erN1WUcY=
PC/ivOJSUdzK+3ErExxcO7Ukd5eP3Yzf14o5b/wiEGEKs2Vqz7pfzxukMWJPWcFKbG
Br+il/kcGaqgzznAH50qWi7LtjR9YT.................................
MIIDtzCCAp+gAwIBAgIIAhBEWantyAswDQYJKoZIhvcNAQEFBQAwQjELMAk
GA1UEBhMCVVMxDDAKBgNVBAoTA0lCTTEMMAoGA1UECxMDR0JTMRcwFQYDVQQDEw5EQVRBUE9XRVItU0RGQzAeFw0
xNDA3MjEwMDA1NTNaFw0xNTA3MjEwM....................................
CN=DATAPOWER-SDFC, OU=GBS, O=IBM, C=US
148693939596937227
Salesforce-SSO-Cert
R+UanpDRYXazpVo4HgpUzK9/oZ2lzZvXM3gxvqhaoxE1zkuj1jU9
QKHScGbqcCc/loFM+0ga98oTx1TvRuA1...........................
+nnVWq3htwLPxTcHWMCUi0Y0J0AyGIyh2qJxYtm1WpEUJS/OmbrBfyW/jd
tQbl8s8zRQk1Ns8NZWLzbmqBRU/NeDCqNDtejWPs8BM9EDGr4JKVA/nEWwggnyXu1/C7De42Tg/RQS6Y9w3Emuju
QcsHLmCFuFeLRDnK5/rtJAvCA5J............................
以管理员身份登录到Salesforce,并验证base-64编码的SAML声明,以检查SSO身份提供程序(DataPower)是否生成了Salesforce期望的正确SAML声明。 图51至54显示了使用Force.com SAML断言验证器框架进行的SAML断言验证。
在测试SSO登录名时,您可以以Salesforce管理员的身份从单独的登录名监视Force.com上的登录历史记录。 图55显示了Force.com站点上的登录历史记录页面,该页面可以帮助您解决SSO登录失败。
Salesforce用户较少的组织可能不需要单一登录解决方案,因为他们可以继续使用Salesforce标准登录过程。 但是,拥有大量Salesforce用户的组织可以通过为其所有内部应用程序以及基于云的外部应用程序(例如Force.com)实施基于DataPower的单点登录基础结构来利用此解决方案,这些支持使用外部SSO身份提供商的联合身份管理。
本教程(第4部分)总结了有关使用WebSphere DataPower实现Salesforce联合单点登录的系列教程 。
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1505_pal4/1505_pal4.html
saml断言