Callback de autenticação

Este documento descreve como implementar o seu ponto final de chamada de autenticação.

1. Leitores-alvo

Você precisa implementar seu ponto final de retorno de chamada de autenticação (e por isso tem que ler este documento) somente se uma ou ambas as condições seguintes atenderem.

  1. Se você usar a implementação padrão de endpoint de autorização (/auth/authorization/direct/service-api-key), fornecido pela Authlete, e se você quiser autenticar seus usuários finais pelo seu ID e senha na página de autorização.
  2. Se você usar a implementação padrão de ponto final token (/auth/token/direct/service-api-key), fornecido pela Authlete, e se você quiser apoiar Concessão de credenciais de senha do proprietário de recursos, e se você quiser autenticar seus usuários finais pelo seu ID e senha.

2. O que é o ponto final de retorno de chamada de autenticação?

O retorno de chamada de autenticação é uma API da Web que você é obrigado a implementar para autenticar seus usuários finais. Authlete chama a API da Web quando a autenticação do usuário final é necessária.

3. Por que o ponto final de retorno de chamada de autenticação é necessário?

Como o Authlete NÃO possui nenhuma tabela de banco de dados para gerenciar contas de usuário final, a Authlete não pode realizar a autenticação do usuário final. Isso é por design. Portanto, a Authlete delega a autenticação do usuário final ao seu ponto final de retorno de chamada de autenticação.

4. Configurações

Authlete precisa saber a localização do seu ponto final de retorno de chamada de autenticação, por isso é necessário definir as informações necessárias através Console do proprietário de serviço. Por favor, siga os passos abaixo.

  1. Login Console do proprietário de serviço, e você verá a lista de seus serviços.
  2. Clique em Editar o botão editar de um serviço para o qual você fornecerá um ponto final de retorno de chamada de autenticação.
  3. Clique na guia “Autenticação do usuário” e você encontrará “Callback” na parte superior como abaixo.
  4. Valores de entrada para os parâmetros de configuração corretamente.
  5. Clique no botão “Atualizar” para salvar as alterações.

Existem três parâmetros de configuração.

parâmetros descrição
Authentication Callback Endpoint A URL do seu ponto final de retorno de chamada de autenticação. O local deve ser acessível a partir do servidor Authlete. A URL deve começar https:// por segurança.
Authenticação Callback API Key & Secret Se esses valores não estiverem vazios, a Authlete usará os valores para adicionar o cabeçalho autorização para autenticação básica ao chamar o ponto final de retorno de chamada de autenticação. Você pode garantir que as solicitações de autenticação tenham vindo da Authlete verificando as credenciais de API.

5. Solicitação de retorno de chamada de autenticação

Método HTTP

POST método

Tipo de conteúdo

application/json

Autenticação Básica

Se você definir valores não vazios para “Autenticação Callback API Key” e “Authentication Callback API Secret” do serviço usando Console do proprietário de serviço, solicitações da Authlete contêm Authorization cabeçalho para Autenticação Básica.

Formato de dados

O corpo da entidade de um pedido de chamada de autenticação é JSON. O JSON contém as propriedades listadas na tabela abaixo (AutenticaçãoCallbackRequest.java em authlete-java-comum é sempre o formato mais recente).

Provavelmente, o número de propriedades é muito maior do que você imaginava. No entanto, se você não tem uma mente para apoiar o login social na página de autorização e não tem uma mente para suportar o OpenID Connect, as propriedades que você tem que se preocupar são apenas id e password.

propriedade descrição
serviceApiKey A chave API do seu serviço.
clientId O ID do aplicativo do cliente que acionou a solicitação de retorno de chamada de autenticação.
id Quando a propriedade do SNS é nula, id é (1) o valor que o usuário final inserem no campo “Login ID” na interface do usuário de autorização exibida no ponto final da autorização, ou (2) o valor de username solicitar parâmetro para o ponto final do token. Veja “RFC 6749, 4.3. Concessão de credenciais de senha do proprietário de recursos” para username solicitar parâmetro.
Caso contrário, quando sns a propriedade não é nula, id é o valor do sujeito (= identificador único) do usuário final no SNS.
password Quando sns a propriedade é nula, password é (1) o valor que o usuário final inserem no campo “Senha” na interface do usuário de autorização exibida no ponto final da autorização, ou (2) o valor de password solicitar parâmetro para o ponto final do token. Veja “RFC 6749, 4.3. Concessão de credenciais de senha do proprietário de recursos” para password solicitar parâmetro.
Caso contrário, quando sns propriedade não é nulo, senha não tem significado.
claims Uma matriz de strings que lista nomes de reivindicação (como given_name), solicitado por solicitação de autorização. ‘Claim’ é uma informação sobre um usuário final. Os nomes de reivindicação padrão são definidos em “5.1. Reivindicações Padrão” em “Núcleo de conexão OpenID 1.0”.
Você pode listar nomes de reclamação que deseja apoiar no campo “Reivindicações Suportadas” na guia “ID Token” em Console do proprietário de serviço Como abaixo.
Alegações que não estão listadas em “Reivindicações Suportadas” nunca aparecerão em propriedades de sinistros.
Observe que os nomes de reivindicação na solicitação de retorno de chamada de autenticação podem ser seguidos por uma tag local como given_name#ja. Veja “Idiomas e scripts de sinistros” em “Núcleo de conexão OpenID 1.0”.
claimsLocales Uma matriz de strings que lista nomes locais. Os valores vêm de claims_locales parâmetro de solicitação contido na solicitação de autorização que acionou a solicitação de chamada de autenticação. Veja “Idiomas e scripts de sinistros” em “Núcleo de conexão OpenID 1.0” para detalhes sobre claims_locales.
Você pode listar os locais de reclamação que deseja apoiar no campo “Locais de reclamação suportados” na guia “ID Token” na guia “ID Token” Console do proprietário de serviço. Alegações que não estão listadas em “Locais de Reivindicação Suportada” nunca aparecerão em claimsLocales propriedade.
sns Quando o usuário final realizou o login social na página de autorização, sns a propriedade detém o nome do SNS, como FACEBOOK.
a propriedade sns é sempre nula, a menos que você habilite o suporte de login social na guia “Autenticação do Usuário”
accessToken Quando o usuário final realizou o login social na página de autorização, accessToken a propriedade detém o token de acesso que foi emitido a partir do ponto final do token do SNS.
refreshToken Quando o usuário final realizou o login social na página de autorização, refreshToken a propriedade detém o token de atualização que foi emitido a partir do ponto final do token do SNS. Se o SNS não emitiu um token de atualização, esta propriedade será nula.
expiresIn Quando o usuário final realizou o login social na página de autorização, expiresIn a propriedade detém a duração do token de acesso em segundos. Se o SNS não tiver retornado informações sobre a duração, esta propriedade é 0.
rawTokenResponse Quando o usuário final realizou o login social na página de autorização, rawTokenResponse a propriedade detém o conteúdo da resposta do ponto final do token do SNS.
Implementações corretas do retorno dos pontos finais do token application/json, então o conteúdo de rawTokenResponse a propriedade é formatada em JSON. No entanto, note que o ponto final do token do Facebook retorna dados no formato de application/x-www-url-encoded. Isso é uma violação contra RFC 6749 (OAuth 2.0).

6. Resposta de retorno de chamada de autenticação

Um ponto final de retorno de chamada de autenticação é necessário para retornar uma resposta que esteja em conformidade com os requisitos descritos abaixo.

Tipo de conteúdo

application/json; charset=UTF-8

Cabeçalhos HTTP recomendados

Cache-Control: no-store
Pragma: no-cache

Formato de dados

O corpo da entidade de uma resposta de retorno de chamada de autenticação deve ser JSON. As propriedades previstas para serem contidas no JSON estão listadas na tabela abaixo (AutenticaçãoCallbackResponse.java em authlete-java-comum é sempre o formato mais recente).

Se você não tem uma mente para apoiar OpenID Connect, você sempre pode definir nulo para reivindicar propriedade.

propriedade descrição
authenticated O resultado da autenticação. Pôr true quando o usuário final foi autenticado com sucesso.
subject O identificador exclusivo do usuário final em seu serviço. Deve consistir apenas em letras ASCII imprimíveis e seu comprimento não deve exceder 100.
Note que o valor de subject propriedade na resposta não tem que ser igual ao valor de id propriedade no pedido. Por exemplo, se o seu serviço pode identificar um usuário final por um endereço de e-mail, seu serviço pode procurar um usuário final por um endereço de e-mail quando o dado id parece um endereço de e-mail. Nesse caso, o valor de subject propriedade na resposta é diferente de id propriedade na solicitação (a menos que seu sistema use endereços de e-mail como assuntos de usuários finais).
Quando authenticated propriedade é false, subject a propriedade pode ser nula.
claims Uma sequência JSON que contém pares de nome de reivindicação e valor de reivindicação. A seguir, um exemplo que contém dois pares.
{
“given_name”: “Takahiko”,
“gênero”: “masculino”
}
Quando um nome de reivindicação é um dos reivindicações padrão, seu valor deve seguir o formato definido em “5. Reivindicações” em “Núcleo de conexão OpenID 1.0”.
claims propriedade no pedido é uma lista de nomes de reclamações. Espera-se que você colete os valores das reivindicações encontradas na lista. No entanto, se os valores das reclamações solicitadas não estiverem disponíveis em seu sistema (embora você os tenha listado em “Reivindicações Suportadas”) ou se você não quiser fornecer valores de sinistro, claims propriedade na resposta pode ser nulo.
As reclamações devolvidas de um ponto final de retorno de chamada de autenticação estão incorporadas em um token de ID que será devolvido do ponto final de autorização para o aplicativo do cliente que fez a solicitação de autorização.

7. Implementação da amostra

TBW