Como solucionar problemas de um erro de resposta SAML inválida” para o Okta e federação do AWS IAM?

Data da última atualização: 23/05/2022

Quando faço login na AWS com o Okta, recebo um erro de SAML inválido semelhante a:

"Your request included an invalid SAML response. To logout, click here" (Sua solicitação incluiu uma resposta SAML inválida. Para fazer logout, clique aqui).

Como solucionar esse erro?

Breve descrição

Quando você usa a AWS Account Federation no Okta, você pode receber um erro de SAML inválido ao fazer login na AWS. Isso pode acontecer se você fornecer informações ausentes ou incorretas para o atributo role em uma resposta SAML. O valor esperado desse atributo é um ou mais pares separados por vírgulas de uma função do AWS Identity and Access Management (IAM) e do provedor SAML, conforme mostrado aqui:

<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_1,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME/AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_2,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
  <AttributeValue>arn:aws:iam::ACCOUNT_NUMBER:role/ROLE_NAME_3,arn:aws:iam::ACCOUNT_NUMBER:saml-provider/PROVIDER_NAME</AttributeValue>
</Attribute>

Para verificar a resposta SAML do seu navegador, siga as etapas em Como visualizar uma resposta SAML em seu navegador para solução de problemas.

Resolução

Se você estiver usando a configuração Use Group Mapping (Usar mapeamento de grupo) no Okta, siga as etapas em Conectar-se ao Okta com várias contas da AWS. Caso contrário, acesse Conectar-se ao Okta com uma única conta da AWS. 

Conecte-se ao Okta com várias contas da AWS

Se você se conectar ao Okta com várias contas da AWS, o Okta usará o mapeamento de funções baseado em grupo. Isso significa que o Okta usa o nome do grupo para identificar o ID da conta da AWS e o nome do perfil do IAM para o SSO.

Observação: certifique-se de inserir o Filtro de grupo e o Padrão de valor da função corretamente no Okta para capturar com precisão as informações:

1.    Faça login no console de administração do Okta.

2.    Escolha Applications (Aplicações) e, em seguida, Applications (Aplicações) novamente.

3.    Escolha Sign On (Login) e, em seguida, Edit (Editar).

4.    O Filtro de grupo é uma expressão Regex personalizada que captura informações como o ID da conta da AWS e o nome do perfil do IAM para o nome do seu grupo Okta. Para obter mais informações, consulte o documento de configuração do Okta.

O guia de configuração fornece este exemplo:

Group name: "aws#[account alias]#[role name]#[account #]" 
Group Filter: "^aws\#\S+\#(?{{role}}[\w\-]+)\#(?{{accountid}}\d+)$"

Você pode estender esse exemplo se quiser personalizar o nome do grupo. Veja estes exemplos de nomes de grupos e filtros de grupos:

Group Name: [account alias]|[role name]|[account #] 
Group Filter: ^\S+\|(?{{role}}[a-zA-Z0-9+=.@\-_]+)\|(?{{accountid}}\d+)$
Group Name: aws_[account #]_[role name] 
Group Filter: ^aws\_(?{{accountid}}\d+)\_(?{{role}}[a-zA-Z0-9+=.@\-_]+)$

Observação:

  • O nome do perfil do IAM permite caracteres alfanuméricos e +=,.@-_. Considere o uso de delimitadores que não fazem parte do seu nome de função (por exemplo, '#' ou '|') se você receber um erro causado pelo filtro de grupo.
  • O nome do perfil do IAM não deve conter ',' se você quiser fazer login usando a Federação do IAM. Isso ocorre porque o Padrão de valor de função mostrado abaixo usa uma vírgula para separar o provedor SAML e o nome da função. Crie um novo perfil do IAM sem uma vírgula no nome para usar com a Federação do IAM.

5.    O Padrão de valor de função deve conter o ARN do perfil do IAM e do provedor SAML, separados por uma vírgula. Substitua o SAML Provider Name (Nome do provedor SAML) neste exemplo pelo nome do provedor da instância Okta. Você pode encontrar essas informações no console do AWS IAM, em Identity providers (Provedores de identidade).

arn:aws:iam::${accountid}:saml-provider/[SAML Provider Name],arn:aws:iam::${accountid}:role/${role}

Observação: o nome do provedor SAML deve ser idêntico para todas as suas contas da AWS.

6.    Escolha Save (Salvar).

7.    Teste o login do usuário do Okta na AWS para confirmar se o erro foi resolvido.

Conectar-se ao Okta com uma única conta da AWS

Para uma configuração de conta única, o Okta configura automaticamente o Padrão de valor de função. Se você estiver vendo o erro "Your request included an invalid SAML response. To logout, click here" (Sua solicitação incluiu uma resposta SAML inválida. Para fazer logout, clique aqui) para uma integração de conta única, gere um caso de suporte com o Okta para investigar o problema.