Amazon Cognito
Developer Guide

Definizione dei Server di Risorse per il tuo Pool di Utenti

Una volta configurato un dominio per il pool di utenti, il servizio Amazon Cognito effettua automaticamente il provisioning di un'interfaccia utente Web ospitata che consente di aggiungere pagine di registrazione e di accesso alla tua applicazione. Per ulteriori informazioni, consulta Fase 2. Aggiunta di un'app per abilitare l'interfaccia utente Web ospitata.

Un server di risorse è un server di risorse ad accesso protetto. Si gestisce le richieste autenticate da un'applicazione con un token di accesso. In genere il server di risorse fornisce un'API CRUD per produrre queste richieste di accesso. Questa API può essere ospitata sull'Amazon API Gateway o al di fuori di AWS. L'app trasferisce il token d'accesso nella chiamata API ai server di risorse. L'app deve trattare il token d'accesso come opaco quando passa i token nella richiesta di accesso. Il server di risorse ispeziona il token d'accesso per determinare se gli accessi devono essere concessi.

Nota

Per elaborare una qualsiasi richiesta all'interno del token, il tuo server di risorse deve verificare la firma e la data di scadenza dei token d'accesso Per ulteriori informazioni sulla verifica e sull'uso dei token del pool di utenti, leggi questo post del blog. Amazon API Gateway è una buona opzione per ispezionare i token di accesso e proteggere le risorse. Per ulteriori informazioni sulle autorizzazioni Gateway API personalizzate, consulta Utilizzare autorizzazioni personalizzate API Gateway.

Un ambito è un livello di accesso che un'app può richiedere a una risorsa. Ad esempio, se hai un server di risorse per l'archiviazione di foto, questo potrebbe definire due ambiti, uno per l'accesso in lettura alle foto e uno per l'accesso in scrittura/eliminazione. Quando l'app fa una chiamata API per richiedere l'accesso e passa un token d'accesso, il token avrà uno o più ambiti incorporati all'interno.

Panoramica

Amazon Cognito permette agli sviluppatori di app di creare i propri server di risorse OAuth2.0 e definire ambiti personalizzati all'interno di essi. gli ambiti personalizzati possono essere associati ad un client, il quale può richiederli nel flusso di concessione OAuth2.0, nel flusso implicito e nel flusso di credenziali del cliente. gli ambiti personalizzati vengono aggiunti alla richiesta scope nel token d'accesso. Un client può utilizzare il token d'accesso contro il suo server di risorse, facendo in modo che la decisione di autorizzazione diventi basata sugli ambiti presenti nel token. Per ulteriori informazioni sui token d'accesso proposto, consulta Utilizzo dei token con i pool di utenti.

Nota

Per elaborare una qualsiasi richiesta all'interno del token, il tuo server di risorse deve verificare la firma e la data di scadenza dei token d'accesso.

Nota

Un client di un'app può utilizzare il flusso di credenziali del client solo nel caso in cui il client dell'app abbia un client segreto.

Gestione del server di risorse e degli ambiti personalizzati

Durante la creazione di un server di risorse, è necessario fornire un nome per il server di risorse e un identificatore per il server di risorse. Per ogni ambito che crei nel server di risorse, è necessario fornire nome e descrizione.

Esempio:

  • Name: un nome semplice per il server di risorse, ad esempio Weather API o Photo API.

  • Identifier: Identificativo univoco per il server di risorse. Questo potrebbe essere un endpoint HTTPS in cui si trova il tuo server di risorse. Ad esempio, https://my-weather-api.example.com

  • Scope Name: il nome dell'ambito. Ad esempio, weather.read

  • Scope Description: Una breve descrizione dell'ambito. Ad esempio, Retrieve weather information.

Quando un'app del client richiede un ambito personalizzato in qualsiasi flusso OAuth2.0, questa deve richiedere l'identificatore completo per l'ambito, che è resourceServerIdentifier/scopeName. Ad esempio, se il server di risorse ha come identificatore https://myphotosapi.example.com e il nome dell'ambito è photos.read, l'app del client deve richiedere https://myphotosapi.example.com/photos.read nella fase di runtime.

L'eliminazione di un ambito dal server di risorse non ne elimina l'associazione con tutti i client; con l'eliminazione lo si rende inattivo. Quindi, se un'app del client richiede l'ambito eliminato durante la fase di runtime, l'ambito viene ignorato e non viene incluso nel token d'accesso. Se l'ambito viene aggiunto una seconda volta in un altro momento, viene quindi incluso nuovamente nel token d'accesso.

Se un ambito viene rimosso da un client, l'associazione tra il client e l'ambito viene eliminata. Se un client richiede un ambito non consentito in fase di runtime, questo genera un errore e non viene emesso nessun token d'accesso.

È possibile utilizzare la Console di gestione AWS, API e la CLI per per definire i server di risorse e gli ambiti per il tuo pool di utenti.

Definizione di un server di risorse per il tuo pool di utenti (Console di gestione AWS)

È possibile utilizzare la Console di gestione AWS per definire un server di risorse per il tuo pool di utenti.

Definizione di un server di risorse

  1. Accedi alla console Amazon Cognito.

  2. Nel riquadro di navigazione, scegli Manage your User Pools (Gestisci i tuoi pool di utenti) e scegli i pool di utenti che intendi modificare.

  3. Scegli la scheda Resource servers (Server di risorse).

  4. Scegli Add a resource server (Aggiungi un server di risorse).

  5. Inserisci il nome del server di risorse, per esempio, Photo Server.

  6. Inserisci l'identificatore del server di risorse, per esempio, com.example.photos.

  7. Inserisci i nomi degli ambiti personalizzati per le risorse, come read e write.

  8. Per ognuno dei nomi degli ambiti, inserisci una descrizione, come view your photos e update your photos.

  9. Seleziona Save changes (Salva modifiche).

Ognuno degli ambiti personalizzati che definisci appare nella scheda App client settings (Impostazioni dei client dell'app) su OAuth2.0 Allowed Custom Scopes (Ambiti OAuth2.0 personalizzati consentiti); ad esempio com.example.photos/read.

Definizione di un server di risorse per il tuo pool di utenti (AWS CLI e API AWS)

Usa i seguenti comandi per specificare le impostazioni dei server di risorse per il tuo pool di utenti.

Creazione di un server di risorse

Ottenimento di informazioni sulle impostazioni dei tuoi server di risorse

Creazione di liste di informazioni su tutti i server di risorse per il tuo pool di utenti

Eliminazione di un server di risorse

Aggiornamento delle impostazioni per un server di risorse