转载

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

简介

本教程系列的第 4 部分不会重复累述 Salesforce 联合单点登录 (SSO) 的基础知识。本教程主要将探讨如何使用 IBM® WebSphere DataPower(下文简称 DataPower)作为身份提供程序,实现服务提供程序向 Salesforce 发起的 SSO(受一个已加密和签名的 SAML 断言支持)。图 1 和图 2 给出了此解决方案的总体概括图。

图 1. 服务提供程序向 Salesforce 发起的 SSO 登录的概括图

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 2. 服务提供程序发起的 SSO 登录流程

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

Force.com 平台上的单点登录设置

这一节将提供在 Force.com 平台上实现单点登录设置的步骤。如果已经实现了本系列教程所演示的所有示例,则无需重复同样的步骤。但是,请确保您已经配置了本示例所需的额外步骤。

回页首

第 1 步:创建 Salesforce 用户帐户

首先,在 Salesforce 开发人员站点 上创建一个用户帐户(Salesforce 管理员)(如果还没有帐户)。图 3 显示了 Salesforce 用户(开发人员版)注册过程。

图 3. 在 Salesforce 开发人员站点上创建 Salesforce 用户帐户(开发人员版)

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 3. 在 Salesforce 开发人员站点上创建 Salesforce 用户帐户(开发人员版)

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

输入在注册过程中获得的凭据来登录到 Salesforce,然后创建另一个用户帐户。确保您按照图 4 中所示输入了一个联合 ID,以便对这个用户帐户启用 SSO 登录。

用户 ID: sdfc.user@sdfc.com
联合 ID: sdfc.user@sso.sdfc.com

图 4. 输入一个联合 ID 来启用 SSO

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 5 显示了一个 Salesforce 用户详细信息页面。本教程系列演示的示例使用了下面这个示例用户帐户来执行 SSO 设置。强烈建议 不要 对您组织的 Salesforce 管理员启用 SSO 特性,因为身份提供程序 (DataPower) 应用程序的任何中断都会阻止所有管理活动的运行。

图 5. Salesforce 上的示例用户帐户详细信息

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 5. Salesforce 上的示例用户帐户详细信息

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 2 步:创建一个自签名或 CA 签名证书

证书用于向外部身份提供程序执行经过验证的单点登录。您需要一个 Salesforce 证书,供服务提供程序发起的 SSO 对 Force.com 端的 SAML 身份验证请求执行签名,以及验证身份提供程序端的相同签名。在本示例中,身份提供程序还使用了 Salesforce 证书对 SAML 断言响应进行了加密。在创建证书后,下载它并将它保存到您的本地系统中。本教程系列演示的示例使用下面这个自签名证书(标签: Salesforce SSO ),如图 6 和图 7 所示。

图 6. Salesforce 上的自签名证书列表

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 6. Salesforce 上的自签名证书列表

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 7. 证书(标签:Salesforce SSO)详细信息页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 7. 证书(标签:Salesforce SSO)详细信息页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 3 步:管理 Salesforce 域

使用 My Domain (图 8),您可以定义一个自定义的 Salesforce 域名。这个名称可帮助您以多种方式更好地管理您组织的登录和身份验证。请参阅 Salesforce 文档,了解有关域管理的详细信息。本教程系列演示的示例使用了以下域名。我们建议对您的组织使用一个合适的域名。一个域名示例: https://dipak-sdfc-dev-ed.my.salesforce.com/

图 8. Salesforce 上的 My Domain 概述页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 8. Salesforce 上的 My Domain 概述页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 4 步:在 Salesforce 上设置 SSO 设置

  1. 以 Salesforce 管理员身份登录并转到 Setup > Security Controls > Single Sign-On Settings 。确保已勾选了 Federated Single Sign-On Using SAML 选项卡上的 SAML Enabled 复选框,单击 SAML Single Sign-On Settings 选项卡上的 New 按钮。图 9 和图 10 给出了本示例使用的 Salesforce SSO 设置。在 Force.com 平台中执行此 SSO 设置之前,请确保您已经创建了第 6 步中描述的 DataPower 加密密钥和关联的证书。

    图 9. Salesforce 上的 SAML SSO 设置

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 9. Salesforce 上的 SAML SSO 设置

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    图 10. SAML SSO 设置详细信息

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 10. SAML SSO 设置详细信息

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

  2. 上传 DataPower 证书作为 身份提供程序证书 ,这样 Force.com 平台就可验证与 SAML 断言响应关联的签名。
  3. Signing CertificateAssertion Decryption Certificate 字段都使用第 2 步中生成的自签名或 CA 签名证书。在 IssuerEntity Id 字段中输入合适的值。在 Identity Provider Login URL 字段中使用 DataPower SSO 登录 URL(比如 https://<host:port>/sso/salesforce/saml/request ),以便 Force.com 可将请求重定向到身份提供程序的 SSO 登录 URL。本教程中使用的 SAML 断言已加密,它在 Subject 陈述中的 NameIdentifier ( NameID ) 字段中包含登录用户的 联合 ID
  4. 在保存 SAML SSO 设置后,记下 Salesforce 登录 URL(例如 https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb )。

第 5 步:将 Login Page Branding 上传到 My Domain 上

转到 Setup > Domain Management > My Domain ,编辑 Login Page Branding 并选择合适的 Authentication Service 。这个 Login Page Branding 设置在特定于域的登录页面上显示 SSO 登录选项,如图 11 和图 12 所示。

图 11. My Domain 上的 Login Page Branding

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 12. 包含自定义 SSO 提供程序的特定于域的登录页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 12. 包含自定义 SSO 提供程序的特定于域的登录页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

配置 DataPower 作为单点登录身份提供程序

这一节将介绍开发必要 DataPower 工件的步骤,主要包括 HTTPS 前端处理函数、一个包含需要的处理策略的多协议网关,以及一个 AAA 策略。

回页首

第 6 步:管理 DataPower 加密密钥

  1. 使用 DataPower 加密工具生成一个加密密钥和一个自签名(或 CA 签名)证书,生成安全的 HTTP (SSL) 连接和签名需要它们(图 13)。
  2. 在创建 DataPower 证书后,从 temporary:// 目录下载它(图 14)。如果已经实现了本教程系列中的所有示例,那么可以重用同样的加密配置。确保您配置了一个加密验证凭据,其中包含第 2 步中下载的 Salesforce 证书。

    图 13. 本示例中使用的 DataPower 加密密钥

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    图 14. 本示例中使用的 DataPower 加密证书

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  3. 创建一个加密证书并导入第 2 步中下载的 Salesforce 证书,您需要使用它来验证 SAML 身份验证请求和加密 SAML 断言响应(图 15)。

    图 15. 导入 Salesforce 证书来配置加密证书

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  4. 创建一个加密身份凭据并添加 DataPower 加密密钥,SSL 设置需要该密钥(图 16)。

    图 16. 配置加密身份凭据

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  5. 创建一个加密验证凭据并添加 Salesforce 证书,如图 17 所示。如果执行 SSL 客户端证书验证,可能需要添加一个客户端(比如浏览器)证书。

    图 17. 配置加密验证凭据

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  6. 创建加密配置文件。添加加密身份凭据和加密验证凭据(图 18)。

    图 18. 配置加密配置文件

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  7. 使用 Reverse SSL Direction 创建一个 SSL 代理配置文件(图 19),使用上一步中创建的加密配置文件。

    图 19. 配置 SSL 代理配置文件

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 7 步:创建 HTTPS 前端处理函数

创建一个 HTTPS 前端处理函数(图 20)来接受来自浏览器的 SSO 请求。

图 20. 配置 HTTPS 前端处理函数

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 20. 配置 HTTPS 前端处理函数

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 8 步:创建多协议网关

使用动态后端路由创建一个多协议网关(图 21)。另外,确保为请求和响应数据类型都选择了 Non-XML ,以便处理 HTTP 格式数据和 HTML 数据。下一节(第 9 步)将介绍多协议网关策略的详细信息。

图 21. 配置多协议网关

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 21. 配置多协议网关

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 9 步:创建多协议网关策略

使用以下处理规则创建一个多协议网关策略:

  • 第一条规则: 此规则处理来自浏览器的 favicon.ico 请求(图 22)。

    方向:客户端到服务器。

    1. 操作: 匹配
      匹配类型: URL
      URL 匹配: /favicon.ico
    2. 操作: 高级 [设置变量]
      变量名: var://service/mpgw/skip-backside
      变量赋值: 1
    3. 操作: 结果

      图 22. 处理来自浏览器的 favicon.ico 请求的多协议网关策略规则

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      点击查看大图

      关闭 [x]

      图 22. 处理来自浏览器的 favicon.ico 请求的多协议网关策略规则

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

  • 第二条规则:

    此规则处理来自服务提供程序的 SSO 登录请求,这些请求使用 HTTP POST 绑定来通过浏览器重定向。此规则执行以下活动序列:

    1. 通过浏览器从服务提供程序接收 HTTP POST 请求,其中包含具有以下参数的 HTTP 表单数据:
      • RelayState: 这是用户请求访问的来自服务提供程序的原始资源 URI
      • SAMLRequest: 这是 base-64 编码的 SAML 身份验证请求。
    2. 解析 HTTP 表单数据并提取上述参数。
    3. 解码 base-64) SAML 身份验证请求并从 /AuthnRequest/@AssertionConsumerServiceURL 属性中提取 Salesforce 登录 URL。
    4. 验证从 SAML 身份验证请求 XML 中提取的签名。
    5. 使用 AAA 策略验证 SAML 请求发出方(在本示例中为 https://dipak-sdfc-dev-ed.my.salesforce.com )。
    6. 在成功验证 SAML 请求发出方后,将会使用另一个 AAA 策略验证用户并生成一个 SAML 断言 XML。
    7. 从 < SubjectConfirmationData > 元素中删除 @NotBefore 属性,因为 Salesforce SAML Assertion Validator Framework 不支持此属性。
    8. 使用 Salesforce 证书加密 SAML 断言。
    9. 对 SAML 断言执行签名。
    10. 生成一个 HTML 页面。请参阅具体的 转换 操作,了解有关的详细信息。
    11. 响应浏览器。

    规则配置详细信息为:

    方向:客户端到服务器(图 23)。

    图 23. 处理来自服务提供程序的 SSO 登录请求的多协议网关策略规则

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 23. 处理来自服务提供程序的 SSO 登录请求的多协议网关策略规则

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    1. 操作: 匹配
      匹配类型: URL
      URL 匹配: /sso/salesforce/saml/request 备注: 依据您组织的标准来使用合适的 URL。
    2. 操作: 将查询参数转换为 XML(高级操作)(图 24)

      图 24. 操作:将查询参数转换为 XML

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
    3. 操作: 转换(图 25)

      此操作解码 (base-64) SAML 身份验证请求并从 /AuthnRequest/@AssertionConsumerServiceURL 属性提取 Salesforce 登录 URL。清单 1 给出了用于此转换的 XSLT。

      清单 1. XSLT [process-saml-auth-request.xsl]

      <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" extension-element-prefixes="dp"  exclude-result-prefixes="dp" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:dp="http://www.datapower.com/extensions">  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>  <xsl:template match="/">  <xsl:variable name="vRelayState"  select="/*[local-name()='request']/*[local-name()='args']/*[local-name()='arg'  and @*[local-name()='name' and normalize-space(.) = 'RelayState']]/text()"/>  <dp:set-variable name="'var://context/saml/auth-request/RelayState'"  value="$vRelayState"/>  <xsl:variable name="vSAMLRequest"  select="/*[local-name()='request']/*[local-name()='args']/*[local-name()='arg'  and @*[local-name()='name' and normalize-space(.) = 'SAMLRequest']]/text()"/> <xsl:variable name="vSAMLRequestXML" select="dp:parse($vSAMLRequest,'base-64')"/>  <dp:set-variable name="'var://context/saml/auth-request/sdfcLoginURL'"  value="$vSAMLRequestXML/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol'  and local-name()='AuthnRequest']/@AssertionConsumerServiceURL"/>  <xsl:copy-of select="$vSAMLRequestXML"/>  </xsl:template> </xsl:stylesheet>

      图 25. 操作:转换

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      点击查看大图

      关闭 [x]

      图 25. 操作:转换

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    4. 操作:

      验证签名(图 26)

      此操作验证来自 SAML 身份验证请求的签名。

      图 26. 操作:验证

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
    5. 操作: AAA(图 27)

      创建一个 AAA 策略来验证 SAML 身份验证请求 发出方 。请参阅第 10 步了解 AAA 配置的详细信息。

      图 27. 操作:AAA(SAML 身份验证请求发出方身份验证)

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
    6. 操作: AAA(图 28)

      创建另一个 AAA 策略来验证用户和生成 SAML 断言 XML。请参阅第 11 步,了解有关 AAA 配置的详细信息。

      图 28. 操作:AAA(用户身份验证和 SAML 断言生成)

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
    7. 操作: 转换(图 29)

      使用所提供的 XSLT ( remove-specific-attribute.xsl )(如清单 2 中所示) 从 < SubjectConfirmationData > 元素中删除 @NotBefore 属性,因为 Salesforce SAML Assertion Validator Framework 不支持此属性。

      图 29. 在转换操作中使用 XSLT 从 SAML 断言 XML 中删除属性

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      清单 2. 从 SAML 断言 XML 中删除一个特定属性的 XSLT [remove-specific-attribute.xsl]

      <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" extension-element-prefixes="dp"  exclude-result-prefixes="dp" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:dp="http://www.datapower.com/extensions">  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>  <xsl:strip-space elements="*"/>  <xsl:template match="@* | node()">  <xsl:copy>  <xsl:apply-templates select="@* | node()"/>  </xsl:copy>  </xsl:template>  <xsl:template match="/*[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']/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:assertion' and  local-name()='Subject']/*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:assertion'  and local-name()='SubjectConfirmation']/*[namespace-uri() ='urn:oasis:names:tc:SAML:2.0:assertion' and local-name() ='SubjectConfirmationData']/@NotBefore"/> </xsl:stylesheet>
    8. 操作:

      加密(图 30)

      此操作使用 Salesforce 证书加密 SAML 断言。创建一个文档加密映射,指定以下 XPATH(清单 3),如图 31 所示。

      清单 3. 文档加密映射中使用的 XPATH

      /*[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']

      图 30. 加密 SAML 断言

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      点击查看大图

      关闭 [x]

      图 30. 加密 SAML 断言

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      图 31. 创建一个用于加密的文档加密映射

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      点击查看大图

      关闭 [x]

      图 31. 创建一个用于加密的文档加密映射

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    9. 操作: 签名(图 32)

      此操作对已加密的 SAML 断言 XML 执行数字签名(XPATH: /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response'] ),方法是使用第 6 步中生成的 DataPower 加密密钥和证书。

      图 32. 对 SAM 断言 XML 执行签名

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      点击查看大图

      关闭 [x]

      图 32. 对 SAM 断言 XML 执行签名

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    10. 操作: 转换(图 33)

      此操作生成一个 HTML 页面,其中包含一个包含 HTTP POST 操作的 HTML FORM,包含个 base-64 编码的 SAML 断言 XML 和 RelayState 作为隐藏的参数。图 33 显示了在成功验证后 DataPower 响应的一个示例 HTML 页面。使用清单 4 中所示的 XSLT ( SSO-Generate-HTML-SP.xsl ),本教程的下载部分中也有提供。

      图 33. 生成 HTML 响应的 XSLT 转换

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      点击查看大图

      关闭 [x]

      图 33. 生成 HTML 响应的 XSLT 转换

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

      清单 4. 生成 HTML 页面的 XSLT [SSO-Generate-HTML-SP.xsl]

      <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" extension-element-prefixes="dp"  exclude-result-prefixes="dp" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:dp="http://www.datapower.com/extensions">  <xsl:output method="html" omit-xml-declaration="yes"/>  <xsl:template match="/"> <xsl:variable name="relayState"  select="dp:variable('var://context/saml/auth-request/RelayState')"/> <xsl:variable name="sdfcLoginURL"  select="dp:variable('var://context/saml/auth-request/sdfcLoginURL')"/> <xsl:variable name="signedSamlSerialized">  <dp:serialize select="/" omit-xml-decl="yes"/>  </xsl:variable>  <xsl:variable name="base64Samldata"  select="dp:encode($signedSamlSerialized,'base-64')"/>  <html>  <head>  <title>Login to Salesforce</title>  <meta http-equiv="Cache-Control" content="no-cache"/>  <meta http-equiv="Pragma" content="no-cache"/>  <meta http-equiv="Expires" content="-1"/>  <meta http-equiv="X-UA-Compatible" content="IE=8"/>  <style type="text/css"> .body{background-color: #3EB1D0;} .data{   background-color: #C6EDEC;   margin-top: 10%;   margin-left: 20%;   margin-right: 20%;   font-family: verdana;    color: #0A6DA8;  } .headline{font-size: 50px;} .button{   background-color: #F5DAA3;   color: #0D75AA;   font-size: x-large;  } </style>  </head>  <body class="body">  <div align="center" class="data">  <div>  <form method="POST" enctype="application/x-www-form-urlencoded">  <xsl:attribute name="action">  <xsl:value-of select="$sdfcLoginURL"/>  </xsl:attribute>  <div class="headline">  <i><b>Salesforce Login</b></i>  </div>  <div><h2>Welcome<span><i><b> <xsl:value-of select="dp:variable('var://context/WSM/identity/username')"/></b></i>  </span></h2></div>  <div>  <h4>  <p>Clicking Submit button will redirect you to Salesforce home page</p>  <p>Please contact  <a href="mailto:support@example.com">support@example.com</a>  if you experience any issues during Salesforce Login</p></h4>  </div>  <div>  <input type="hidden" name="idpConfig.recipient">  <xsl:attribute name="value">  <xsl:value-of select="$sdfcLoginURL"/>  </xsl:attribute>  </input>  <input type="hidden" name="SAMLResponse">  <xsl:attribute name="value">  <xsl:value-of select="$base64Samldata"/>  </xsl:attribute>  </input>  <input type="hidden" name="RelayState">  <xsl:attribute name="value">  <input type="hidden" name="RelayState">  </xsl:attribute>  </input>  </div>  <br/>  <div>  <input class="button" type="submit" name="submit" value="Login to Salesforce"/>  </div>  <br/>  </form>  </div>  </div>  </body>  </html> </xsl:template> </xsl:stylesheet>
    11. 操作: 高级 [设置变量],用于跳过实际的后端路由(图 34)。
      变量名: var://service/mpgw/skip-backside
      变量赋值: 1

      图 34. 跳过后端路由的高级操作

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
    12. 操作: 结果(图 35)

      图 35. 结果操作

      使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 10 步:创建一个 AAA 策略来验证 SAML 请求发出方。

这个 AAA 策略从 SAML 身份验证请求中提取 issuer 作为一个自定义令牌,并向 AAA 策略信息文件执行验证,如清单 5 所示:

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 策略配置的详细信息。

清单 5. 示例 AAA 策略信息文件

<?xml version="1.0" encoding="utf-8"?> <AAAInfo xmlns="http://www.datapower.com/AAAInfo">  <FormatVersion>1</FormatVersion>  <Filename>local:///AAAInfoPolicy.xml</Filename>  <Summary>AAA Policy Info XML file</Summary>  <Authenticate>  <Username>dipakpal</Username>  <Password>dipakpal-password</Password>   <OutputCredential>dipakpal@sso.sdfc.com</OutputCredential>  </Authenticate>  <Authenticate>  <Username>sdfc.user</Username>  <Password>sdfc-password</Password>   <OutputCredential>sdfc.user@sso.sdfc.com</OutputCredential>  </Authenticate>  <Authenticate>   <CustomToken>https://dipak-sdfc-dev-ed.my.salesforce.com</CustomToken>  <OutputCredential>saml.auth.request.issuer</OutputCredential>  </Authenticate>  <Authenticate>  <DN>CN=Alice, O=DataPower, L=Cambridge, ST=MA, C=US</DN>  <OutputCredential>admin</OutputCredential>  </Authenticate>  <Authenticate>  <IPHost>127.0.0.1</IPHost>  <OutputCredential>admin</OutputCredential>  </Authenticate>  <Authenticate>  <IPHost>::1</IPHost>  <OutputCredential>admin</OutputCredential>  </Authenticate>  <Authenticate>  <Username>guest</Username>  <Password>guest</Password>  <OutputCredential>user</OutputCredential>  </Authenticate>  <Authorize>   <InputCredential>dipakpal@saml.sdfc.com</InputCredential>  <InputResource>/sso/*</InputResource>  <Access>allow</Access>  </Authorize>  <Authorize>   <InputCredential>sdfc.user@sso.sdfc.com</InputCredential>  <InputResource>/sso/*</InputResource>  <Access>allow</Access>  </Authorize>  <Authorize>  <InputCredential>saml.auth.request.issuer</InputCredential>  <InputResource>/sso/*</InputResource>  <Access>allow</Access>  </Authorize>  <Authorize>  <InputCredential>guest</InputCredential>  <InputResource>/sso/salesforce</InputResource>  <Access>deny</Access>  </Authorize>  <Authorize>  <InputCredential>admin</InputCredential>  <InputResource>/sso/salesforce</InputResource>  <Access>allow</Access>  </Authorize>  <Authorize>  <InputCredential>  <Version>3</Version>  <SerialNumber>0</SerialNumber>  <SignatureAlgorithm>sha1WithRSAEncryption</SignatureAlgorithm>  <Issuer>C=US, ST=MA, L=Cambridge, O=DataPower, CN=Alice</Issuer>  <NotBefore>2002-11-23T01:15:33Z</NotBefore>  <NotAfter>2012-11-23T01:15:33Z</NotAfter>  <Subject>C=US, ST=MA, L=Cambridge, O=DataPower, CN=Alice</Subject>  <SubjectPublicKeyAlgorithm>rsaEncryption</SubjectPublicKeyAlgorithm>  <Extensions/>  </InputCredential>  <InputResource>/sso/*</InputResource>  <Access>allow</Access>  </Authorize> </AAAInfo> 

图 36. AAA:从 SAML 身份验证请求 XML 中提取一个自定义令牌

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 37. AAA:向 AAA 策略信息 XML 验证 SAML 身份验证请求发出方

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 38. AAA:授权任何经过验证的客户端

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 38. AAA:授权任何经过验证的客户端

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 11 步:创建一个 AAA 策略来验证用户

  1. 创建另一个 AAA 策略来验证用户和生成 SAML 断言 XML。本教程演示的示例使用了一种基本的 HTTP 身份验证方法,并向 DataPower AAA 信息文件验证用户凭据,如清单 5中所示。但是,您可根据您组织的标准来实现合适的身份验证方法。图 39 到图 41 给出了 AAA 策略配置的详细信息。如果已经实现本系列中前面的教程所演示的所有示例,那么可以重用同样的 AAA 策略。

    图 39. AAA 策略 – 从请求中提取身份

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    图 40. AAA 策略 – 验证用户

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    图 41. AAA 策略 – 授权请求

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  2. 配置这个 AAA 访问控制策略,以便在成功身份验证后生成一个 SAML 断言响应。图 42 显示了启用 SAML 断言的 AAA 访问控制策略页面。确保您使用了在 Salesforce SSO 设置上(第 4 步)配置的相同 SAML 发出方 (比如 https://datapowersso.ibm.com/ )。

    图 42. AAA 策略 – 生成 SAML 断言响应

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 42. AAA 策略 – 生成 SAML 断言响应

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

  3. AAA Access Control Policy 页面的 SAML Audience 字段中设置来自 Salesforce SSO 设置(第 4 步)的 Entity ID 值。
  4. SAML RecipientResponse Destination 字段中都使用 Salesforce 登录 URL。
  5. 创建 SAML 属性定义,如图 43 所示。

    图 43. AAA 策略 – SAML 属性

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 43. AAA 策略 – SAML 属性

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

第 12 步:测试单点登录

  1. 在 Web 浏览器中输入一个特定于域的服务提供程序,比如 Salesforce、资源 URL 或登录 URL,如图 44 所示。这个示例使用下面这个显示 Force.com 上的用户列表且已加入书签的 URL。
    https://dipak-sdfc-dev-ed.my.salesforce.com/005?retURL=%2Fui%2Fsetup%2FSetup%3Fsetupid%3DUsers  &setupid=ManageUsers

    图 44. Salesforce 登录页面(特定于域)

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 44. Salesforce 登录页面(特定于域)

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

  2. 确保 Salesforce 资源或登录 URL 是特定于域的。单击登录页面上合适的 SSO 身份提供程序(本例中为 DataPower SSO )选项,以便将请求重定向 (HTTP POST) 到 DataPower。DataPower 验证 SAML 身份验证请求,然后如果用户尚未登录,则向用户质询登录凭据(图 45)。

    图 45. DataPower 向用户质询登录凭据

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...
  3. 在成功身份验证后, DataPower 将以一个 SSO 重定向(HTTP POST 绑定)页面作为响应,如图 46 所示,其中包含一个具有 HTTP POST 操作的 HTML FORM,还包含一个 base-64 编码的 SAML 断言 XML 和 RelayState 作为隐藏参数。它需要用户单击 Login to Salesforce 按钮来提交 HTML 页面,这会导致将一个 HTTP POST 请求提交到 Salesforce 登录 URL(比如 https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghL&sc=0LEF0000000Kytb )。

    图 46. 成功身份验证后的 SSO 重定向(HTTP POST 绑定)页面

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 46. 成功身份验证后的 SSO 重定向(HTTP POST 绑定)页面

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

  4. Salesforce 使用 SAML 断言 XML 中嵌入的签名,参照 DataPower 证书来验证消息完整性,该证书已在 SSO 设置过程中上传。在成功验证签名后,将会解密已加密的断言,处理 SAML 断言陈述,提取并验证联合 ID,最终重定向到最初请求的页面。图 47 显示了本示例尝试 SSO 登录成功后的 Salesforce 着陆页。

    图 47. 成功 SSO 登录后的请求的资源页面

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

    点击查看大图

    关闭 [x]

    图 47. 成功 SSO 登录后的请求的资源页面

    使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

第 13 步:调试和故障排除指南

假设您熟悉 DataPower 的常用调试和故障排除方法,因此本教程主要关注 Salesforce。

您可以使用 Google Chrome 中的 开发人员工具 捕获 base-64 加密的 SAML 身份验证请求,如图 48 和图 49 所示。尽管可以从 HTML 页面源代码中获取此数据,但使用 开发人员工具Internet Explorer 可帮助您分析 HTTP 事件,包括请求/响应标头和数据结构。您可以使用任何在线工具(比如 http://www.string-functions.com/base64decode.aspx )解码 (base-64) 此数据,获取 SAML 身份验证请求 XML。清单 6 给出了一段示例 SAML 身份验证请求 XML。

图 48. 启动 Google Chrome 中的开发人员工具

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 49. 开发人员工具显示的 DataPower SSO 登录请求的 HTTP 表单数据

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 49. 开发人员工具显示的 DataPower SSO 登录请求的 HTTP 表单数据

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

清单 6. 已签名 SAML 身份验证请求的示例

<samlp:AuthnRequest  AssertionConsumerServiceURL=">https://dipak-sdfc-dev-ed.my.salesforce.com? so=00DF0000000ghL&sc=0LEF0000000Kytb"  Destination="https://100.99.99.99:80/sso/salesforce/saml/request"  ID="_2_qtBx5CYOfeRPm783dL0kCopCzgOGJIGFCfNYWjZc_cKcRnB_jktE1lwIyXMSmnn8Phcmpv8e_xVZel9S Q_AoHf.ebf1pLAmMX4Wij1MFrVUtsMoHdBy2KwJFtuFFKG87GTQTUogXIw5AS5Q9Nx0esc8vg.Nzxp.sQ0a24rHa XK0i7KC3LUamo.zqwP.2VTYgPp.kI_jZFpSg1q7Oo2pwwC_xwKpoA"  IssueInstant="2014-07-28T04:32:35.342Z"  ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">  <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">  https://dipak-sdfc-dev-ed.my.salesforce.com</saml:Issuer>    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">  <ds:SignedInfo>          <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>          <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>  <ds:Reference  URI="#_2_qtBx5CYOfeRPm783dL0kCopCzgOGJIGFCfNYWjZc_cKcRnB_jktE1lwIyXMSmnn8Phcmpv8e_xVZel 9SQ_AoHf.ebf1pLAmMX4Wij1MFrVUtsMoHdBy2KwJFtuFFKG87GTQTUogXIw5AS5Q9Nx0esc8vg.Nzxp.sQ0a24r HaXK0i7KC3LUamo.zqwP.2VTYgPp.kI_jZFpSg1q7Oo2pwwC_xwKpoA">  <ds:Transforms>  <ds:Transform  Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>                <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14#">  <ec:InclusiveNamespaces PrefixList="ds saml samlp"  xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/>  </ds:Transform>  </ds:Transforms>             <ds:DigestMethod Algorithm="e>http://www.w3.org/2000/09/xmldsig#sha1"/>  <ds:DigestValue>vPFOzywPaMuL2RR5A6kn2yMn1b0=</ds:DigestValue>  </ds:Reference>  </ds:SignedInfo>  <ds:SignatureValue>SXKNfCiYk6lzqrJNaeBLp0bT3FhI/iUvGFr9u+ncqmTm+0UyXo0t3qqHbENk+pN qXNIrwDFMP4NQJssHVfrEJt0k0XJ0Tr............................</ds:SignatureValue>  <ds:KeyInfo>  <ds:X509Data>  <ds:X509Certificate>MIIEcjCCA1qgAwIBAgIOAUdWZRxHAAAAABAQi70wDQYJKoZIhvcNAQEF BQAwfjEWMBQGA1UEAwwN...............................</ds:X509Certificate>  </ds:X509Data>  </ds:KeyInfo>  </ds:Signature> </samlp:AuthnRequest>

您可以使用 Google Chrome 中的 开发人员工具 捕获 base64 编码的 SAML 断言响应数据,如图 50 所示。清单 7 给出了一段示例 SAML 断言 XML。

图 50. 从 HTML 页面源代码中捕获 base-64 编码的 SAML 断言 XML

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 50. 从 HTML 页面源代码中捕获 base-64 编码的 SAML 断言 XML

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

清单 7. 已加密和签名 SAML 身份验证响应的示例

<samlp2:Response Version="2.0" ID="SAML-55173ac1-93ab-4a69-a7f9-cbf85b0de345"  IssueInstant="2014-07-28T04:31:35Z"  InResponseTo="_2_qtBx5CYOfeRPm783dL0kCopCzgOGJIGFCfNYWjZc_cKcRnB_jktE1lwIyXMSmnn8Phcmpv 8e_xVZel9SQ_AoHf.ebf1pLAmMX4Wij1MFrVUtsMoHdBy2KwJFtuFFKG87GTQTUogXIw5AS5Q9Nx0esc8vg.Nzxp .sQ0a24rHaXK0i7KC3LUamo.zqwP.2VTYgPp.kI_jZFpSg1q7Oo2pwwC_xwKpoA"  Destination="https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC"  xmlns:samlp2="urn:oasis:names:tc:SAML:2.0:protocol">  <saml2:Issuer  xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"> https://datapowersso.ibm.com/</saml2:Issuer>    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">  <SignedInfo>  <CanonicalizationMethod  Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>          <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>  <Reference URI="#SAML-55173ac1-93ab-4a69-a7f9-cbf85b0de345">  <Transforms>  <Transform  Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>                <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>  </Transforms>             <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>  <DigestValue>W145ngU06DdGMAguqb6erN1WUcY=</DigestValue>  </Reference>  </SignedInfo>  <SignatureValue>PC/ivOJSUdzK+3ErExxcO7Ukd5eP3Yzf14o5b/wiEGEKs2Vqz7pfzxukMWJPWcFKbG Br+il/kcGaqgzznAH50qWi7LtjR9YT.................................</SignatureValue>  <KeyInfo>  <X509Data>  <X509Certificate>MIIDtzCCAp+gAwIBAgIIAhBEWantyAswDQYJKoZIhvcNAQEFBQAwQjELMAk GA1UEBhMCVVMxDDAKBgNVBAoTA0lCTTEMMAoGA1UECxMDR0JTMRcwFQYDVQQDEw5EQVRBUE9XRVItU0RGQzAeFw0 xNDA3MjEwMDA1NTNaFw0xNTA3MjEwM....................................</X509Certificate>  <X509IssuerSerial>  <X509IssuerName>CN=DATAPOWER-SDFC, OU=GBS, O=IBM, C=US</X509IssuerName>  <X509SerialNumber>148693939596937227</X509SerialNumber>  </X509IssuerSerial>  </X509Data>  </KeyInfo>  </Signature>  <samlp2:Status>  <samlp2:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>  </samlp2:Status>  <saml2:EncryptedAssertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">       <xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"  xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">  <xenc:EncryptionMethod  Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>          <dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">  <xenc:EncryptedKey Recipient="name:Salesforce-SSO-Cert">  <xenc:EncryptionMethod  Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>  <dsig:KeyInfo>  <dsig:KeyName>Salesforce-SSO-Cert</dsig:KeyName>  </dsig:KeyInfo>  <xenc:CipherData>  <xenc:CipherValue>R+UanpDRYXazpVo4HgpUzK9/oZ2lzZvXM3gxvqhaoxE1zkuj1jU9 QKHScGbqcCc/loFM+0ga98oTx1TvRuA1...........................</xenc:CipherValue>  </xenc:CipherData>  </xenc:EncryptedKey>  </dsig:KeyInfo>  <xenc:CipherData>  <xenc:CipherValue>+nnVWq3htwLPxTcHWMCUi0Y0J0AyGIyh2qJxYtm1WpEUJS/OmbrBfyW/jd tQbl8s8zRQk1Ns8NZWLzbmqBRU/NeDCqNDtejWPs8BM9EDGr4JKVA/nEWwggnyXu1/C7De42Tg/RQS6Y9w3Emuju QcsHLmCFuFeLRDnK5/rtJAvCA5J............................</xenc:CipherValue>  </xenc:CipherData>  </xenc:EncryptedData>  </saml2:EncryptedAssertion> </samlp2:Response>

以管理员身份登录到 Salesforce 并验证 base-64 编码的 SAML 断言,检查 SSO 身份提供程序 (DataPower) 是否生成了 Salesforce 所期望的正确 SAML 断言。图 51 到图 54 显示了使用 Force.com 的 SAML Assertion Validator Framework 执行 SAML 断言验证的过程。

图 51. 启动 Salesforce 上的 SAML Assertion Validator Framework

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 51. 启动 Salesforce 上的 SAML Assertion Validator Framework

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 52. 将 base-64 编码的 SAML 断言输入到 Salesforce SAML Validator 中

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 53. 在 Salesforce SAML Validator 上成功验证 SAML 断言

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 53. 在 Salesforce SAML Validator 上成功验证 SAML 断言

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

图 54. 包含过期的时间戳的无效 SAML 断言

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 54. 包含过期的时间戳的无效 SAML 断言

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

测试 SSO 登录期间,您可以监视一个 Salesforce 管理员登录名在 Force.com 上的登录历史。图 55 显示了 Force.com 站点上的登录历史页面,可以帮助您排除 SSO 登录故障。

图 55. Force.com 上的登录历史页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

点击查看大图

关闭 [x]

图 55. Force.com 上的登录历史页面

使用 WebSphere DataPower 实现 Salesforce 联合单点登录,第 4 部分: 使用已加密和签名的 SAML 断...

回页首

结束语

拥有较少 Salesforce 用户的组织可能不需要单点登录解决方案,因为他们可以继续使用 Salesforce 标准登录流程。但是,拥有大量 Salesforce 用户的组织可利用此解决方案,为其所有内部应用程序以及基于云的和外部应用程序(比如 Force.com)实现一个基于 DataPower 的单点登录基础架构,这支持使用外部 SSO 身份提供程序执行联合身份管理。

本教程(第 4 部分)是这个介绍使用 WebSphere DataPower 实现 Salesforce 联合单点登录的教程系列 的最后一部分。

回页首

下载

描述 名字 大小
代码示例 code_sample_part4.zip 10KB
正文到此结束
Loading...