说明
为了提供更好的服务,火山引擎进行了SAML SSO的升级改版。如您在2023-08-17前已经接入火山引擎的SAML SSO,您可以继续使用IAM控制台上提供的旧版本SP元数据,并通过原身份提供商完成SSO登录,不需进行任何改动。
如您是2023-08-17之后准备接入SAML SSO的客户,请您参考用户SSO概述和角色SSO概述进行新版本的配置,火山引擎已为您全面升级SAML SSO服务。
此文档继续为您提供旧版本的SAML相应配置示例。更多问题,请提工单联系我们。
按照SAML 2.0协议标准,需要IDP侧发送到火山引擎进行解析的SAML Response示例如下:
<samlp:Response IssueInstant="2022-01-01T00:00:00.000Z"> <saml: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:SubjectConfirmationData NotOnOrAfter="2022-01-01T00:00:00.000Z" Recipient="${Recipient}"></saml:SubjectConfirmationData> </saml:SubjectConfirmation> </saml:Subject> <saml:Conditions> <saml:AudienceRestriction> <saml:Audience>{$Audience}</saml:Audience> </saml:AudienceRestriction> </saml:Conditions> <saml:AuthnStatement> ... </saml:AuthnStatement> <saml:AttributeStatement> <saml:Attribute Name="https://www.volcengine.com/SAML/Attributes/Identity"> <saml:AttributeValue>trn:iam::${AccountID}:role/${RoleName},trn:iam::${AccountID}:saml-provider/${SAMLProviderName}</saml:AttributeValue> <saml:AttributeValue>trn:iam::${AccountID}:user/${UserName},trn:iam::${AccountID}:saml-provider/${SAMLProviderName}</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="https://www.volcengine.com/SAML/Attributes/SessionName"> <saml:AttributeValue>${SessionName}</saml:AttributeValue> </saml:Attribute> <saml:Attribute Name="https://www.volcengine.com/SAML/Attributes/SessionDuration"> <saml:AttributeValue>${SessionDuration}</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> </samlp:Response>
火山引擎对SAMLResponse字段要求详细如下(在主流IdP处必须完成的基本配置项加粗展示):
字段 | 说明 |
---|---|
IssueInstant | SAMLResponse生成的UTC时间 |
Issuer | Issuer的值需要与火山引擎的IDP Metadata中的EntityID一致 |
Signature | 出于安全目的,必须在SAMLResponse进行签名,在SP侧进行验签。Signature中必须包含签名值、签名算法等信息。 |
Subject |
|
Audience | 该字段用于指定断言受众,必须包含一个固定的值:https://signin.volcengine.com/saml/sso |
AttributeStatement | SAML断言中必须包含一些自定义属性用于向火山引擎传递要进行SSO登录的身份、会话名,会话时长等信息。自定义属性配置时需要配置属性名称和属性值,如下:
AttributeStatement元素的示例:
|
请注意,火山引擎支持两个方式进行SSO身份映射,两个方式有不同优先级:
火山引擎推荐使用AttributeStatement中的身份属性进行身份映射。
a. 使用该方式,支持配置多条身份属性,即支持一个IDP身份SSO到多个火山引擎账号上的多个身份(用户/角色),且同时支持角色SSO和用户SSO;
b. 使用该方式,则对IDP侧的用户字段无要求,火山引擎也不会读取您的IDP中任何的用户信息。
火山引擎同时支持使用NameID进行身份映射。
a. 使用该方式,仅支持用户SSO,即只能登录到火山引擎的IAM用户上。同时一个IDP身份仅支持登录到一个火山引擎账号上的一个IAM用户上;
b. 使用该方式,适用于“通过IDP的用户名等字段匹配IAM用户名的字段来完成身份映射”的场景,则对IDP的字段有要求,需要保证用于映射到IAM用户名的IDP字段在IDP唯一且不随会话改变。