sso saml
假设您已经阅读了本系列的第一篇文章 ,那么本教程(第2部分)将不会重述Salesforce联合单点登录(SSO)的基础知识。 本教程主要侧重于如何使用由身份验证提供者发起的SSO,使用IBM®WebSphere DataPower(以下称为DataPower)对Salesforce实施,该SSO由加密并签名的SAML断言提供支持。 图1和图2展示了该解决方案的高层概述。
本节提供了在Force.com平台中实施SSO设置的步骤。 如果您已经实现了本系列中的任何教程所说明的示例,则可能无需再次重复相同的步骤。 但是,请确保已配置此示例所需的其他设置。
用户ID: [email protected]
联盟ID: [email protected]
证书用于与外部身份提供者进行身份验证的SSO。 您需要此Salesforce证书来加密身份提供者端的SAML声明。 创建证书后,下载并将其保存到本地系统。 本教程系列说明的示例使用以下自签名证书(标签: Salesforce SSO ),如图6和图7所示。
使用“我的域”,您可以定义自定义Salesforce域名。 此域名可以通过多种方式帮助您更好地管理组织的登录和身份验证。 有关域管理的详细信息,请参阅Salesforce文档 。 本教程系列说明的示例使用以下域名。 我们建议您为组织使用合适的域名。 示例域名的示例是https://dipak-sdfc-dev-ed.my.salesforce.com/
。
https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb
: https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb
。 本部分显示如何开发必要的DataPower工件,该工件主要由HTTPS前端处理程序,包含所需处理策略规则的多协议网关和AAA策略组成。
temporary://
目录下载证书。 如果您已经实现了本教程系列的第1部分中所示的示例,则可以重复使用相同的加密配置。 确保配置加密证书并导入在步骤2中下载的Salesforce证书,这是加密SAML断言所必需的。 创建一个HTTPS前端处理程序(图18)以接受来自浏览器的SSO请求。
创建具有动态后端路由的多协议网关(图19)。 确保为请求和响应数据类型选择“ 非XML ”以处理HTTP表单数据和HTML数据。 下一步(步骤8)描述了多协议网关策略的详细信息。
方向:客户端到服务器。
/favicon.ico
var://service/mpgw/skip-backside
方向:客户端到服务器。
/sso/salesforce/login
注意:根据组织的标准使用适当的URL。 按照步骤9中所述创建AAA策略。
使用清单1中所示的教程的下载部分中提供的XSLT( remove-specific-attribute.xsl )从
元素中删除@NotBefore属性,因为Salesforce SAML断言验证器框架不允许该属性。
此操作通过使用Salesforce证书对SAML声明进行加密。 通过指定以下XPATH(清单2)来创建文档加密图,如图23和图24所示。
/*[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进行签名(图25)。 使用清单3中的以下XPATH。
/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
身份验证成功后,此Transform Action会生成一个HTML页面,该页面包括带有HTTP POST ActionHTML FORM,并包含以base-64编码的SAML断言XML作为隐藏参数。 图36显示了成功认证后DataPower响应的示例HTML页面。 使用清单4中所示的XSLT( SSO-Generate-HTML-Idp.xsl ),并且该教程在“ 下载”部分中也提供了该XSLT。 确保使用在步骤4中获得的适当的Salesforce登录URL(XSLT变量: sdfcLoginURL )更新XSLT。
Login to Salesforce
var://service/mpgw/skip-backside
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
在Web浏览器中输入您的身份提供者(DataPower)SSO登录URL(例如, https://
),如图35所示。成功认证后,DataPower会以以下方式回复一个SSO重定向(HTTP POST绑定)页面,如图36所示,该页面包括带有HTTP POST操作HTML FORM,并包含base-64编码的SAML断言XML作为隐藏参数。 它要求用户通过单击“ 登录到Salesforce”按钮来提交HTML页面,这会导致向Salesforce登录URL提交HTTP POST请求(例如, https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb
)。
SAML断言包含来自身份提供者的联合身份验证ID(例如[email protected]
)。 Salesforce使用SAML断言中针对DataPower证书的嵌入式签名来验证消息的完整性,该证书已在SSO设置过程中上载。 成功进行签名验证后,它将解密加密的断言并处理SAML断言语句,提取并验证联合身份验证ID,并在成功验证过程后重定向到登录页面。 图37显示了成功登录SSO后的示例Salesforce登录页面。
我们假设您熟悉常见的DataPower调试和故障排除技术,因此本教程将主要侧重于Salesforce。
您可以使用Google Chrome中的 Developer Tools捕获base64编码的SAML断言数据,如图38和图39所示。尽管您可以从HTML页面源获取此数据,但是使用Google Chrome或Internet Explorer中的 Developer Tools可以帮助您分析HTTP事件,包括其请求/响应标头和数据结构。 您可以使用任何在线工具(例如http://www.string-functions.com/base64decode.aspx
)解码(以64为基数)此数据,以获取SAML断言XML。 清单6显示了此示例生成的样本加密并签名的SAML断言XML。
https://datapowersso.ibm.com/
yC4KceSHBpKIEUicoDd53aflPME=
jG2bMMDWAwE8hiolqtqRihlZvR0dy/HgVgYE5fFge3nRmDNShw5EaSETLYpLiRJQeV
Xwbkdb1uO+NiUDvakT1LOx9M2VRVv............................
MIIDtzCCAp+gAwIBAgIIAhBEWantyAswDQYJKoZIhvcNAQEFBQAwQjELMAk
GA1UEBhMCVVMxDDAKBgNVBAoTA0lCTTEMMA.............................
CN=DATAPOWER-SDFC, OU=GBS, O=IBM, C=US
148693939596937227
Salesforce-SSO-Cert
ZkliWyMXhrCR+67rKLeEsF5YJqm0q0vDch3RfYgAaMQgW4tXWUZT
DjXzZusu3b6d7jGWb7R2MJV9WDszbhQqNz4uIWN............................
dpzato9nnC3SGhdckfu6eG3PdN+PwcUNWdmiNVduGhktoeVbSeIVUICw9H
N5KSm8YsCdsSLf+HhVa6dRBdR5NgJKV26ZFh57V58jc0RT34lVNOLKF2JqT72KUdxWpBt0NSzEq4bZA3tu/ho+4o
VOCK/IFGk0zjJ/FHa2gA9v1ocWpU7UOpGsZsr9............................
以管理员身份登录到Salesforce,并验证base-64编码的SAML声明,以检查SSO身份提供程序(DataPower)是否生成了Salesforce期望的正确SAML声明。 图40至43显示了使用Force.com SAML断言验证器框架进行的SAML断言验证。
在测试SSO登录时,您可以从Salesforce管理员的单独登录中查看Force.com上的登录历史记录。 图44显示了Force.com网站上的登录历史记录页面,该页面可以帮助您解决SSO登录失败。
Salesforce用户较少的组织可能不需要此单点登录解决方案,因为他们可以继续使用标准的Salesforce登录过程。 但是,拥有大量Salesforce用户的组织可以通过为其所有内部应用程序以及基于云和外部应用程序(Force.com)实施基于DataPower的SSO基础结构来利用此解决方案,该应用程序使用外部支持联邦身份管理SSO身份提供者。
要继续本系列,请参阅以下教程:
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1505_pal2/1505_pal2.html
sso saml