Tokens

Quando um usuário é autenticado com êxito, o aplicativo recebe tokens do App ID. O serviço usa três tipos principais de tokens para concluir o processo de autenticação, conhecidos como tokens de acesso, identidade e atualização.

Tokens de acesso

Os tokens de acesso representam autorização e permitem a comunicação com recursos de back-end que são protegidos por filtros de autorização configurados pelo App ID. O token adequa-se às especificações do JavaScript Object Signing and Encryption (JOSE). O token é formatado como JSON Os tokens da Web são assinados com uma chave da Web JSON que usa o algoritmo RS256.

Token de exemplo:

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "exp": 1551903163,
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "amr": [
   "cloud_directory"
   ],
   "iat": 1551899553,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "scope": "openid appid_default appid_readprofile appid_readuserattr appid_writeuserattr appid_authenticated"
}

Tokens de identidade

Os tokens de identidade representam a autenticação e contêm informações sobre o usuário. Ele pode fornecer informações sobre seu nome, e-mail, sexo e local. Um token também pode retornar uma URL para uma imagem do usuário. O token é formatado como JSON Os tokens da Web são assinados com uma chave da Web JSON que usa o algoritmo RS256.

Token de exemplo:

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "exp": 1551903163,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "iat": 1551899553,
   "email": "appid155@mailinator.com",
   "name": "appid155@mailinator.com",
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "identities": [
   {
      "provider": "cloud_directory",
      "id": "118c0278-3526-4954-876b-cf70eb88efa2"
   }
   ],
   "amr": [
   "cloud_directory"
   ]
}

Os tokens de identidade contêm apenas informações parciais do usuário. Para ver todas as informações que são fornecidas pelo provedor de identidade, é possível usar o terminal /userinfo.

Atualizar tokens

App ID suporta a capacidade de adquirir novos tokens de acesso e identidade sem reautenticação, conforme definido no OIDC. Um token de atualização pode ser usado para renovar o token de acesso para que um usuário não tenha que executar nenhuma ação para se conectar, como fornecer credenciais. Semelhantes aos tokens de acesso, os tokens de atualização contêm dados que permitem ao App ID determinar se você autorizou. No entanto, esses tokens são opacos.

Os tokens de atualização são configurados para ter um tempo de vida mais longo do que um token de acesso regular. Quando um token de acesso expira, o token de atualização ainda é válido e pode ser usado para renovar o token de acesso. Os tokens de atualização do App ID podem ser configurados para durar de 1 a 90 dias. Paratirar total proveito dos tokens de atualização, persista os tokens para seu tempo de vida integral ou até quesejam renovados. Um usuário não pode acessar recursos diretamente com apenas um token de atualização, o que os torna muito mais seguros para persistir do que um token de acesso. Comomelhor prática, os tokens de atualização devem ser armazenados com segurança pelo cliente que os recebeu e enviadosapenas para o servidor de autorizações que os emitiu.

Para conveniência adicionada, o App ID também renova seu token de atualização, e sua data de validade, quando o token de acesso é renovado, permitindo que o usuário permaneça conectado enquanto estiver ativo em algum ponto antes do token de atualização atual expirar. Como alternativa, se você desejar usar tokens de atualização e ainda forçar o usuário a efetuar login periodicamente, o seu aplicativo poderá usar apenas os tokens de atualização que são retornados quando o usuário efetua login ao inserir suas credenciais. No entanto, recomendamos sempre usar o token de atualização mais recente recebido de App ID, conforme descrito nas especificações de OAuth 2.0.

Embora esses tokens possam aperfeiçoar o processo de login, o seu aplicativo não deve depender deles. Eles podem ser revogados a qualquer momento, como por exemplo, quando você acredita que seus tokens de atualização foram comprometidos. É possível usar dois métodos de revogação de um token de atualização, se necessário. Se você tiver o token de atualização, poderá revogá-lo com base em RFC7009. Como alternativa, se você tiver o ID do usuário, poderá revogar o token de atualização usando a API de gerenciamento. Para obter mais informações sobre como acessar a API de gerenciamento, consulte Gerenciamento do acesso ao serviço.

Para obter exemplos de como trabalhar com tokens de atualização e como usá-los para implementar uma funcionalidade Lembrar-me, consulte as amostras de introdução.

De onde vêm os tokens?

Os tokens são emitidos por meio do servidor App ID OAuth e são formatados como JSON Web Tokens(JWT). Os tokens foram assinados com uma JSON Web Key(JWK) com o algoritmo RS256.

O que acontece com as informações que o token contém?

O token de acesso contém um conjunto de solicitações JWT padrão e um conjunto de solicitações específicas do App ID, como um ID do locatário. O token de identidade contém informações específicas do usuário. As informações nos tokens são armazenadas como solicitações como parte de um perfil do usuário.

Como os tokens são recebidos?

Os tokens são recebidos por seu aplicativo após uma autenticação bem-sucedida. Seu app pode usar os tokens para recuperar informações sobre autorização e autenticação do usuário. O token de acesso pode ser usado para obter acesso a recursos protegidos enviando uma solicitação para o recurso. Para extrair os tokens, o aplicativo deve analisar o cabeçalho.

Solicitação de exemplo:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer  mF_9.B5f-4.1JqM mF_9.B5f-4.1JqM

Como os tokens são configurados?

É possível customizar os tokens usando o mapeamento de solicitações customizadas. Para obter mais informações, consulte Customizando tokens.