Ottenimento dei token
Quando gli utenti o i servizi di backend interagiscono con l'applicazione, potrebbero aver bisogno di essere autorizzati a eseguire azioni specifiche. App ID verifica che l'entità che effettua la richiesta sia autorizzata e restituisce token di accesso e identità all'applicazione. Se l'entità che effettua la richiesta è un utente finale, i token potrebbero contenere delle informazioni sull'utente, ad esempio l'ambito delle loro autorizzazioni e il loro nome. Se si tratta di un servizio di backend, viene restituito solo un token di accesso.
Acquisizione del tuo client ID e segreto con la GUI
Per ottenere i token, è necessario disporre dell'ID cliente e del segreto. Le credenziali sono specifiche per ogni applicazione e vengono utilizzate per aiutare a identificare e convalidare gli utenti a cui potrebbe essere assegnato un token.
-
Passa alla scheda Applications del dashboard App ID.
-
Se hai già una serie di credenziali elencate, puoi saltare al passo 3. In caso contrario, crearne uno.
- Sulla scheda Applications, fai clic su Add application.
- Fornisci alla tua applicazione un nome e fai clic su Save per ritornare a un elenco di tue applicazioni registrate. Il nome della tua applicazione non può superare i 50 caratteri.
-
Dall'elenco delle applicazioni registrate, seleziona l'applicazione con cui vuoi lavorare. La riga si espande per mostrare le tue credenziali.
-
Copia il tuo ID e il tuo segreto client.
Acquisizione del tuo client ID e segreto con l'API
Per ottenere i token, è necessario disporre dell'ID cliente e del segreto. Le credenziali sono specifiche per ogni applicazione e vengono utilizzate per identificare e convalidare gli utenti a cui potrebbe essere assegnato un token.
-
Effettuare una richiesta POST all'endpoint
/management/v4/<tenantID>/applications.Richiesta:
curl -X POST https://us-south.appid.cloud.ibm.com/management/v4/39a37f57-a227-4bfe-a044-93b6e6060b61/applications/ \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <IAMToken>' \ -d '{"name": "ApplicationName"}'Risposta di esempio:
{ "clientId": "c90830bf-11b0-4b65-bffe-9773f8703bad", "tenantId": "b42f7429-fc24-48ds-b4f9-616bcc31cfd5", "secret": "YWQyNjdkZjMtMGRhZC00ZWRkLThiOTQtN2E3ODEyZjhkOWQz", "name": "testing", "oAuthServerUrl": "https://us-south.appid.cloud.ibm.com/oauth/v4/b42f7429-fc24-48ds-b4f9-616bcb31cfd5", "profilesUrl": "https://us-south.appid.cloud.ibm.com", "discoveryEndpoint": "https://us-south.appid.cloud.ibm.com/oauth/v4/b42f7429-fc24-48ds-b4f9-616bcb31cfd5/.well-known/openid-configuration" } -
Copia l'ID e il segreto client.
Ottenimento di token di accesso e identità con la GUI
Con un ID e un segreto del client, è possibile ottenere token di accesso e identità utilizzando l'API o un SDK. I seguenti esempi mostrano come ottenere un token utilizzando il flusso ROP (Resource Owner Password).
Questa azione può essere effettuata solo tramite l'API. Per vedere i passi, passare alle istruzioni API.
Ottenimento di token di accesso e identità con l'API
Con un ID e un segreto del client, è possibile ottenere token di accesso e identità utilizzando l'API o un SDK. I seguenti esempi mostrano come ottenere un token utilizzando il flusso ROP (Resource Owner Password).
-
Ottieni l'ID tenant, l'ID client, il segreto e l'URL del server OAuth dalle tue credenziali.
-
Codificare il proprio ID client e segreto utilizzando un encoder base64.
-
Utilizzare i seguenti esempi di codice per richiamare i token. Il tipo di concessione utilizzato per ottenere il token può variare a seconda del tipo di autorizzazione con cui si lavora. Per un elenco dettagliato delle opzioni, consultare il sito documentazione swagger.
curl -X POST 'https://<region>.appid.cloud.ibm.com/oauth/v4/<tenantID>/token' \ -H 'Authorization: Basic base64Encoded{<clientID>:<clientSecret>}' \ -H 'Accept: application/json' \ -F 'grant_type=password' \ -F 'username=testuser@test.com' \ -F 'password=testuser'// iOS Swift example class delegate : TokenResponseDelegate { public func onAuthorizationSuccess(accessToken: AccessToken?, identityToken: IdentityToken?, refreshToken: RefreshToken?, response:Response?) { //User authenticated } public func onAuthorizationFailure(error: AuthorizationError) { //Exception occurred } } AppID.sharedInstance.signinWithResourceOwnerPassword(username: username, password: password, delegate: delegate())AppID.getInstance().signinWithResourceOwnerPassword(getApplicationContext(), username, password, new TokenResponseListener() { @Override public void onAuthorizationFailure (AuthorizationException exception) { //Exception occurred } @Override public void onAuthorizationSuccess (AccessToken accessToken, IdentityToken identityToken, RefreshToken refreshToken) { //User authenticated } });// Declare the API you want to protect app.get("/api/protected", passport.authenticate(APIStrategy.STRATEGY_NAME, { session: false }), function(req, res) { // Get full appIdAuthorizationContext from request object var appIdAuthContext = req.appIdAuthorizationContext; appIdAuthContext.accessToken; // Raw access_token appIdAuthContext.accessTokenPayload; // Decoded access_token JSON appIdAuthContext.identityToken; // Raw identity_token appIdAuthContext.identityTokenPayload; // Decoded identity_token JSON appIdAuthContext.refreshToken; // Raw refresh_token ... } );// Server-side swift example let options = [ "clientId": "<clientID>", "secret": "<secret>", "tenantId": "<tenantID>", "oauthServerUrl": "<oauthServerURL>", "redirectUri": "<appURL>" + CALLBACK_URL ] let webappKituraCredentialsPlugin = WebAppKituraCredentialsPlugin(options: options) let kituraCredentials = Credentials() kituraCredentials.register(plugin: webappKituraCredentialsPlugin)