IBM Cloud Docs
Obtention de jetons

Obtention de jetons

Lorsque les utilisateurs ou les services de back end interagissent avec votre application, ils peuvent avoir besoin d'être autorisés à effectuer des actions spécifiques. App ID vérifie que l'entité qui effectue la demande est autorisée et renvoie les jetons d'accès et d'identité à votre application. Si l'entité qui fait la demande est un utilisateur final, les jetons peuvent contenir des informations sur l'utilisateur telles que l'étendue de ses droits et son nom. S'il s'agit d'un service de back end, seul un code d'accès est retourné.

Obtention de votre ID de client et de votre secret à l'aide de l'interface graphique

Pour obtenir des jetons, vous devez avoir votre ID client et votre secret. Les informations d'identification sont spécifiques à chaque application et sont utilisées pour identifier et valider les utilisateurs auxquels un jeton peut être attribué.

  1. Accédez à l'onglet Applications du tableau de bord App ID.

  2. Si vous disposez déjà d'un ensemble de données d'identification, vous pouvez passer à l'étape 3. Si vous ne le faites pas, créez en un.

    1. Sur l'onglet Applications, cliquez sur Ajouter une application.
    2. Donnez un nom à votre application et cliquez sur Sauvegarder pour retourner à une liste de vos applications enregistrées. Le nom de votre application ne doit pas dépasser 50 caractères.
  3. Dans la liste des applications enregistrées, sélectionnez l'application avec laquelle vous voulez travailler. La ligne se développe pour afficher vos données d'identification.

  4. Copiez votre ID client et votre secret.

Obtention de votre ID de client et de votre secret à l'aide de l'API

Pour obtenir des jetons, vous devez avoir votre ID client et votre secret. Les données d'identification sont spécifiques à chaque application et sont utilisées pour identifier et valider les utilisateurs auxquels un jeton peut être attribué.

  1. Effectuer une requête POST au point d'accès /management/v4/<tenantID>/applications.

    Demande :

    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"}'
    

    Exemple de réponse :

    {
       "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"
    }
    
  2. Copiez l'ID client et le secret.

Obtention des jetons d'accès et d'identité à l'aide de l'interface graphique

Avec un ID client et un secret, vous pouvez obtenir des jetons d'accès et d'identité à l'aide de l'API ou d'un SDK. Les exemples suivants montrent comment obtenir un jeton à l'aide du flux ROP (Resource Owner Password - mot de passe du propriétaire de la ressource).

Cette action peut être effectuée via l'API uniquement. Pour voir la marche à suivre, consultez les instructions de l'API.

Obtention des jetons d'accès et d'identité à l'aide de l'API

Avec un ID client et un secret, vous pouvez obtenir des jetons d'accès et d'identité à l'aide de l'API ou d'un SDK. Les exemples suivants montrent comment obtenir un jeton à l'aide du flux ROP (Resource Owner Password - mot de passe du propriétaire de la ressource).

  1. Obtenez votre ID de titulaire, votre ID client, votre secret et l'adresse URL du serveur OAuth à partir de vos données d'identification.

  2. Encodez votre ID client et votre secret à l'aide d'un encodeur base64.

  3. Utilisez les exemples de code suivants pour récupérer vos jetons. Le type d'octroi que vous utilisez pour obtenir votre jeton peut différer selon le type d'autorisation. Pour une liste détaillée des options, consultez la documentation de 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)