O endpoint de atributos do usuário - Amazon Cognito

O endpoint de atributos do usuário

Quando o OIDC emite tokens de ID que contêm atributos do usuário, o OAuth 2.0 implementa o endpoint /oauth2/userInfo. Um usuário ou cliente autenticado recebe um token de acesso com uma reivindicação scopes. Essa reivindicação determina os atributos que o servidor de autorização deve retornar. Quando uma aplicação apresenta um token de acesso ao endpoint userInfo, o servidor de autorização retorna um corpo de resposta que contém os atributos do usuário que estão dentro dos limites definidos pelos escopos do token de acesso. Essa aplicação pode recuperar informações sobre um usuário a partir do endpoint userInfo, desde que tenha um token de acesso válido com pelo menos uma reivindicação de escopo openid.

O endpoint userInfo é um endpoint userInfo do OpenID Connect (OIDC). Ele responde com atributos do usuário quando os provedores de serviço apresentam os tokens de acesso que seu endpoint do emitiu. Os escopos no token de acesso do usuário definem os atributos do usuário que o endpoint userInfo retorna em sua resposta. O escopo openid deve ser uma das reivindicações do token de acesso.

O Amazon Cognito emite tokens de acesso em resposta a solicitações de API dos grupos de usuários, como InitiateAuth. Como elas não contêm escopos, o endpoint userInfo não aceita esses tokens de acesso. Em vez disso, você deve apresentar os tokens de acesso do endpoint de token.

O provedor de identidades (IdP) externo do OAuth 2.0 também hospeda um endpoint userInfo. Quando o usuário faz a autenticação com esse IdP, o Amazon Cognito troca silenciosamente um código de autorização com o endpoint token do IdP. Seu grupo de usuários passa o token de acesso do IdP para autorizar a recuperação das informações do usuário do endpoint userInfo do IdP.

GET /oauth2/userInfo

A aplicação faz solicitações para esse endpoint diretamente e não por meio de um navegador.

Para ter mais informações, consulte Endpoint UserInfo na especificação do OpenID Connect (OIDC).

Parâmetros de solicitação no cabeçalho

Authorization: Bearer <access_token>

Repasse o token de acesso no campo do cabeçalho da autorização.

Obrigatório.

Exemplo - solicitação

GET /oauth2/userInfo HTTP/1.1 Content-Type: application/x-amz-json-1.1 Authorization: Bearer eyJra12345EXAMPLE User-Agent: [User agent] Accept: */* Host: auth.example.com Accept-Encoding: gzip, deflate, br Connection: keep-alive

Exemplo - resposta positiva

HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: [Integer] Date: [Timestamp] x-amz-cognito-request-id: [UUID] X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 Strict-Transport-Security: max-age=31536000 ; includeSubDomains X-Frame-Options: DENY Server: Server Connection: keep-alive { "sub": "[UUID]", "email_verified": "true", "custom:mycustom1": "CustomValue", "phone_number_verified": "true", "phone_number": "+12065551212", "email": "bob@example.com", "username": "bob" }

Para obter uma lista de solicitações OIDC, consulte Solicitações padrão. No momento, o Amazon Cognito retorna os valores para email_verified e phone_number_verified como strings.

Exemplo - respostas negativas

Exemplo - solicitação inválida

HTTP/1.1 400 Bad Request WWW-Authenticate: error="invalid_request", error_description="Bad OAuth2 request at UserInfo Endpoint"
invalid_request

A solicitação não possui um parâmetro obrigatório, inclui um valor de parâmetro não compatível ou contém informações incorretas.

Exemplo - token inválido

HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="Access token is expired, disabled, or deleted, or the user has globally signed out."
invalid_token

O token de acesso está expirado, revogado, informado incorretamente ou inválido.