Loading
识别您的用户并管理访问
目录
选择筛选器

          没有结果
          没有结果
          以下是一些搜索提示

          检查关键字的拼写。
          使用更普遍的搜索词。
          选择更少的筛选器,并扩大搜索范围。

          搜索所有 Salesforce 帮助
          SAML 单点登录流

          SAML 单点登录流

          当您使用安全声明标记语言 (SAML) 设置单点登录 (SSO) 时,您可以从服务提供商或身份提供商启动登录。服务提供商发起的登录和身份提供商发起的登录使用不同的流,但都会导致用户登录到服务提供商。

          所需的 Edition

          适用于 Salesforce Classic 和 Lightning Experience
          适用于:DeveloperEnterprisePerformanceUnlimitedDatabase.com Edition
          所需用户权限
          定义和修改身份提供商和服务提供商: 自定义应用程序

          SAML 安全性

          要了解这些 SSO 流的工作方式,了解提供商如何使用 SAML 交换安全信息非常重要。

          提示
          提示 要复习 SSO 词汇,请查看 Salesforce 帮助中的单点登录术语

          对于这两种 SAML SSO 流变体,身份提供商对用户进行身份验证,并确认用户是他们所说的那个人。在身份提供商对用户进行身份验证后,它使用 SAML 响应来告诉服务提供商用户是谁以及允许他们做什么。它将有关用户身份的信息存储在响应的特定部分,称为 SAML 声明。

          为了表示服务提供商可以Trust SAML 响应,身份提供商签署了响应正文、声明或两者。响应正文或声明是否签名取决于身份提供商。

          • 如果您将 Salesforce 用作身份提供商,Salesforce 会签署 SAML 响应正文和声明。
          • 如果您使用第三方身份提供商,请咨询您的身份提供商,了解他们如何签署 SAML 响应。

          当服务提供商收到 SAML 响应时,它会验证此签名。签名的验证方式取决于服务提供商。

          • 如果您将 Salesforce 用作身份提供商,请咨询您的服务提供商,了解他们如何验证签名。因为 Salesforce 签署响应正文和声明,所以它兼容各种服务提供商。
          • 如果您将 Salesforce 用作服务提供商,Salesforce 可以在响应正文或声明中验证签名。Salesforce 首先在响应正文中查找签名。如果响应签名丢失或无效,Salesforce 会尝试验证 SAML 声明中的签名。即使攻击者从用户的浏览器中捕获 SAML 响应并篡改响应正文,只要声明签名完整,SSO 登录就不会有风险。

            如果您的身份提供商支持加密的 SAML 声明以获得额外安全性,您还可以配置 Salesforce 来解密和验证这些声明

          服务提供商发起的 SAML 流

          在服务提供商发起的流中,服务提供商通过向身份提供商发出 SAML 请求来开始登录过程。以下是这个流的工作原理。

          1. 用户请求安全会话来访问服务提供商中的受保护资源。例如,用户单击链接填写服务提供商的表单。但是表单是受保护的资源,这意味着用户只能在登录后才能访问它。
          2. 服务提供商通过向身份提供商发送 SAML 请求来启动登录,要求它对用户进行身份验证。
          3. 身份提供商将用户发送到登录页面。
          4. 用户输入其身份提供商登录凭据,身份提供商对用户进行身份验证。
          5. 身份提供商现在知道用户是谁,所以它向服务提供商发送加密签名的 SAML 响应。SAML 响应包含 SAML 声明,它告诉服务提供商用户是谁。
          6. 服务提供商验证 SAML 响应中的签名并识别用户。
          7. 用户现在登录到服务提供商,可以访问受保护的资源。

          身份提供商发起的 SAML 流

          在身份提供商发起的登录流中,SAML 请求是不必要的,因为身份提供商用 SAML 响应启动流。身份提供商发起的流是服务提供商发起的流的缩短版本。以下是这个流的工作原理。

          1. 用户登录身份提供商。
          2. 用户单击按钮或链接访问服务提供商。例如,用户在 Salesforce 组织的应用程序启动程序页面上单击应用程序。
          3. 身份提供商通过向服务提供商发送加密签名的 SAML 响应来启动登录。SAML 响应包含 SAML 声明,它告诉服务提供商用户是谁。
          4. 服务提供商验证 SAML 响应中的签名并识别用户。
          5. 用户现在登录到服务提供商。

          SAML 请求和响应示例

          下面是一个 SAML 请求的示例。在服务提供商发起的流中,服务提供商发送 SAML 请求来启动登录过程。

          <samlp:AuthnRequest ID="bndkmeemcaamihajeloilkagfdliilbhjjnmlmfo" Version="2.0" 
             IssueInstant="2010-05-24T22:57:19Z" 
             ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
             ProviderName="google.com" IsPassive="false" 
             AssertionConsumerServiceURL="https://www.google.com/a/resp.info/acs">
             <saml:Issuer>google.com</saml:Issuer>
             <samlp:NameIDPolicy AllowCreate="true" 
             Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/>
          </samlp:AuthnRequest>

          下面是一个 SAML 响应的示例。在服务提供商发起的流中,身份提供商在服务提供商发送 SAML 请求后发送 SAML 响应。在身份提供商发起的流中,身份提供商通过发送 SAML 响应来启动流。

          在此示例中,响应正文已签名,但声明本身未签名。

          <samlp:Response Destination="https://MyDomainName.my.salesforce.com?so=00Dx00000000001"
            ID="_0f551f9288c8b76f21c3d4d15c9cd1df1290476801091"
            InResponseTo="_2INwHuINDJTvjo8ohcM.Fpw_uLukYi0WArVx2IJD569kZYL
              osBwuiaSbzzxOPQjDtfw52tJB10VfgPW2p5g7Nlv5k1QDzR0EJYGgn0d0z8
              CIiUOY31YBdk7gwEkTygiK_lb46IO1fzBFoaRTzwvf1JN4qnkGttw3J6L4b
              opRI8hSQmCumM_Cvn3DHZVN.KtrzzOAflcMFSCY.bj1wvruSGQCooTRSSQ"
            IssueInstant="2010-11-23T01:46:41.091Z" Version="2.0">
          <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
          >https://myidp.my.salesforce.com</saml:Issuer>
          −
          <ds:Signature>
          −
          <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="#_0f551f9288c8b76f21c3d4d15c9cd1df1290476801091">
          −
          <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-c14n#">
          <ec:InclusiveNamespaces PrefixList="ds saml samlp xs"/>
          </ds:Transform>
          </ds:Transforms>
          <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
          <ds:DigestValue>4NVTbQ2WavD+ZBiyQ7ufc8EhtZw=</ds:DigestValue>
          </ds:Reference>
          </ds:SignedInfo>
          −
          <ds:SignatureValue>
          
          ExampleSamlSignature</ds:SignatureValue>
          −
          <ds:KeyInfo>
          −
          <ds:X509Data>
          −
          <ds:X509Certificate>ExampleX509 Certificate</ds:X509Certificate>
          </ds:X509Data>
          </ds:KeyInfo>
          </ds:Signature>
          −
          <samlp:Status>
          <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
          </samlp:Status>
          −
          <saml:Assertion ID="_e700bf9b25a5aebdb9495fe40332ef081290476801092" IssueInstant="2010-11-23T01:46:41.092Z" Version="2.0">
          <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">https://exampleidp.com</saml:Issuer>
          −
          <saml:Subject>
          <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">exampleuser@salesforce.com</saml:NameID>
          −
          <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
          <saml:SubjectConfirmationData NotOnOrAfter="2010-11-23T01:51:41.093Z" Recipient="https://MyDomainName.my.salesforce.com?so=00Dx00000000001"/>
          </saml:SubjectConfirmation>
          </saml:Subject>
          −
          <saml:Conditions NotBefore="2010-11-23T01:46:41.093Z" NotOnOrAfter="2010-11-23T01:51:41.093Z">
          −
          <saml:AudienceRestriction>
          <saml:Audience>https://exampleserviceprovider.com</saml:Audience>
          </saml:AudienceRestriction>
          </saml:Conditions>
          −
          <saml:AuthnStatement AuthnInstant="2010-11-23T01:46:41.092Z">
          −
          <saml:AuthnContext>
          <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
          </saml:AuthnContext>
          </saml:AuthnStatement>
          −
          <saml:AttributeStatement>
          −
          <saml:Attribute Name="userId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
          <saml:AttributeValue xsi:type="xs:anyType">005D0000001Ayzh</saml:AttributeValue>
          </saml:Attribute>
          −
          <saml:Attribute Name="username" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
          <saml:AttributeValue xsi:type="xs:anyType">admin@identity.org</saml:AttributeValue>
          </saml:Attribute>
          −
          <saml:Attribute Name="email" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
          <saml:AttributeValue xsi:type="xs:anyType">exampleuser@salesforce.com</saml:AttributeValue>
          </saml:Attribute>
          −
          <saml:Attribute Name="is_portal_user" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
          <saml:AttributeValue xsi:type="xs:anyType">false</saml:AttributeValue>
          </saml:Attribute>
          </saml:AttributeStatement>
          </saml:Assertion>
          </samlp:Response>
           
          正在加载
          Salesforce Help | Article