You need to enable JavaScript to run this app.
导航

用户SSO的SAML响应

最近更新时间2023.08.18 09:33:45

首次发布时间2023.08.17 23:07:24

本文介绍完成基于SAML2.0的用户SSO时,火山引擎对于在IDP处进行SAML响应(SAML Response)参数配置基本要求。

SSO基本流程

SSO基本流程请参考:用户SSO概述
SAML响应在用户登录IDP后、请求登录火山引擎时,由IDP向火山引擎发送。火山引擎通过验证SAML响应中的签名、解析SAML响应中传递的当前用户身份信息,为用户实现安全快捷的SAML SSO登录。

SAML响应参数要求

SAML相应的基本格式示例如下,请确保您的SAML响应与下方示例格式相同、无元素缺失。

<samlp:Response>
    <saml:Issuer>${Issuer}</saml:Issuer>
    <ds:Signature>
        ...
    </ds:Signature>
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"></samlp:StatusCode>
    </samlp:Status>
    <saml:Assertion>
        <saml:Issuer>...</saml:Issuer>
        <ds:Signature>
            ...
        </ds:Signature>
        <saml:Subject>
            <saml:NameID>${NameID}</saml:NameID>
            <saml:SubjectConfirmation>
                ...
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Conditions>
            <saml:AudienceRestriction>
                <saml:Audience>${Audience}</saml:Audience>
            </saml:AudienceRestriction>
        </saml:Conditions>
        <saml:AuthnStatement>
            ...
        </saml:AuthnStatement>
    </saml:Assertion>
</samlp:Response>
元素说明
IssuerIssuer的值必须与您在火山引擎控制台设置中上传的用户SSOSAML元数据文件中的EntityID元素取值相同,火山引擎需要验证该字段来保证请求登录的身份提供商为已经完成信任配置的身份提供商。
Signature基于协议规范,火山引擎要求SAML响应必须签名,并能够基于IDP元数据文件中的安全证书信息验签通过,以确保响应内容安全可信。请在Response示例的对应位置进行签名,Signature必须包含签名值、签名算法等信息。

Subject

Subject必须包含以下元素:

  1. 有且仅有一个NameID元素,用于指定需要登录的火山引擎IAM子用户。NameID取值需要为IAM子用户的用户名,请确保对应用户存在。

  2. SubjectConfirmation元素中,以下字段需要包含唯一有效的取值:

    1. NotOnOrAfter:用于指定断言有效期,UTC时间。

    2. Recipient:火山引擎需要基于Recipient验证自身确实为当前响应的接收方,其取值必须为https://signin.volcengine.com/saml/sso

Subject元素示例:

<saml:Subject>
   <saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">user1</saml:NameID>
   <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <saml:SubjectConfirmationData NotOnOrAfter="2022-11-28T12:26:14Z" Recipient="https://signin.volcengine.com/saml/sso"></saml:SubjectConfirmationData>
   </saml:SubjectConfirmation>
  </saml:Subject>

Conditions

在Conditions元素中,必须包含一个AudienceRestriction元素,其中需要有包含唯一有效的Audience元素,用于指定响应的受众。其必须包含一个固定的值,且与火山引擎提供的用户SSO SAML元数据文件中的EntityID取值一致,格式为https://signin.volcengine.com/${accountId}/saml_user/sso
Conditions元素的示例:

<saml:Conditions NotBefore="2022-11-28T12:20:14Z" NotOnOrAfter="2022-11-28T12:26:14Z">
 <saml:AudienceRestriction>
  <saml:Audience>https://signin.volcengine.com/${accountId}/saml_user/sso</saml:Audience>
 </saml:AudienceRestriction>
</saml:Conditions>

下一步操作

你可以尝试登录到火山引擎,具体登录方式请参考:单点登录的多种登录方式