Tecnologie
Sei confuso circa le differenze tra autorizzazione e autenticazione? Non sei il solo. Consulta le seguenti informazioni per conoscere la terminologia, i processi e le tecnologie specifici utilizzati quando lavori con IBM Cloud® App ID.
OAuth 2
OAuth 2.0 è un protocollo standard aperto utilizzato per fornire l'autorizzazione alle app.
Open ID Connect (OIDC)
OIDC è un livello di autenticazione che funziona con OAuth 2. Quando si utilizzano insieme OIDC e App ID, le credenziali dell'applicazione aiutano a configurare gli endpoint di OAuth. Se utilizzi l'SDK, gli URL dell'endpoint vengono creati automaticamente. Tuttavia, puoi anche creare gli URL utilizzando le tue credenziali di servizio. L'URL assume il seguente formato: App ID service endpoint + "/oauth/v4" + /tenantID.
Esempio:
{
"clientId": "7eba72ef-b913-47b0-b3b6-54358bb69035",
"tenantId": "8f5aa500-357e-443a-aab6-bf878f852b5a",
"secret": "OWEzZGM4M2UtZjhlYS00MDI2LTkwNGItNDJmYzViMmU2YzIz",
"name": "testing",
"oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/8f5aa500-357e-443a-aab6-bf878f852b5a",
"profilesUrl": "https://us-south.appid.cloud.ibm.com",
"discoveryEndpoint": "https://us-south.appid.ibm.cloud.com/oauth/v4/8f5aa500-357e-443a-aab6-bf878f852b5a/.well-known/openid-configuration"
}
Utilizzando questo esempio, l'URL sarà https://us-south.appid.cloud.ibm.com/oauth/v4/8f5aa500-357e-443a-aab6-bf878f852b5a. Accoderai quindi l'endpoint a cui volevi eseguire una richiesta. Consulta la seguente tabella per vedere
qualche endpoint di esempio.
| Endpoint | Formato |
|---|---|
| Autorizzazione | <oauthServerUrl>/authorization |
| Token | <oauthServerUrl>/token |
| Informazioni utente | <oauthServerUrl>/userinfo |
| JWKS | <oauthServerUrl>/publickeys |
Quando utilizzi l'SDK, gli URL dell'endpoint vengono creati automaticamente.
Token
Il servizio utilizza tre diversi tipi di token. I token sono impostati in Identity Providers > Manage del dashboard App ID. Per ulteriori informazioni sui token e su come vengono utilizzati in App ID, consulta Gestione dei token.
-
Token di accesso: Rappresentano l'autorizzazione e consentono la comunicazione con le risorse di backend protette. Le risorse sono protette dai filtri di autorizzazione impostati da App ID.
-
Token di identità: rappresentano l'autenticazione e contengono informazioni sull'utente.
-
Token di aggiornamento; possono essere utilizzati per ottenere un nuovo token di accesso senza riautenticare l'utente. Utilizzando i token di aggiornamento, gli utenti possono consentire che le loro informazioni vengano ricordate dall'applicazione, il che significa che possono restare collegati.
Intestazioni di autorizzazione
App ID è conforme alla specifica Bearer token e utilizza una combinazione di token di accesso e di identità che vengono inviati come intestazione HTTP Authorization. L'intestazione di autorizzazione ha tre parti diverse che sono separate da spazi vuoti. I token sono codificati base64. Il token di identità è facoltativo.
Esempio:
Authorization=Bearer <accessToken> [<idToken>]
Strategia API
La strategia API si attende che le richieste contengano un'intestazione di autorizzazione con un token di accesso valido. La richiesta può includere anche un token di identità, ma non è obbligatorio. Se un token non è valido o è scaduto, la strategia dell'API restituisce un errore HTTP 401 che contiene la seguente intestazione HTTP:
Www-Authenticate=Bearer scope="<scope>" error="<error>"
Se la richiesta restituisce un token valido, il controllo viene passato al prossimo middleware e la proprietà appIdAuthorizationContext viene trasmessa nell'oggetto della richiesta. Questa proprietà contiene i token di identità
e di accesso originali e le informazioni sul payload decodificate come oggetti JSON semplici.
Strategia applicazione web
Quando la strategia dell'applicazione web individua dei tentativi non autenticati di accesso a una risorsa protetta, automaticamente esegue il reindirizzamento a un browser dell'utente alla pagina di autenticazione, che può essere fornita da
App ID. Dopo un'autenticazione corretta, l'utente viene riportato all'URL di callback dell'applicazione web. La strategia dell'applicazione web ottiene i token di accesso e di identità e li archivia in una sessione HTTP in WebAppStrategy.AUTH_CONTEXT.
Spetta all'utente decidere se archiviare i token di accesso e di identità nel database dell'applicazione.
URI di reindirizzamento
App ID utilizza un elenco di URI completi e approvati per reindirizzare i tuoi utenti dopo un'interazione con la tua applicazione. Ad esempio, se l'utente esegue l'accesso correttamente, App ID lo reindirizza alla home page della tua applicazione oppure a un'altra pagina da te specificata. Il formato del tuo URI potrebbe variare a seconda della tua applicazione. Per ulteriori informazioni, consulta Aggiunta di URI di reindirizzamento.
JWKS (JSON Web Key Set)
Un JWKS rappresenta una serie di chiavi crittografiche. App ID utilizza un JWKS per verificare l'autenticità dei token generati dal servizio. Utilizzando l'ID chiave per verificare la firma, possiamo garantire che il token sia stato emesso da una fonte attendibile - App ID. Possiamo anche garantire che le informazioni all'interno del token non siano mai cambiate.