sso saml
随着越来越多的机构和组织在线提供服务和协作,员工需要访问内部部署和基于云的应用程序来进行日常工作。 这就要求实现单一登录(SSO)基础结构,使用户可以登录一次即可访问所有授权的内部和外部资源及应用程序。 具有大量Salesforce用户群的组织可以利用其现有的SSO基础结构将其实施到Force.com平台,该平台支持由外部SSO身份提供商提供的联合身份管理。 Force.com平台支持SSO的委派身份验证和联合身份验证。
本教程系列仅关注联合身份验证 ,它比委托身份验证具有多个优点,并且在IT行业中被广泛接受。 联合身份验证无法在Force.com平台上验证用户的实际密码。 相反,平台会在HTTP POST请求中接收安全性声明标记语言(SAML)声明。 SAML声明的有效期有限,包含唯一标识符,经过数字签名,并可以选择加密。 如果断言在其有效期内仍然有效,并且具有以前未使用过的标识符,并且具有来自可信身份提供者的有效签名,则将授予用户对所请求的资源或页面的访问权限。 使用IBM®WebSphere DataPower(以下称为DataPower)作为SSO身份提供程序,企业可以为所有内部应用程序和外部应用程序(例如Force.com)使用集中式管理界面来实现用户身份的单个注册表。支持联合单点登录。
本系列包括以下四个教程:
SAML提供了一种基于XML的安全解决方案,用于在身份提供商(例如DataPower)和服务提供商(例如Force.com)之间交换用户安全信息。 除了身份提供商启动的单点登录之外,SAML 2.0还支持服务提供商启动的单点登录。 这样,Force.com之类的服务提供商就可以查询身份提供商以进行身份验证。 SAML 2.0还添加了一个称为“单次注销”的有用功能,该功能定义了一种机制,可以快速,轻松地注销所有服务提供者。
SAML交易涉及三方:
SAML有两个重要的用例:
Force.com支持这两种用例。 但是,本教程(第1部分)的范围仅限于由身份提供者发起的SSO登录,该登录使用签名的SAML断言。
来自身份提供者的SAML断言响应包含标头信息,主题以及关于主题的断言声明,其形式为属性和条件。 本示例中使用的SAML声明包含来自身份提供者的联合ID,该ID在Force.com平台内是唯一的,并映射到Force.com用户,如图1和图2所示。
本节介绍了在Force.com平台上进行单点登录设置的分步指南。
用户ID: [email protected]
联盟ID: [email protected]
使用“我的域”,您可以定义自定义Salesforce域名(请参见图8)。 自定义域名可以通过多种方式帮助您更好地管理组织的登录和身份验证。 有关域管理的详细信息,请参阅Salesforce文档 。 本教程系列说明的示例使用以下域名。 我们建议您为组织使用合适的域名。 示例域名的示例是https://dipak-sdfc-dev-ed.my.salesforce.com/
。
https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC
)。 以下步骤描述了如何开发必要的DataPower工件,该工件主要由HTTPS前端处理程序,包含所需处理策略规则的多协议网关和AAA策略组成。
temporary://
目录下载该证书。 创建一个HTTPS前端处理程序(图18)以接受来自浏览器的SSO请求。
创建具有动态后端路由的多协议网关(图19)。 确保为请求和响应数据类型选择“ 非XML ”以处理HTTP表单数据和HTML数据。 下一步(步骤8)描述了多协议网关策略的详细信息。
使用以下处理规则创建一个多协议网关策略:
方向:客户端到服务器。
/favicon.ico
var://service/mpgw/skip-backside
方向:客户端到服务器。
/sso/salesforce/login
注意:根据组织的标准使用适当的URL。 使用清单1中所示的XSLT( remove-specific-attribute.xsl )从< SubjectConfirmationData >元素中删除@NotBefore属性,因为Salesforce SAML断言验证器框架不允许该属性。
此操作通过使用数字签名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'])
在步骤5中生成的DataPower加密密钥和证书。
此Transform操作将生成一个HTML页面,该页面包括带有HTTP POST操作HTML FORM,并包含以base-64编码的SAML断言XML作为隐藏参数。 图34显示了成功认证后DataPower响应的示例HTML页面。 使用清单2中所示的XSLT( SSO-Generate-HTML-Idp.xsl )进行此操作。 确保使用在步骤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
https://datapowersso.ibm.com/
)( 步骤4 )。 从Salesforce SSO设置( 第4步 )的“ SAML受众”字段中输入实体ID值。 将Salesforce登录URL用于“ SAML收件人”和“响应目标”字段。 创建SAML属性定义,如图32所示。 在Web浏览器中输入您的身份提供者(例如DataPower)SSO登录URL(例如https://
),如图33所示。成功认证后,DataPower响应带有SSO重定向(HTTP POST绑定)页面,如图34所示,其中包括带有HTTP POST ActionHTML FORM,并包含base-64编码的SAML断言XML和RelayState作为隐藏参数。 它需要用户交互才能通过单击“ 登录到Salesforce”按钮来提交HTML页面,从而导致向Salesforce登录URL(例如https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC
提交HTTP POST请求https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC
)。
Salesforce使用SAML断言XML中的嵌入式签名针对DataPower证书来验证消息的完整性,该证书已在SSO设置过程中上载。 成功进行签名验证后,它将处理SAML断言语句,提取并验证联合身份验证ID,最后重定向到最初请求的页面。 图35显示了此示例成功尝试SSO登录后的Salesforce登录页面。
假设您熟悉DataPower的常见调试和故障排除过程,那么本教程主要侧重于Salesforce。
您可以使用Google®Chrome中的开发人员工具捕获base-64编码的SAML断言XML(请参见图36和图37)。 尽管您可以从HTML页面源获取此数据,但是使用开发人员工具或Internet Explorer可以帮助您分析HTTP事件,包括它们的请求/响应标头和数据结构。 您可以使用任何在线工具(例如http://www.string-functions.com/base64decode.aspx
)解码(以64为基数)此数据,以获取SAML断言XML。 清单4显示了一个示例SAML断言XML。
https://datapowersso.ibm.com/
1hL2WyVjm9cYVUUrOWWUTc4zN5I=
wZm0YCeXOlsEfepgf+a7LOW6I/PXbycIt0JQA1XJ1lU57VT5rxw2cSdGziqYw
pNT3wai7oPLdsSmzSuTkiocOjfT6BJSUJnebED/m4irUOcTa.....................
MIIDtzCCAp+gAwIBAgIIAhBEWantyAswDgMBAAGjgbAwga0wDAYDVR0TBAU
wAwEB/zAdBgNVHQ4EFgQUW0S1wlYr4NrKH41aKejdlM0o1RQwcQ...................
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声明。 图39至41显示了使用Force.com的SAML断言验证器框架进行SAML断言验证。
在测试SSO登录名时,您可以以管理员身份通过单独的登录名来监视Force.com上的登录历史记录。 图42显示了Force.com站点上的登录历史记录页面,该页面可以帮助您解决SSO登录失败。
具有较少Salesforce用户的组织可能不需要此单点登录解决方案,因为他们可以继续使用Salesforce的标准登录过程。 但是,拥有大量Salesforce用户的组织可以通过为其所有内部应用程序以及基于云的外部应用程序(例如Force.com)实施基于DataPower的单点登录基础结构来利用此解决方案,这些支持使用外部SSO身份提供商的联合身份管理。
要继续本系列,请参阅以下教程:
翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1505_pal1/1505_pal1.html
sso saml