Token
Quando un utente viene correttamente autenticato, l'applicazione riceve i token da App ID. Il servizio utilizza tre tipi principali di token per completare il processo di autenticazione: token di accesso, di identità e di aggiornamento.
Token di accesso
I token di accesso rappresentano l'autorizzazione e consentono la comunicazione con le risorse di backend che sono protette da filtri di autorizzazione impostati da App ID. Il token è conforme alle specifiche JavaScript Object Signing and Encryption (JOSE). Il token è formattato come JSON I token Web sono firmati con una chiave Web JSON che utilizza l'algoritmo RS256.
Token di esempio:
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"
}
Token di identità
I token di identità rappresentano l'autenticazione e contengono le informazioni sull'utente. Può fornirti le informazioni sui loro nome, email, sesso e ubicazione. Un token può anche restituire un URL a un'immagine dell'utente. Il token è formattato come JSON I token Web sono firmati con una chiave Web JSON che utilizza l'algoritmo RS256.
Token di esempio:
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"
]
}
I token di identità contengono solo informazioni parziali dell'utente. Per vedere tutte le informazioni fornite dal fornitore di identità, si può usare l'endpoint /userinfo.
Token di aggiornamento
App ID supporta la possibilità di acquisire nuovi token di accesso e identità senza riautenticazione, come definito nell'OIDC. Un token di aggiornamento può essere utilizzato per rinnovare il token di accesso in modo che un utente non debba eseguire alcuna azione per accedere, come ad esempio fornire le credenziali. Simili ai token di accesso, i token di aggiornamento contengono dati che consentono a App ID di determinare se l'utente è autorizzato. Tuttavia, questi token sono opachi.
I token di aggiornamento sono configurati per avere una durata maggiore rispetto a un normale token di accesso. Quando scade un token di accesso, il token di aggiornamento è ancora valido e può essere utilizzato per rinnovare il token di accesso. App ID' s i token di aggiornamento possono essere configurati agli ultimi 1 - 90 giorni. Per sfruttare appieno i token di aggiornamento, conserva i token per tutta la loro durata o finché non vengono rinnovati. Un utente non può accedere direttamente alle risorse con un solo token di aggiornamento, il che li rende molto più sicuri da conservare rispetto a un token di accesso. Come procedura ottimale, i token di aggiornamento devono essere memorizzati in modo sicuro dal client che li ha ricevuti e devono essere inviati solo al server di autorizzazione che li ha emessi.
Per maggiore comodità, App ID rinnova anche il token di aggiornamento - e la sua data di scadenza - quando viene rinnovato il token di accesso, consentendo all'utente di rimanere connesso mentre è attivo in un momento precedente alla scadenza del token di aggiornamento corrente. In alternativa, se si desidera utilizzare i token di aggiornamento, ma costringere l'utente ad accedere periodicamente, l'applicazione può utilizzare solo i token di aggiornamento che vengono restituiti quando l'utente accede inserendo le proprie credenziali. Tuttavia, si consiglia di utilizzare sempre l'ultimo token di aggiornamento ricevuto da App ID, come descritto da OAuth 2.0 specifiche.
Anche se questi token possono snellare il processo di login, la tua app non deve dipendere da loro. Possono essere revocati in qualsiasi momento, come quando si crede che i token di aggiornamento fossero compromessi. È possibile utilizzare due metodi di revoca di un token di aggiornamento, se necessario. Se si dispone del token di aggiornamento, è possibile revocarlo in base a RFC7009. In alternativa, se si dispone dell'ID utente, è possibile revocare il token di aggiornamento utilizzando l'API di gestione. Per ulteriori informazioni sull'accesso all'API di gestione, vedere Gestione dell'accesso ai servizi.
Per esempi di utilizzo dei token di aggiornamento e di come usarli per implementare una funzionalità ricordami, consulta gli esempi introduttivi.
Da dove provengono i token?
I token sono emessi attraverso il server App ID OAuth e sono formattati come JSON Web Tokens(JWT). I token sono stati firmati con una JSON Web Key(JWK) con l'algoritmo RS256.
Cosa succede alle informazioni contenute nel token?
Il token di accesso contiene una serie di attestazioni JWT standard e una serie di attestazioni specifiche App ID come ad esempio un ID tenant. Il token di identità contiene informazioni specifiche dell'utente. Le informazioni nei token vengono memorizzate come attestazioni che fanno parte di un profilo dell'utente.
Come vengono ricevuti i token?
I token vengono ricevuti dalla tua applicazione dopo una corretta autenticazione. L'applicazione può utilizzare i token per recuperare informazioni sull'autorizzazione e l'autenticazione degli utenti. Il token di accesso può essere utilizzato per ottenere l'accesso alle risorse protette inviando una richiesta alla risorsa. Per estrarre i token, la tua applicazione deve analizzare l'intestazione.
Richiesta di esempio:
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer mF_9.B5f-4.1JqM mF_9.B5f-4.1JqM
Come vengono configurati i token?
Puoi personalizzare i token utilizzando l'associazione delle attestazioni personalizzate. Per ulteriori informazioni, vedi Personalizzazione dei token.