sso saml_身份提供者使用加密并签名的SAML断言启动SSO

sso saml

假设您已经阅读了本系列的第一篇文章 ,那么本教程(第2部分)将不会重述Salesforce联合单点登录(SSO)的基础知识。 本教程主要侧重于如何使用由身份验证提供者发起的SSO,使用IBM®WebSphere DataPower(以下称为DataPower)对Salesforce实施,该SSO由加密并签名的SAML断言提供支持。 图1和图2展示了该解决方案的高层概述。

图1.身份提供商启动的SSO登录到Salesforce的概述
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第1张图片
图2.身份提供者启动的SSO登录过程
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第2张图片

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

本节提供了在Force.com平台中实施SSO设置的步骤。 如果您已经实现了本系列中的任何教程所说明的示例,则可能无需再次重复相同的步骤。 但是,请确保已配置此示例所需的其他设置。

步骤1:创建Salesforce用户帐户

  1. 首先,如果您尚未创建一个用户帐户(Salesforce管理员),则在Salesforce开发人员站点上 。 图3显示了Salesforce用户(开发人员版)的注册过程。
    图3. Salesforce用户帐户(Developer Edition)的创建
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第3张图片
  2. 通过输入在注册过程中获得的凭据登录到Salesforce ,并创建另一个用户帐户。 确保输入如图4所示的联合身份验证ID,以启用该用户帐户的SSO登录。 图5显示了Salesforce用户详细信息页面。 本教程系列说明的示例使用以下示例用户帐户进行SSO设置。 我们强烈建议您不要启用您的组织的Salesforce管理员SSO功能,因为身份提供者(DataPower的)应用程序的任何中断将阻止所有管理有关的活动。

    用户ID: [email protected]
    联盟ID: [email protected]

    图4.输入联合身份验证ID以启用SSO
    输入联盟ID以启用SSO
    图5. Salesforce上的用户帐户(标准平台用户)详细信息
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第4张图片

步骤2:创建自签名或CA签名的证书

证书用于与外部身份提供者进行身份验证的SSO。 您需要此Salesforce证书来加密身份提供者端的SAML声明。 创建证书后,下载并将其保存到本地系统。 本教程系列说明的示例使用以下自签名证书(标签: Salesforce SSO ),如图6和图7所示。

图6. Salesforce的证书列表
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第5张图片
图7.自签名证书(标签:Salesforce SSO)详细信息页面
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第6张图片

步骤3:管理Salesforce网域

使用“我的域”,您可以定义自定义Salesforce域名。 此域名可以通过多种方式帮助您更好地管理组织的登录和身份验证。 有关域管理的详细信息,请参阅Salesforce文档 。 本教程系列说明的示例使用以下域名。 我们建议您为组织使用合适的域名。 示例域名的示例是https://dipak-sdfc-dev-ed.my.salesforce.com/

图8. Salesforce上的“我的域”概述
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第7张图片

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

  1. 以Salesforce管理员身份登录,然后转到设置>安全控制>单一登录设置 确保在“使用SAML联合单一登录”选项卡中选中了“ 启用S​​AML”复选框,然后单击“ SAML单一登录设置”选项卡中的“ 新建”按钮。 图9和图10显示了本教程使用的Salesforce SSO设置。 在Force.com平台上进行此SSO设置之前,请确保您已经创建了步骤5中描述的DataPower加密密钥和相关证书。
  2. 将DataPower证书上载为身份提供者证书 ,以便Force.com平台可以验证与SAML断言关联的签名。
  3. 将在步骤2中生成的自签名或CA签名证书用于“ 签名证书”和“ 断言解密证书”字段。 签名证书主要用于服务提供商发起的SSO,其中SAML身份验证请求由该证书签名。 身份提供者(例如,DataPower)通过使用此Salesforce证书对SAML断言响应进行加密。 颁发者实体ID字段中输入适当的值。 本教程中使用的SAML声明已加密,并且在Subject语句的NameIdentifier( NameID )字段中包含登录用户的联盟ID
  4. 保存SAML SSO设置后,记下Salesforce登录URL,例如: https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb : https://dipak-sdfc-dev-ed.my.salesforce.com?so=00DF0000000ghLC&sc=0LEF0000000Kytb
图9. Salesforce上的SAML SSO设置
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第8张图片
图10. Salesforce上的SAML SSO设置详细信息
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第9张图片

将DataPower配置为单一登录身份提供者

本部分显示如何开发必要的DataPower工件,该工件主要由HTTPS前端处理程序,包含所需处理策略规则的多协议网关和AAA策略组成。

步骤5:管理DataPower加密密钥

  1. 使用DataPower加密工具生成加密密钥和自签名(或CA签名)证书,如图11至13所示,这是安全HTTP(SSL)连接和签名生成所必需的。
  2. 创建证书后,请从temporary://目录下载证书。 如果您已经实现了本教程系列的第1部分中所示的示例,则可以重复使用相同的加密配置。 确保配置加密证书并导入在步骤2中下载的Salesforce证书,这是加密SAML断言所必需的。
    图11.本示例中使用的DataPower加密密钥
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第10张图片
    图12.本示例中使用的DataPower加密证书
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第11张图片
    图13.配置加密证书并导入Salesforce证书
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第12张图片
  3. 创建一个加密标识凭证,并添加DataPower加密密钥(图14),这是SSL设置所必需的。
    图14.使用DataPower加密密钥配置加密标识凭证
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第13张图片
  4. (可选)创建一个加密验证凭据并添加客户端(例如,浏览器)证书,如图15所示。如果您不强制执行SSL客户端证书验证,则可能不需要加密验证凭据。 您也可以选择添加Salesforce证书,此示例不需要此证书。 但是,如果您实施服务提供商发起的SSO来验证SAML身份验证请求中包含的签名,则将需要它。
    图15.配置加密验证凭证
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第14张图片
  5. 创建一个加密配置文件,并添加加密标识凭证和加密验证凭证(可选),如图16所示。
    图16.配置一个加密配置文件
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第15张图片
  6. 使用反向 SSL方向(图17)创建一个SSL代理配置文件,并使用在上一步中创建的加密配置文件。
    图17.配置SSL代理配置文件
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第16张图片

步骤6:创建HTTPS前端处理程序

创建一个HTTPS前端处理程序(图18)以接受来自浏览器的SSO请求。

图18.配置一个HTTPS前端处理程序
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第17张图片

步骤7:创建多协议网关

创建具有动态后端路由的多协议网关(图19)。 确保为请求和响应数据类型选择“ 非XML ”以处理HTTP表单数据和HTML数据。 下一步(步骤8)描述了多协议网关策略的详细信息。

图19.配置多协议网关
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第18张图片

步骤8:创建多协议网关策略

  1. 使用以下处理规则创建一个多协议网关策略。
    • 第一条规则:此规则处理来自浏览器的favicon.ico请求(图20)。

      方向:客户端到服务器。

      1. 动作:比赛
        匹配类型: URL
        网址匹配: /favicon.ico
      2. 行动:高级[设置变量]
        变量名称: var://service/mpgw/skip-backside
      3. 变量分配: 1
      4. 行动:结果
        图20.用于处理来自浏览器的favicon.ico请求的多协议网关策略规则
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第19张图片
    • 第二条规则:该规则处理来自浏览器的SSO登录请求,该请求是由用户通过输入DataPower SSO登录URL发起的(图21)。
      图21.多协议网关策略规则,用于处理来自浏览器的SSO登录请求
      sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第20张图片

      方向:客户端到服务器。

      1. 动作:比赛
        匹配类型: URL
        URL匹配: /sso/salesforce/login 注意:根据组织的标准使用适当的URL。
      2. 动作: AAA

        按照步骤9中所述创建AAA策略。

      3. 行动:变形(图22)

        使用清单1中所示的教程的下载部分中提供的XSLT( remove-specific-attribute.xsl )从元素中删除@NotBefore属性,因为Salesforce SAML断言验证器框架不允许该属性。

        图22.在转换操作中使用XSLT从SAML断言XML中删除属性
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第21张图片
        清单1. XSLT [remove-specific-attribute.xsl]从SAML断言XML中删除特定属性
        
         
        
         
         
         
         
         
         
         
        
      4. 行动:加密

        此操作通过使用Salesforce证书对SAML声明进行加密。 通过指定以下XPATH(清单2)来创建文档加密图,如图23和图24所示。

        清单2.用于文档加密映射的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']
        图23.加密SAML断言
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第22张图片
        图24.用于加密的文档加密映射
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第23张图片
      5. 动作:标志

        该操作对加密的SAML断言XML进行签名(图25)。 使用清单3中的以下XPATH。

        清单3. SAML断言XML中的XPATH需要签名
        /*[namespace-uri()='urn:oasis:names:tc:SAML:2.0:protocol' and local-name()='Response']
        图25. Sign SAML断言XML
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第24张图片
      6. 行动:变形(图26)

        身份验证成功后,此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。

        图26. XSLT转换以生成HTML响应
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第25张图片
        清单4. XSLT [SSO-Generate-HTML-Idp.xsl]生成HTML页面
        
        
         
         
         
         
         
         
         
         
         
         Login to Salesforce
         
         
         
         
         
         
         
         
        Salesforce Login

        Welcome

        Clicking Submit button will redirect you to Salesforce home page

        Please contact [email protected] if you experience any issues during Salesforce Login



      7. 行动:高级[设置变量](见图27)
        变量名称: var://service/mpgw/skip-backside
        变量分配: 1
        图27.跳过后端路由的高级操作
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第26张图片
      8. 行动:结果(图28)
        图28.结果操作
        sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第27张图片

步骤9:创建AAA策略

  1. 创建AAA策略以对用户的凭据进行身份验证,并通过成功的身份验证生成SAML声明。 本教程说明的示例使用基本的HTTP身份验证方法,并使用清单5中所示的DataPower AAA信息文件验证用户的凭据。但是,您可以根据组织的标准实施适当的身份验证方法。 图29至32描述了此AAA策略配置的详细信息。 如果您已经实现了该系列的第1部分中所示的示例,则可以直接使用相同的AAA策略,而无需进行任何更改。
    图29. AAA操作
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第28张图片
    图30. AAA策略–从请求中提取身份
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第29张图片
    图31. AAA策略–验证用户
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第30张图片
    图32. AAA策略–授权请求
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第31张图片
  2. 配置AAA访问控制策略,以在身份验证成功后生成SAML声明响应。 图33显示了启用SAML声明的AAA访问控制策略页面。 确保使用从Salesforce SSO设置( 步骤4 )配置的相同SAML颁发者值(例如https://datapowersso.ibm.com/)。 另外,在AAA Access Control Policy页面的SAML Audience字段中,从Salesforce SSO设置( 步骤4 )设置Entity ID值。 将Salesforce登录URL用于SAML收件人和响应目标字段。 创建一个SAML属性定义,如图34所示。
    图33. AAA策略-生成SAML断言响应
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第32张图片
    图34. AAA策略– SAML属性
    sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第33张图片
    清单5.示例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
     
    

步骤10:测试单点登录

在Web浏览器中输入您的身份提供者(DataPower)SSO登录URL(例如, https:///sso/salesforce/login ),如图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 )。

图35.用户通过Web浏览器尝试SSO登录
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第34张图片
图36.成功认证后的SSO重定向(HTTP POST绑定)页面
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第35张图片

SAML断言包含来自身份提供者的联合身份验证ID(例如[email protected] )。 Salesforce使用SAML断言中针对DataPower证书的嵌入式签名来验证消息的完整性,该证书已在SSO设置过程中上载。 成功进行签名验证后,它将解密加密的断言并处理SAML断言语句,提取并验证联合身份验证ID,并在成功验证过程后重定向到登录页面。 图37显示了成功登录SSO后的示例Salesforce登录页面。

图37.成功登录SSO后的销售目标页面
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第36张图片

步骤11:调试和故障排除指南

我们假设您熟悉常见的DataPower调试和故障排除技术,因此本教程将主要侧重于Salesforce。

您可以使用Google Chrome中的 Developer Tools捕获base64编码的SAML断言数据,如图38和图39所示。尽管您可以从HTML页面源获取此数据,但是使用Google ChromeInternet Explorer中的 Developer Tools可以帮助您分析HTTP事件,包括其请求/响应标头和数据结构。 您可以使用任何在线工具(例如http://www.string-functions.com/base64decode.aspx )解码(以64为基数)此数据,以获取SAML断言XML。 清单6显示了此示例生成的样本加密并签名的SAML断言XML。

图38.在Google Chrome中启动开发人员工具
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第37张图片
图39.从HTML捕获base-64编码的SAML断言XML
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第38张图片
清单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断言验证。

图40.在Salesforce中启动SAML断言验证器框架
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第39张图片
图41.将base-64编码的SAML断言输入到Salesforce SAML Validator中
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第40张图片
图42.在Salesforce SAML验证器中成功的SAML断言验证
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第41张图片
图43.带有过期时间戳的无效SAML断言
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第42张图片

在测试SSO登录时,您可以从Salesforce管理员的单独登录中查看Force.com上的登录历史记录。 图44显示了Force.com网站上的登录历史记录页面,该页面可以帮助您解决SSO登录失败。

图44. Force.com的登录历史记录页面
sso saml_身份提供者使用加密并签名的SAML断言启动SSO_第43张图片

结论

Salesforce用户较少的组织可能不需要此单点登录解决方案,因为他们可以继续使用标准的Salesforce登录过程。 但是,拥有大量Salesforce用户的组织可以通过为其所有内部应用程序以及基于云和外部应用程序(Force.com)实施基于DataPower的SSO基础结构来利用此解决方案,该应用程序使用外部支持联邦身份管理SSO身份提供者。

要继续本系列,请参阅以下教程:

  • 第1部分:身份提供者使用签名的SAML断言启动SSO
  • 第3部分:服务提供商使用已签名的SAML断言启动SSO
  • 第4部分:服务提供商使用加密并签名的SAML断言启动SSO

翻译自: https://www.ibm.com/developerworks/websphere/library/techarticles/1505_pal2/1505_pal2.html

sso saml

你可能感兴趣的:(sso saml_身份提供者使用加密并签名的SAML断言启动SSO)