No SSO baseado em função, a resposta e a asserção SAML do seu IdP devem conter elementos específicos para que o Alibaba Cloud autentique os usuários.
Informações de fundo
Em um fluxo de SSO baseado em SAML 2.0, após o login de um usuário corporativo no IdP, o IdP gera uma resposta de autenticação com uma asserção SAML conforme o binding HTTP-POST do SAML 2.0. O navegador ou aplicativo encaminha automaticamente essa resposta ao Alibaba Cloud, que utiliza a asserção para verifique o status de login do usuário e extrair o assunto do login. A asserção deve incluir todos os elementos exigidos pelo Alibaba Cloud; caso contrário, o SSO falhará.
Resposta SAML
O IdP deve enviar uma resposta SAML ao Alibaba Cloud contendo todos os elementos obrigatórios listados abaixo. A ausência de qualquer elemento causará falha no SSO.
<saml2p:Response>
<saml2:Issuer>...</saml2:Issuer>
<saml2p:Status>
...
</saml2p:Status>
<saml2:Assertion>
<saml2:Issuer>...</saml2:Issuer>
<ds:Signature>
...
</ds:Signature>
<saml2:Subject>
<saml2:NameID>${NameID}</saml2:NameID>
<saml2:SubjectConfirmation>
...
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions>
<saml2:AudienceRestriction>
<saml2:Audience>${Audience}</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement>
...
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName">
...
</saml2:Attribute>
<saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role">
...
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>
Elementos da asserção SAML
-
Standard SAML 2.0 elements
Estes elementos seguem a especificação do protocolo SAML 2.0.
Elemento
Descrição
IssuerO valor de
Issuerdeve corresponder aoEntityIDno arquivo de metadados do IdP carregado durante a criação da entidade IdP no Alibaba Cloud.SignatureO Alibaba Cloud exige uma asserção SAML assinada para evitar adulterações. O elemento
Signaturee seus elementos filhos devem incluir o valor da assinatura e o algoritmo de assinatura.SubjectO elemento
Subjectdeve conter os seguintes elementos:-
Exatamente um elemento
NameID. Defina o valor deNameIDconforme o protocolo SAML 2.0, geralmente como o identificador do usuário no IdP. O Alibaba Cloud não utiliza esse valor para identificar o assunto do login. -
Exatamente um elemento
SubjectConfirmationcontendo um elementoSubjectConfirmationData. O elementoSubjectConfirmationDatarequer estes atributos:-
NotOnOrAfter: tempo de expiração da asserção SAML. -
Recipient: o Alibaba Cloud usa este atributo para verifique se a asserção é destinada ao Alibaba Cloud. O valor deve serhttps://signin.alibabacloud.com/saml-role/sso.
Exemplo de elemento
Subject:<Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">administrator</NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData NotOnOrAfter="2019-01-01T00:01:00.000Z" Recipient="https://signin.alibabacloud.com/saml-role/sso"/> </SubjectConfirmation> </Subject> -
ConditionsO elemento
Conditionsdeve incluir um elementoAudienceRestrictioncom pelo menos um elementoAudience. Um dos elementosAudiencedeve ter o valorurn:alibaba:cloudcomputing:international.NotaSe você configure vários aplicativos SAML no seu IdP apontando para o RAM do Alibaba Cloud e usar Entity IDs com parâmetros (por exemplo,
urn:alibaba:cloudcomputing:international#abc.123), o elementoAudiencedeve corresponder exatamente ao Entity ID, incluindo o sufixo do parâmetro.Exemplo de elemento
Conditions:<Conditions> <AudienceRestriction> <Audience>urn:alibaba:cloudcomputing:international</Audience> </AudienceRestriction> </Conditions> -
-
Alibaba Cloud custom elements
O elemento
AttributeStatementdeve incluir os seguintes elementosAttributeespecíficos do Alibaba Cloud:-
Um elemento
Attributecujo atributoNamesejahttps://www.aliyun.com/SAML-Role/Attributes/RoleEste elemento é obrigatório e aceita múltiplos valores. Cada
AttributeValueespecifique uma função que o usuário pode assumir, formatada como o ARN da função RAM e o ARN do IdP separados por vírgula (,). Obtenha ambos os ARNs no console:ARN da função RAM: na página Roles, clique em no nome da função RAM e localize o ARN na seção Basic Information.
ARN do IdP: na página SSO, na aba Role-based SSO, clique em no nome do IdP e localize o ARN na seção Details.
NotaSe houver múltiplos valores, os usuários que fizerem login no console poderão selecione uma função na lista exibida.
Exemplo de elemento
Attributede Role:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role"> <AttributeValue>acs:ram::$account_id:role/role1,acs:ram::$account_id:saml-provider/provider1</AttributeValue> <AttributeValue>acs:ram::$account_id:role/role2,acs:ram::$account_id:saml-provider/provider1</AttributeValue> </Attribute>Nota$account_idé o ID da conta Alibaba Cloud proprietária das funções RAM e do IdP. -
Um elemento
Attributecujo atributoNamesejahttps://www.aliyun.com/SAML-Role/Attributes/RoleSessionNameEste elemento é obrigatório e aceita apenas um valor. O
AttributeValueaparece nas informações do usuário no console e nos logs do ActionTrail. Utilize umRoleSessionNameexclusivo por usuário, como um ID de funcionário ou endereço de e-mail, para distinguir usuários que assumem a mesma função.O
AttributeValuedeve ter entre 2 e 64 caracteres e pode conter letras, dígitos e os seguintes caracteres especiais:-_.@=.Exemplo de elemento
Attributede RoleSessionName:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName"> <AttributeValue>user_id</AttributeValue> </Attribute> -
Um elemento
Attributecujo atributoNamesejahttps://www.aliyun.com/SAML-Role/Attributes/SessionDurationEste elemento é opcional e aceita no máximo um valor. O
AttributeValueé um número inteiro que representa a duração da sessão em segundos. O mínimo é 900, e o máximo não pode exceder a duração máxima da sessão configurada para a função RAM especifique no atributoRole.Exemplo de elemento
Attributede SessionDuration:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>
-
-
Session duration
Para login no console, o valor
SessionDurationda asserção SAML defina a duração da sessão. Se o elementoAuthnStatementtambém definaSessionNotOnOrAfter, prevalecerá o menor valor entreSessionDurationeSessionNotOnOrAfter. Caso nenhum seja especifique, a duração da sessão assumirá por padrão a configuração Maximum Session Duration da função, limitada pela configuração Login session duration. Gerencie RAM user security settings. Defina the maximum session duration for a RAM role.Para login programático, se você especifique
DurationSecondsao chamar AssumeRoleWithSAML e também definaSessionNotOnOrAfterno elementoAuthnStatement, a validade do token STS será o menor valor entreDurationSecondseSessionNotOnOrAfter. Caso nenhum seja especifique, a validade assumirá por padrão 3.600 segundos.