Configurando um OIDC provedor como IdP do grupo de identidades - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando um OIDC provedor como IdP do grupo de identidades

O OpenID Connect é um padrão aberto para autenticação que é compatível com vários provedores de login. O Amazon Cognito permite vincular identidades com provedores OpenID Connect que você configura por meio do AWS Identity and Access Management.

Como adicionar um provedor OpenID Connect

Para obter informações sobre como criar um provedor OpenID Connect, consulte Criação de provedores de identidade OpenID Connect (OIDC) no Guia do Usuário.AWS Identity and Access Management

Como associar um provedor ao Amazon Cognito

Para adicionar um provedor de OIDC identidade (IdP)
  1. Selecione Bancos de identidades no console do Amazon Cognito. Selecione um banco de identidades.

  2. Selecione a guia Acesso do usuário.

  3. Selecione Adicionar provedor de identidade.

  4. Escolha OpenID Connect () OIDC.

  5. Escolha um provedor de OIDC identidade IAM IdPs no seu Conta da AWS. Se você quiser adicionar um novo SAML provedor, escolha Criar novo provedor para navegar até o IAM console.

  6. Para alterar o perfil que o Amazon Cognito solicita ao emitir credenciais para usuários que se autenticaram com esse provedor, defina Configurações de perfil.

    1. Você pode atribuir aos usuários desse IdP o Perfil padrão que você configurou ao definir seu Perfil autenticado ou Escolher perfil com regras.

      1. Se você escolheu Escolher perfil com regras, insira a Declaração de origem da autenticação do usuário, o Operador pelo qual você deseja comparar a declaração, o Valor que gerará uma correspondência com essa opção de perfil e o Perfil que você deseja atribuir quando houver correspondência com a Atribuição de perfil. Selecione Adicionar outra para criar uma regra adicional com base em uma condição diferente.

      2. Selecione uma Resolução de perfil. Quando as declarações do usuário não correspondem às suas regras, você pode negar ou emitir credenciais para seu Perfil autenticado.

  7. Para alterar as tags de identidade principal que o Amazon Cognito atribui ao emitir credenciais para usuários que se autenticaram com esse provedor, configure Atributos para controle de acesso.

    1. Para não aplicar nenhuma tag de entidade principal, selecione Inativo.

    2. Para aplicar tags de entidade principal com base em declarações sub e aud, selecione Usar mapeamentos padrão.

    3. Para criar seu próprio esquema personalizado de atributos para as tags de entidade principal, selecione Usar mapeamentos personalizados. Depois, insira a Chave de tag que você deseja obter de cada declaração e representar em uma tag.

  8. Selecione Save Changes (Salvar alterações).

É possível associar vários provedores OpenID Connect a um único grupo de identidades.

Uso do OpenID Connect

Consulte a documentação do provedor sobre como fazer login e receber um token de ID.

Assim que tiver um token, adicione-o ao mapa de logins. Use o URI do seu provedor como chave.

Como validar um token de OpenID Connect

Ao fazer a primeira integração com o Amazon Cognito, você poderá receber uma exceção InvalidToken. É importante entender como o Amazon Cognito valida os tokens do OpenID Connect OIDC ().

nota

Conforme especificado aqui (https://tools.ietf.org/html/rfc7523), o Amazon Cognito oferece um período de carência de 5 minutos para lidar com qualquer distorção do relógio entre os sistemas.

  1. O parâmetro iss deve corresponder à chave que o mapa de logins usa (por exemplo, login.provider.com).

  2. A assinatura deve ser válida. A assinatura deve ser verificável por meio de uma chave RSA pública.

  3. A impressão digital da chave pública do certificado corresponde à impressão digital que você definiu IAM quando criou seu OIDC provedor.

  4. Se o azp parâmetro estiver presente, verifique esse valor em relação ao cliente listado IDs em seu OIDC provedor.

  5. Se o azp parâmetro não estiver presente, verifique o aud parâmetro em relação ao cliente listado IDs em seu OIDC provedor.

O site jwt.io é um recurso valioso que você pode usar para decodificar tokens e verificar esses valores.

Android

Map<String, String> logins = new HashMap<String, String>(); logins.put("login.provider.com", token); credentialsProvider.setLogins(logins);

iOS – Objective-C

credentialsProvider.logins = @{ "login.provider.com": token }

iOS – Swift

Para fornecer o token de OIDC ID ao Amazon Cognito, implemente o AWSIdentityProviderManager protocolo.

Ao implementar o logins método, retorne um dicionário que contém o nome do OIDC provedor que você configurou. Esse dicionário atua como a chave, ao passo que o token de ID atual do usuário autenticado atua como o valor, conforme mostrado no exemplo de código a seguir.

class OIDCProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { let completion = AWSTaskCompletionSource<NSString>() getToken(tokenCompletion: completion) return completion.task.continueOnSuccessWith { (task) -> AWSTask<NSDictionary>? in //login.provider.name is the name of the OIDC provider as setup in the Amazon Cognito console return AWSTask(result:["login.provider.name":task.result!]) } as! AWSTask<NSDictionary> } func getToken(tokenCompletion: AWSTaskCompletionSource<NSString>) -> Void { //get a valid oidc token from your server, or if you have one that hasn't expired cached, return it //TODO code to get token from your server //... //if error getting token, set error appropriately tokenCompletion.set(error:NSError(domain: "OIDC Login", code: -1 , userInfo: ["Unable to get OIDC token" : "Details about your error"])) //else tokenCompletion.set(result:"result from server id token") } }

Ao instanciar oAWSCognitoCredentialsProvider, passe a classe que implementa AWSIdentityProviderManager como o valor de identityProviderManager no construtor. Para obter mais informações, acesse a página de AWSCognitoCredentialsProviderreferência e escolha initWithRegionTipo:identityPoolId: identityProviderManager.

JavaScript

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'login.provider.com': token } });

Unity

credentials.AddLogin("login.provider.com", token);

Xamarin

credentials.AddLogin("login.provider.com", token);