Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Autenticação SAML no Amazon Workspaces usando o Auth0 como provedor de identidade

By Manak WadhwaNov 23, 20236 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

As empresas estão sempre em busca de formas de oferecer uma autenticação mais segura e uma experiência melhor para o usuário. Além disso, precisam centralizar a autenticação e a autorização dos usuários sem replicar credenciais e permissões em outro provedor de identidade (IDP).

Neste blog, vamos mostrar como configurar o Auth0 como provedor SAML 2.0 federado com um Active Directory corporativo já existente, atuando como Single Sign-On para transmitir o Amazon Workspaces.

A plataforma de identidade e gerenciamento da Auth0 oferece mais controle, segurança reforçada e facilidade de uso. Ela entrega Single Sign-On (SSO) por diferentes caminhos, como federação corporativa, login social ou autenticação tradicional por usuário e senha. Ou seja, seus usuários fazem login uma única vez e ganham acesso a todas as aplicações disponíveis para eles.

Arquitetura em alto nível

Veja abaixo um panorama do que foi montado no ambiente. Para simplificar a configuração, colocamos tudo em uma única VPC, conforme descrito a seguir.

  • Controladores de domínio em uma subnet privada.
  • AWS Directory Service configurado com AD Connector.
  • Nat Gateways em uma subnet pública para que os controladores de domínio consigam se comunicar com o Auth0.
  • Amazon Workspaces em uma subnet privada.

Passo a passo

São seis etapas para concluir a configuração.

  1. Criar um App no Auth0 e gerar um manifesto de Metadata.
  2. Criar um Provedor de Identidade SAML no AWS Identity and Access Management (IAM).
  3. Criar uma IAM Role e uma IAM Policy para Federação SAML 2.0.
  4. Configurar o Auth0 e as asserções SAML.
  5. Habilitar a integração SAML 2.0 no diretório do seu workspace.
  6. Testar a configuração.

Pré-requisitos

  • Conta Auth0 com o Active Directory connector configurado.
  • Active Directory Connector configurado para o AWS Directory Service.
  • Um Amazon Workspace provisionado no mesmo diretório.

Passo 1: criar um App no Auth0 e gerar um manifesto de Metadata

  • Configure o addon usando o pop-up que aparece depois que você habilita o SAML2 Web App. Na aba Settings, preencha o Application Callback URL com https://signin.aws.amazon.com/saml e cole o código de configuração SAML abaixo, em formato JSON, no campo Settings:
{
 "audience": "https://signin.aws.amazon.com/saml",
 "mappings": {
   "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sAMAccountName",
   "name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
 },
 "createUpnClaim": false,
 "passthroughClaimsWithNoMapping": false,
 "mapUnknownClaimsAsIs": false,
 "mapIdentities": false,
 "nameIdentifierFormat": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
 "nameIdentifierProbes": [\
   "http://schemas.auth0.com/sAMAccountName"\
 ]
}

  • Role até o final da página e clique em Enable.
  • Clique na aba Usage para baixar o arquivo de manifesto de metadata. Você vai precisar dele no próximo passo.

  • Feche a janela do SAML2 Web App e clique em Connections. Em Enterprise, selecione o Active Directory/LDAP Connector correto.

Passo 2: criar um Provedor de Identidade SAML no AWS Identity and Access Management (IAM)

  • Faça login na sua conta AWS e abra o console do IAM.
  • No painel de navegação, clique em Identity Providers e depois em Add Provider.

  • Em Provider Type, escolha SAML, dê um nome significativo e adicione tags conforme necessário. Em Metadata Document, clique em Choose File, selecione o documento de metadata SAML que você baixou no passo anterior e clique em Open. Depois disso, clique em Add Provider, na parte de baixo da tela.

  • Confira as informações fornecidas e clique em Create.
  • Anote o ARN deste Provider, pois você vai precisar dele no passo 4.

Passo 3: criar uma IAM Role e uma IAM Policy para Federação SAML 2.0

  • No painel de navegação, clique em Roles e depois em Create Role.

  • Em Role type, escolha SAML 2.0 federation.
  • Selecione o SAML Provider criado no passo anterior.
  • Em Attribute, selecione SAML:sub_type. Em Value, digite persistent. Esse passo restringe o acesso à role apenas a solicitações de streaming de usuários SAML que incluam uma asserção do tipo SAML subject com valor persistent.
  • Revise as informações de confiança SAML 2.0, confirmando a entidade confiável e a condição corretas, e clique em Next: Permissions.
  • Na página Attach permissions policies, clique em Next: Tags.
  • Quando terminar, clique em Next: Review. A inline policy desta role será criada e incorporada mais adiante.
  • Em Role name, digite um nome que ajude a identificar a finalidade da role. Como diferentes entidades podem fazer referência a ela, o nome não pode ser editado depois de criada.
  • (Opcional) Em Role description, digite uma descrição para a nova role.
  • Revise os detalhes da role e clique em Create role.
  • Selecione a role que você criou, clique em Trust relationships e em Edit trust relationship.
  • Atualize a action para permitir sts:TagSession.

A Policy deve ficar assim:

{
   "Version": "2012-10-17",
   "Statement": [\
      {\
         "Effect": "Allow",\
         "Principal": {\
            "Federated": "arn:aws:iam:::saml-provider/name"\
         },\
         "Action": [\
            "sts:AssumeRoleWithSAML",\
            "sts:TagSession"\
         ],\
         "Condition": {\
            "StringEquals": {\
               "SAML:sub_type": "persistent"\
            }\
         }\
      }\
   ]
}

Agora vamos incorporar uma Inline Policy à role que acabamos de criar.

  • Selecione a IAM role criada e, na aba de permissões, clique em Add Permissions->Create Inline Policy.

  • Vá para a aba JSON e cole a policy abaixo. Atualize a region, o Account ID e o directory ID de acordo com a sua configuração.
{
   "Version": "2012-10-17",
   "Statement": [\
       {\
           "Effect": "Allow",\
           "Action": "workspaces:Stream",\
           "Resource": "arn:aws:workspaces:<region>:<account-id>:directory/<directory-id>",\
           "Condition": {\
               "StringEquals": {\
                   "workspaces:userId": "${saml:sub}"\
               }\
           }\
       }\
   ]
}

Não esqueça de atualizar a region, o account ID e o directory ID.

  • Quando terminar, clique em next, dê um nome à policy e clique em Create Policy.

Passo 4: configurar o Auth0 e as asserções SAML

  • Acesse o Management Dashboard do Auth0 e vá em Actions->Library-> Build Custom
  • Dê um nome, mantenha o trigger como Login/Post Login e o runtime como Node 18 e clique em Create.

  • Na próxima tela, copie e cole o código abaixo e clique em Deploy.
exports.onExecutePostLogin = async (event, api) => {
  if (event.client.name === "APP_NAME") {
    const awsRole = 'IAM_arn,saml_provider_arn';
    const awsRoleSession = event.user.sAMAccountName;
    const email = event.user.emails[0];
    api.samlResponse.setDestination('https://signin.aws.amazon.com/saml');
    api.samlResponse.setAttribute('https://aws.amazon.com/SAML/Attributes/Role', awsRole)
    api.samlResponse.setAttribute('https://aws.amazon.com/SAML/Attributes/RoleSessionName', awsRoleSession)
    api.samlResponse.setAttribute('https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email', email)
}
return;
};

Substitua App_Name pelo nome do App Auth0 que você criou no passo 1. Depois, troque IAM_arn pelo ARN da IAM role criada no passo 3 e saml_provider_arn pelo ARN do SAML provider criado no passo 2.

  • Depois, vá em Actions->Library-> Flows e clique em Login.
  • No painel à direita, em Add Action, clique em Custom e arraste a action que você criou para entre Start e Complete.

  • Clique em Apply.

Passo 5: habilitar a integração SAML 2.0 no diretório do seu workspace

Esta é a etapa final para concluir a configuração.

  • Acesse o AWS Management Console e vá em Workspaces-> Directories.
  • Clique no diretório usado pelo seu workspace.
  • Clique em Edit Authentication.

  • Na tela de edição de autenticação, clique em Edit SAML 2.0 Identity Provider.

  • Clique em Enable SAML 2.0 Authentication e informe a URL de login do seu Identity Provider em User Access URL. Você pode manter o nome do parâmetro IdP deep link como "RelayState".

Passo 6: testar a configuração

  • Abra o Amazon Workspaces Client para testar a configuração e informe seu código de registro. Você deve ver algo parecido com a tela abaixo.

  • Clique em Continue para fazer login no Workspaces. Você será redirecionado para a página de login do seu IDP, que deve ser parecida com a imagem a seguir.

  • Faça login com seu usuário e senha do AD. Após a autenticação bem-sucedida, você verá algo parecido com a imagem abaixo.

  • Clique em Open Workspaces e a tela de login aparecerá com o nome de usuário já preenchido.

  • Digite a senha e o workspace começará a ser inicializado.

  • Quando o workspace iniciar, o desktop deve carregar.