Personalizzazione dei token
Con App ID, i token vengono utilizzati per identificare gli utenti e proteggere le tue risorse. Puoi scegliere di personalizzare le informazioni inserite nei token dal servizio. Iniettando le informazioni nei token, queste sono disponibili per l'applicazione in fase di esecuzione senza dover configurare ulteriori chiamate di rete. Per ulteriori informazioni sui token e su come vengono utilizzati in App ID, vedi Descrizione dei token.
Personalizzando la tua configurazione del token, puoi assicurarti che vengano soddisfatti i tuoi bisogni di sicurezza e di esperienza utente. Tuttavia, se un token dovesse mai diventare compromesso, un utente malintenzionato potrebbe avere ulteriori informazioni o tempo che può utilizzare per colpire la tua applicazione. Assicurati di comprendere le implicazioni sulla sicurezza delle personalizzazioni che vuoi effettuare prima di apportarle.
Descrizione dell'associazione delle attestazioni personalizzate
Un'attestazione è una dichiarazione che un'entità fa su se stessa o per conto di qualcun altro. Ad esempio, se hai effettuato l'accesso in un'applicazione utilizzando un provider di identità, il provider invierà all'applicazione un gruppo di attestazioni o dichiarazioni sul tuo conto per consentirle di unirle alle informazioni che ti riguardano a essa già note. In questo modo, quando esegui l'accesso, l'applicazione viene configurata con le tue informazioni, nel modo in cui l'hai configurata.
Quali tipi di attestazioni posso definire?
Le attestazioni fornite da App ID rientrano in diverse categorie che vengono differenziate dal loro livello di personalizzazione.
- Attestazioni normalizzate
- In ogni token di identità, è presente una serie di attestazioni riconosciute da App ID come normalizzate. Quando disponibili, le attestazioni vengono associate direttamente dal tuo provider di identità al token per impostazione predefinita.
Le attestazioni non possono essere omesse in modo esplicito ma possono essere sovrascritte nel tuo token dalle attestazioni personalizzate. Le indicazioni comprendono
name,email,pictureelocale. - Attestazioni limitate
- Le attestazioni limitate sono quelle che hanno possibilità di personalizzazione limitate e non possono essere sovrascritte dalle associazioni personalizzate. Per un token di accesso,
scopeè l'unica attestazione limitata. Sebbene non possano essere sovrascritte, possono essere estese con il tuo ambito. Quando un ambito viene mappato a un token di accesso, il valore deve essere una stringa e non può essere preceduto daappid_, altrimenti viene ignorato. Nei token di identità, le indicazioniidentitieseoauth_clientsnon possono essere modificate o sovrascritte. - Attestazioni registrate
- Le attestazioni registrate si trovano nei tuoi token di accesso e identità e sono definite da App ID. Non possono essere sovrascritti da mappature personalizzate. Queste richieste sono ignorate dal servizio e comprendono
iss,aud,sub,iat,exp,amr, etenant.
La definizione di un'attestazione per il tuo token non modifica o elimina l'attributo. Modifica le informazioni presenti nel token al runtime.
Come vengono associate le attestazioni ai token?
Ogni associazione viene definita da un oggetto dell'origine dati e da un chiave utilizzata per richiamare l'attestazione. Puoi inserire fino a 100 attestazioni in ogni token se il payload massimo rimane inferiore a 100 KB. Se vuoi utilizzare
delle attestazioni nidificate, puoi includerle tramite la sintassi dot. Ad esempio, nested.attribute.
Le attestazioni vengono impostate per ogni token in modo separato e sono applicate in modo sequenziale come mostrato nel seguente esempio.
{
"accessTokenClaims": [
{
"source": "saml",
"sourceClaim": "moderator"
},
{
"source": "saml",
"sourceClaim": "viewer",
"destinationClaim": "reader"
}
],
"idTokenClaims": [
{
"source": "saml",
"sourceClaim": "attributes.uid"
},
{
"source": "saml",
"sourceClaim": "Name",
"destinationClaim": "firstName"
},
{
"source": "saml",
"sourceClaim": "Country"
}
]
}
| Oggetto | Descrizione |
|---|---|
source |
Definisce l'origine dell'attestazione. Le opzioni includono: saml, cloud_directory, facebook, google, appid_custom, e attributes. |
sourceClaim |
Definisce l'attestazione come fornita dall'origine. Può fare riferimento alle informazioni utente del provider di identità o agli attributi personalizzati App ID dell'utente. |
destinationClaim |
Facoltativo: definisce l'attributo personalizzato che può sovrascrivere l'attestazione corrente nel token. |
Configurazione dei token
Con l'API, puoi personalizzare le informazioni restituite nei tuoi token App ID.
Se vuoi configurare la durata del tuo token, puoi apportare velocemente le modifiche tramite il dashboard del servizio. Per ulteriori informazioni, vedi Gestione dell'autenticazione.
-
Nel terminale, esegui questo comando per ottenere una chiave API.
ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE]Comprendere le opzioni del comando di creazione di una chiave API Opzione Descrizione NAMEIl nome che vuoi dare alla tua chiave. Ad esempio, myKey.DESCRIPTIONUna descrizione della chiave o del suo utilizzo. Ad esempio, "This is my App ID API key".FILEL'ubicazione dove vuoi memorizzare la tua chiave. Ad esempio, key_file. -
Ottieni un token IAM utilizzando la chiave API che hai ottenuto nel passo precedente.
curl -k -X POST "https://iam.cloud.ibm.com/identity/token" \ --header "Content-Type: application/x-www-form-urlencoded" \ --header "Accept: application/json" \ --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \ --data-urlencode "apikey=<apiKey>" -
Ottieni l'ID tenant per la tua istanza del servizio. Puoi trovare il valore nelle tue credenziali del servizio o dell'applicazione.
-
Esegui una richiesta PUT all'endpoint
/config/tokenscon la tua configurazione del token.curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/tokens" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer <IAMToken>" \ -d '{ "access": { "expires_in": 3600 }, "refresh": { "enabled": true, "expires_in": 2592001 }, "anonymousAccess": { "enabled": false }, "accessTokenClaims": [ { "source": "roles" }, { "source": "saml", "sourceClaim": "name_id", "destinationClaim": "id" } ], "idTokenClaims": [ { "source": "saml", "sourceClaim": "attributes.uid" } ] }'Comprendere la configurazione dei token Variabile Descrizione access: expires_inPer quanto tempo sono validi i token di accesso. Più piccolo è il valore e maggiore è la protezione che hai in caso di furto del token. Il valore viene fornito in secondi e può essere un numero intero qualsiasi nell'intervallo 300e86400. Il valore predefinito è3600.refresh: expires_inPer quanto tempo sono validi i token di aggiornamento. Più piccolo è il valore e maggiore è la protezione che hai in caso di furto del token. Il valore viene fornito in secondi e può essere un numero intero qualsiasi nell'intervallo 86400e7776000. Il valore predefinito è2592000(30 giorni).anonymousAccessPer quanto tempo è valido un token anonimo. I token anonimi vengono assegnati agli utenti nel momento in cui iniziano ad interagire con la tua applicazione. Quando un utente accede, le informazioni nel token anonimo vengono poi trasferite al token associato all'utente. Il valore viene fornito in secondi e può essere un numero intero qualsiasi nell'intervallo 86400e7776000. Il valore predefinito è2592000(30 giorni).accessTokenClaimsUn array che contiene gli oggetti creati quando vengono associate le attestazioni correlate ai token di accesso. Potresti voler includere le informazioni suoi ruoli o sugli specifici attributi restituiti dal provider di identità di un utente preferito. Nota: se si sta già utilizzando una rivendicazione personalizzata con il titolo "ruoli" dal proprio fornitore di identità, assicurarsi di utilizzare una rivendicazione di destinazione per vedere entrambi i valori. idTokenClaimsUn array che contiene le informazioni che sono presenti nei token quando associ le intestazioni ai token di identità. A seconda della tua configurazione, potresti anche scegliere di avere i ruoli "("roles") presenti nel tuo token di identità. Devi impostare il ciclo di vita del token in ogni richiesta che fai. Se non viene impostato un valore, viene utilizzato il valore predefinito. Ogni richiesta di personalizzazione sovrascrive ciò che era precedentemente configurato. Tieni presente che le specifiche della configurazione del ciclo di vita sono diverse nell'API rispetto a come sono nel dashboard del servizio.
-
Dopo che il token è stato restituito e che tu lo hai decodificato, vedi un risultato simile al seguente esempio:
{ "sub" : "1234567890", "name" : "John Doe", "exp" : 1564566, "roles" : ["admin", "manager"], "id": "<nameIDFromSaml>", "attributes.uid": "<uidFromSaml>" ... }