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 Windows Server 2012 R2.
Informações de fundo
Sua empresa usa o Active Directory (AD) para gerenciar funcionários e o AD FS para federar 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>é o ID da Account1 ou da Account2. Alice pertence a quatro grupos do AD no total: Admin e Reader para cada conta.A configuração do AD neste tópico serve apenas como orientação. A Alibaba Cloud não fornece suporte para configuração do Microsoft AD. Para configurar o AD FS, consulte Criar um domínio AD em uma instância Windows.
Como funciona
A figura a seguir ilustra o fluxo de logon no console.

Após configurar a federação, funcionários como Alice podem fazer logon no console da Alibaba Cloud via SSO. Consulte Visão geral do SSO de função baseado em SAML.
Os usuários se autenticam pelo sistema de identidade corporativo sem precisar de credenciais da Alibaba Cloud.
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 Configurar definições SAML para SSO baseado em função no SP da Alibaba Cloud.
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 criado anteriormente. Conceda as políticas
AdministratorAccesseReadOnlyAccessàs duas funções, respectivamente. 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 confiarão 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 é chamado de relying party. Configure a Alibaba Cloud como uma relying party no AD FS:
No Server Manager, clique em Tools e selecione AD FS Management.
-
No console de gerenciamento do 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 com 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.
NotaRegras 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. Para 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.
Após concluir a configuração, o AD FS envia o
NameIDno formato exigido:<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 sua necessidade.
Para Outgoing claim type, insira
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName.
Após concluir a configuração, o AD FS envia o
RoleSessionNameno formato exigido:<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 como um IdP SAML. Neste exemplo, o nome é ADFS.
Esta 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.
Após concluir a configuração, o IdP retorna a asserção SAML no formato exigido:
<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 não estiver disponível, ative-a executando o seguinte comando do PowerShell:Set-AdfsProperties -EnableIdpInitiatedSignonPage $True.Na página de logon 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, fará logon diretamente sem precisar selecionar uma função.
Caso pertença 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.