Tipos de concessão

Um tipo de concessão indica o mecanismo de autorização que o cliente utiliza para obter o token de identificação e o token de acesso de Verify. Você pode escolher entre código de autorização, implícito, código de autorização e implícito, fluxo de dispositivo, credenciais do proprietário do recurso, JWT, autorização baseada em contexto, token de atualização e troca de token.

Consulte as tabelas a seguir para obter uma comparação dos tipos de concessão suportados e para determinar qual tipo de concessão deve ser configurado para o aplicativo.
Tabela 1. Tipos de subsídios
Características Código de autorização Implícito Código de autorização e implícito
Descrição

O terminal de autorização /authorize retorna um código de autorização. O código de autorização pode ser trocado por um token de ID, um token de acesso ou um token de atualização.

A autenticação do cliente é necessária usando um ID do cliente e o segredo para recuperar o token de ID ou o token de acesso do terminal de token /token.

É o fluxo mais comumente usado.

O terminal de autorização /authorize retorna diretamente um token de ID ou token de acesso.

Ele não usa um código de autorização ou um terminal do token /token.

Permite que o cliente de front-end e de back-end receba tokens, independentemente um do outro.

O cliente obtém um código de autorização e tokens por meio do terminal de autorização /authorize. Alguns tokens são solicitados do terminal do token /token.

Caso de uso

Use para clientes que podem manter seguramente um segredo do cliente, como aplicativos da web e aplicativos móveis nativos.

O objetivo é autenticar o usuário e o cliente.

Use para clientes que não podem manter um segredo do cliente, tal como o navegador ou aplicativos baseados em JavaScript.

Ele é destinado a autenticar o usuário.

Use para clientes que:
  • Podem manter seguramente um segredo do cliente, como aplicativos da web e aplicativos móveis nativos.
  • Requer acesso imediato ao token de ID para informações de identidade.
  • Requer tokens de vida mais longa usando tokens de atualização.
O valor do tipo de resposta
code
id_token
token
id_token token
code id_token
code token
code id_token token
Todos os tokens são retornados do terminal de autorização. Não Sim Não
Todos os tokens são retornados do terminal de token. Sim Não Não
Os tokens não são revelados ao agente do usuário. Sim Não Não
O aplicativo cliente pode ser autenticado. Sim Não Sim
Gerar tokens de atualização. Sim Não Sim
Comunicação em um roundtrip Não Sim Não
Maioria da comunicação servidor-para-servidor Sim Não varia
Sugestão de login (login_hint) Sim
Esse valor pode ser o nome de usuário como uma string, por exemplo, john@ibm.com, ou um JSON, por exemplo,
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
. Ao usar um valor JSON, a região representa a região de origem de identidade.
Sim
Esse valor pode ser o nome de usuário como uma string, por exemplo, john@ibm.com, ou um JSON, por exemplo,
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
. Ao usar um valor JSON, a região representa a região de origem de identidade.
Sim
Esse valor pode ser o nome de usuário como uma string, por exemplo, john@ibm.com, ou um JSON, por exemplo,
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
. Ao usar um valor JSON, a região representa a região de origem de identidade.
Idade máxima de autenticação (max_age) Este valor representa o tempo decorrido permitido, em segundos, desde a última vez que o usuário foi ativamente autenticado. Este atributo se aplica somente às sessões de login do Cloud Directory. Este valor representa o tempo decorrido permitido, em segundos, desde a última vez que o usuário foi ativamente autenticado. Este atributo se aplica somente às sessões de login do Cloud Directory. Este valor representa o tempo decorrido permitido, em segundos, desde a última vez que o usuário foi ativamente autenticado. Este atributo se aplica somente às sessões de login do Cloud Directory.
Fluxo de trabalho
  1. O cliente prepara uma solicitação de autenticação que contém os parâmetros de solicitação necessários.
  2. O cliente envia a solicitação ao servidor de Verify autorização.
  3. O Verify servidor de autorização autentica o usuário.
  4. O Verify servidor de autorização obtém o consentimento ou a autorização do usuário.
  5. O Verify servidor de autorização redireciona o usuário de volta ao cliente com um código de autorização.
  6. O cliente solicita uma resposta de autenticação usando o código de autorização no terminal do token.
  7. O cliente recebe uma resposta que contém um token de ID e um token de acesso no corpo da resposta.
  8. O cliente valida o token de ID e recupera o assunto identificador do usuário.
  1. O cliente prepara uma solicitação de autenticação que contém os parâmetros de solicitação necessários.
  2. O cliente envia a solicitação ao servidor de Verify autorização.
  3. O Verify servidor de autorização autentica o usuário.
  4. O Verify servidor de autorização obtém o consentimento ou a autorização do usuário.
  5. O servidor de Verify autorização redireciona o usuário de volta ao cliente com um token de identificação e, se solicitado, um token de acesso.
  6. O cliente valida o token de ID e recupera o assunto identificador do usuário.
  1. O cliente prepara uma solicitação de autenticação que contém os parâmetros de solicitação necessários.
  2. O cliente envia a solicitação ao servidor de Verify autorização.
  3. O Verify servidor de autorização autentica o usuário.
  4. O Verify servidor de autorização obtém o consentimento ou a autorização do usuário.
  5. O servidor de Verify autorização redireciona o usuário de volta ao cliente com um código de autorização e, dependendo do tipo de resposta, um ou mais parâmetros.
  6. O cliente solicita uma resposta usando o Código de Autorização no Terminal do Token.
  7. O cliente recebe uma resposta que contém um token de ID e um token de acesso no corpo da resposta.
  8. O cliente valida o token de ID e recupera o assunto identificador do usuário.
Tabela 2. Tipos de subsídios (continuação)
Características Fluxo de dispositivo Credenciais de Senha do Proprietário do Recurso JWT
Descrição Ele permite que o cliente seja autorizado usando um Código Quick Response ou um código do usuário que é enviado para uma URL. A autenticação do cliente e do usuário é necessária usando um ID de cliente, um segredo do cliente, um nome do usuário e uma senha para recuperar o token de acesso e o token de ID do terminal de token /token. O nome do usuário e a senha são validados no Cloud Directory. Definido em RFC7523. Permite que um cliente apresente um JWT assinado, criptografado ou assinado e criptografado em troca de uma concessão. O JWT é validado pelo servidor de autorização e a identidade dentro do JWT é utilizada como o sujeito da concessão.
Caso de uso
Use para clientes que:
  • Não têm um navegador para executar o fluxo OAuth baseado no agente do usuário.
  • Têm restrição de entrada, pois requerer que o usuário insira uma grande quantidade de texto é impraticável.
Alguns exemplos são TVs inteligentes, consoles de mídia, quadros de imagens digitais e impressoras.
Esse tipo de concessão pode ser ativado, mas use-o somente se nenhum outro fluxo estiver disponível. Ele pode ser usado para:
  • Proprietários de recursos que possuem um relacionamento confiável com o cliente, por exemplo, o sistema operacional do dispositivo ou um aplicativo altamente privilegiado.
  • Clientes que podem obter as credenciais do proprietário do recurso (nome do usuário e senha) usando um formulário interativo.
  • Migrar clientes existentes que usam esquemas de autenticação direta, como Autenticação Básica HTTP ou Autenticação de Compilação para o OAuth, convertendo as credenciais armazenadas em um token de acesso.
Há um relacionamento de confiança estabelecido entre o servidor de autorização (Verify) e uma entidade, que emite JWTs. O cliente obtém um JWT da entidade emissora de JWT para apresentá-lo ao servidor de autorização em troca de uma concessão. A entidade emissora de JWT pode ter seus próprios requisitos, que devem ser atendidos antes da emissão de JWT (como verificações alternativas de autenticação e autorização).
O valor do tipo de resposta Não-aplicável Não-aplicável Não-aplicável
Todos os tokens são retornados do terminal de autorização. Não Não Não
Todos os tokens são retornados do terminal de token. Sim Sim Sim
Os tokens não são revelados ao agente do usuário. Sim Sim Sim
O aplicativo cliente pode ser autenticado. Sim Sim Sim
Gerar tokens de atualização. Sim Sim Sim
Comunicação em um roundtrip
Maioria da comunicação servidor-para-servidor
Sugestão de login (login_hint) Não Não Não
Idade máxima de autenticação (max_age) Não-aplicável
Fluxo de trabalho
  1. Os usuários iniciam o fluxo enviando o ID do cliente do dispositivo para solicitar um código do usuário e um código de dispositivo.
  2. Se o ID do cliente for válido, o URI de verificação, o código do usuário e o código do dispositivo serão retornados.
  3. O dispositivo exibe o URI de verificação e o código do usuário, para que o usuário digite em um navegador, ou exibe um Código Quick Response para ser escaneado pelo usuário.
  4. O dispositivo tenta continuamente trocar o código do dispositivo por um token.
  5. O usuário escaneia ou insere manualmente o URI de verificação e o código do usuário para enviar o código do usuário para o serviço OIDC.
  6. Se o código do usuário for válido, uma mensagem de êxito será enviada e o código do dispositivo será trocado por um token de acesso.
  1. O usuário insere seu nome de usuário e senha em um formulário na parte dependente.
  2. O cliente envia o nome do usuário, a senha, o ID do cliente e o segredo do cliente para o terminal do token.
  3. O nome do usuário e a senha são validados no Cloud Directory.
  4. O Cliente recebe uma resposta que contém um token de ID e um token de acesso no corpo de resposta.
  1. O cliente obtém um JWT (por qualquer meio externo) para apresentá-lo ao terminal.
  2. O JWT é validado e o assunto e os atributos adicionais são extraídos.
  3. O cliente recebe uma resposta que contém um token de ID e um token de acesso no corpo.
Tabela 3. Tipos de subsídios (continuação)
Características Autorização baseada em contexto Token de Atualização Troca de token
Descrição Um fluxo acionado pela API em que as verificações adicionais de autenticação e autorização são executadas. Antes que uma concessão seja emitida para o cliente, a autenticação de diversos fatores pode ser necessária. É necessária a autenticação do cliente e do usuário por meio de um ID de cliente, um segredo de cliente e um token de atualização para recuperar um novo conjunto de token de acesso, token de identificação e token de atualização do endpoint de tokens /token. O token de atualização deve pertencer ao mesmo ID de cliente. Os valores dos atributos associados ao token não são atualizados durante este fluxo. Definido em RFC8693. Permite que um cliente apresente um token para troca por outro token.
Caso de uso
  • O cliente deve ser instrumentado para manipular uma resposta de tipo de desafio a partir do servidor de autorizações.

  • O cliente usa as APIs de fatores de autenticação disponíveis dentro de Verify para receber um JWT que é, então, apresentado para continuar o fluxo.
  • O cliente deve incluir informações de contexto adicionais na solicitação via o parâmetro `context`.
Use este tipo de autorização para obter um novo conjunto de tokens de acesso, com prazo de validade renovado. Isso permite que a validade do token de acesso seja curta, mas não exigirá que o usuário faça login novamente para obter um novo token de acesso.
  • Falsificação de identidade: situação em que um cliente obtém acesso a um recurso assumindo a identidade de outra entidade.

  • Delegação: Quando um cliente age em nome de uma entidade autorizada.

O valor do tipo de resposta Não-aplicável Não-aplicável Não-aplicável
Todos os tokens são retornados do terminal de autorização. Não Não Não
Todos os tokens são retornados do terminal de token. Sim Sim Sim
Os tokens não são revelados ao agente do usuário. Sim Sim Sim
O aplicativo cliente pode ser autenticado. Sim Sim Sim
Gerar tokens de atualização. Sim Sim Sim
Comunicação em um roundtrip Sim
Maioria da comunicação servidor-para-servidor Sim
Sugestão de login (login_hint) Não Não Não
Idade máxima de autenticação (max_age) Não-aplicável Não
Fluxo de trabalho
  1. O cliente inicia o fluxo apresentando algum `contexto` por meio de uma solicitação usando grant_type=Context-based authorization
  2. O cliente recebe um DENY (se o acesso não deve ser permitido neste contexto) ou um CHALLENGE (identificado por meio do escopo que é retornado).
  3. O cliente usa o token de acesso que é retornado com a resposta de desafio para acessar as APIs de fatores de autenticação disponíveis incluindo a sinalização para solicitar um JWT como o resultado da conclusão de um fator.
  4. O JWT que é retornado do fator concluído é apresentado de volta para /token como uma solicitação de concessão do JWT Bearer (contexto também deve ser incluído) e os tokens são emitidos.
Nota:
  • Dependendo da política que estiver configurada, após o primeiro fator ser executado, fatores adicionais podem ser necessários. Esses fatores podem exigir que um segundo CHALENGE e um segundo fator de autenticação sejam executados.
  • Este tipo de concessão requer que uma política de acesso customizada seja CRIADA e anexada ao aplicativo. Essa política de acesso deve conter regras para autenticação de primeiro fator, e opcionalmente, quaisquer requisitos do 2FA.
  1. O cliente constata que o token de acesso está prestes a expirar ou já expirou e deseja obter novos tokens de acesso.
  2. O cliente envia as credenciais do cliente e o token de atualização para o endpoint de tokens.
  3. O token de atualização e as credenciais do cliente são validados.
  4. O cliente recebe uma resposta que contém um token de identificação, um token de atualização e um token de acesso no corpo da resposta.
  1. O cliente gera ou recupera um token para ser usado como token de sujeito. Opcionalmente, ele também terá um token de ator.

  2. Envie uma solicitação ao endpoint de tokens do servidor de autorização com o token do remetente e, opcionalmente, o token do destinatário.

  3. O servidor de autorização retorna o token solicitado.