Configure o SSO baseado em função entre o AD FS (IdP) e a Alibaba Cloud (SP) usando um ambiente AD FS implantado em uma instância ECS com Windows Server 2012 R2.
Informações de contexto
Sua empresa usa o Active Directory (AD) para gerenciar funcionários e o AD FS para federação com aplicativos corporativos, incluindo a Alibaba Cloud. Um administrador do AD controla o acesso dos funcionários às contas da Alibaba Cloud por meio de associações a grupos de usuários. Neste exemplo, sua empresa tem duas contas da Alibaba Cloud (Account1 e Account2) com permissões de Admin e Reader. Alice pertence aos grupos do AD Aliyun-<account-id>-ADFS-Admin e Aliyun-<account-id>-ADFS-Reader. O objetivo é ativar o SSO baseado em função para que ela acesse ambas as contas.
<account-id>representa o ID da Account1 ou da Account2. No total, Alice pertence a quatro grupos do AD: Admin e Reader para cada conta.A configuração do AD neste tópico serve apenas como orientação. A Alibaba Cloud não oferece suporte para configurações do Microsoft AD. Para configurar o AD FS, consulte Build an AD domain on a Windows instance.
Como funciona
A figura a seguir ilustra o fluxo de logon.

Após configurar a federação, funcionários como Alice podem fazer login no console da Alibaba Cloud via SSO, sem necessidade de credenciais separadas. Consulte Overview of SAML-based role SSO.
Etapa 1: Configurar a Alibaba Cloud para confiar no AD FS
-
No console RAM, crie um provedor de identidade (IdP) chamado ADFS e forneça seus metadados. A URL de metadados do AD FS é
https://<ADFS-server>/federationmetadata/2007-06/federationmetadata.xml.NotaSubstitua
<ADFS-server>pelo nome de domínio ou endereço IP do seu servidor AD FS.Consulte Configure SAML settings for role-based SSO on the Alibaba Cloud SP.
NotaSe o arquivo de metadados exceder o limite de tamanho, reduza-o excluindo todo o conteúdo dentro das tags
<fed:ClaimTypesRequested>e<fed:ClaimTypesOffered>. -
Na conta da Alibaba Cloud Account1, crie duas funções RAM (ADFS-Admin e ADFS-Reader) que confiem em um IdP. Selecione o IdP ADFS recém-criado. Conceda as políticas
AdministratorAccesseReadOnlyAccessàs duas funções, respectivamente.Consulte Create a RAM role for a trusted IdP.
Repita esse processo na Account2 para criar um IdP e funções RAM com os mesmos nomes (ADFS, ADFS-Admin e ADFS-Reader). Conceda as políticas
AdministratorAccesseReadOnlyAccessàs funções, respectivamente.
Após essa configuração, suas contas da Alibaba Cloud passam a confiar na identidade do usuário e nas informações de função presentes nas solicitações SAML do AD FS.
Etapa 2: Configurar o AD FS para confiar na Alibaba Cloud
No AD FS, um SP SAML é denominado relying party. Configure a Alibaba Cloud como uma relying party no AD FS:
No Server Manager, clique em no menu Tools e selecione AD FS Management.
-
No console de gerenciamento AD FS, inicie o assistente Add Relying Party Trust.
Na página Welcome, selecione claims-aware e clique em Start.
-
Forneça os metadados do SP SAML para o SSO baseado em função da Alibaba Cloud. A URL dos metadados é
https://signin.alibabacloud.com/saml-role/sp-metadata.xml.Na página Select Data Source, selecione Import data about the relying party published online or on a local network. Na caixa de texto Federation metadata address (host name or URL), insira a URL dos metadados e clique em Next.
Conclua o assistente mantendo as configurações padrão.
Etapa 3: Configurar atributos de asserção SAML
O AD FS deve incluir os atributos NameID, Role e RoleSessionName na asserção SAML. Configure-os usando regras de transformação de emissão.
-
NameIDMapeie o nome da conta Windows no AD para o atributo
NameID:Clique com o botão direito na relying party e selecione Edit Claim Rules.
-
Adicione uma issuance transform rule.
NotaAs regras de transformação de emissão mapeiam atributos de usuário para atributos de asserção SAML. Adicione uma regra para emitir o nome da conta Windows do AD como
NameID. Em Claim rule template, selecione Transform an Incoming Claim e clique em Next.
-
Configure a regra com as seguintes definições e clique em Finish.
Claim rule name: NameID
Incoming claim type: Windows account name
Outgoing claim type: Name ID
Outgoing name ID format: Persistent Identifier
Selecione Pass through all claim values.
O AD FS envia o
NameIDno seguinte formato:<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> YourDomain\rolessouser </NameID>
-
RoleSessionNameMapeie o User Principal Name (UPN) no AD para o atributo
RoleSessionName:Clique em Add Rule.
Na lista Claim rule template, selecione Send LDAP Attributes as Claims e clique em Next.
-
Configure a regra com as seguintes definições e clique em Finish.
Claim rule name: RoleSessionName
Attribute store: Active Directory
Para LDAP Attribute, selecione User-Principal-Name. Você também pode selecionar outros atributos, como e-mail, conforme necessário.
Em Outgoing claim type, insira
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName.
O AD FS envia o
RoleSessionNameno seguinte formato:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName"> <AttributeValue>rolessouser@example.com<AttributeValue> </Attribute> -
RoleTransforme as associações a grupos do AD em nomes de funções da Alibaba Cloud usando regras personalizadas:
Clique em Add Rule.
Na lista Claim rule template, selecione Send Claims Using a Custom Rule e clique em Next.
-
Configure a regra com as seguintes definições e clique em Finish.
Claim rule name: Get AD Groups
-
Custom rule:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory",types = ("http://temp/variable"), query = ";tokenGroups;{0}", param =c.Value);
NotaEsta regra recupera as associações a grupos do AD e as armazena em http://temp/variable.
Clique em Add Rule.
-
Repita as etapas anteriores para adicionar outra regra personalizada e clique em Finish.
Claim rule name: Role
-
Custom rule:
c:[Type == "http://temp/variable", Value =~ "(?i)^Aliyun-([\d]+)"] => issue(Type = "https://www.aliyun.com/SAML-Role/Attributes/Role",Value = RegExReplace(c.Value, "Aliyun-([\d]+)-(.+)", "acs:ram::$1:role/$2,acs:ram::$1:saml-provider/<provider-name>"));NotaSubstitua
<provider-name>pelo nome do provedor de identidade criado na Etapa 1: Configurar a Alibaba Cloud para confiar no AD FS. Neste exemplo, o nome é ADFS.
Essa regra mapeia grupos do AD correspondentes a Aliyun-<account-id>-ADFS-Admin ou Aliyun-<account-id>-ADFS-Reader para as funções RAM correspondentes na Alibaba Cloud.
O IdP retorna a asserção SAML no seguinte formato:
<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role"> <AttributeValue>acs:ram::<account-id>:role/ADFS-Admin,acs:ram::<account-id>:saml-provider/<provider-name></AttributeValue> </Attribute>
Verificar os resultados
-
Acesse o portal de SSO do AD FS em
https://<ADFS-server>/adfs/ls/IdpInitiatedSignOn.aspx, selecione o aplicativo da Alibaba Cloud e insira seu nome de usuário e senha.NotaSubstitua
<ADFS-server>pelo nome de domínio ou endereço IP do seu servidor AD FS. Se a página estiver indisponível, ative-a executando o seguinte comando do PowerShell:Set-AdfsProperties -EnableIdpInitiatedSignonPage $True.Na página de login do AD FS, você verá a mensagem "You are not signed in" com duas opções: Sign in to this site e Sign in to one of the following sites. Selecione Sign in to one of the following sites, escolha um site de destino como Aliyun na lista suspensa e clique em Sign in.
-
Na página de SSO baseado em função da Alibaba Cloud, selecione uma função a ser assumida e clique em Log On.
NotaSe você pertencer a apenas um grupo do AD mapeado, o logon ocorrerá diretamente, sem seleção de função.
Se você pertencer a vários grupos do AD mapeados, uma página de seleção de funções listará as contas e funções disponíveis da Alibaba Cloud (ADFS-Reader, ADFS-Admin). Selecione a conta e a função desejadas e clique em Log On.