Utilisation de l'opération autorisée onBehalfOf

L'opération autorisée onBehalfOf permet de s'assurer que les privilèges d'accès peuvent être générés uniquement à partir des privilèges de l'utilisateur, afin qu'une application client puisse accéder aux adresses auxquelles l'utilisateur a accès, même si l'application client elle-même n'y a normalement pas accès.

Lorsqu'une application client autorisée implémente une fonctionnalité qui l'oblige à accéder aux adresses des domaines d'identité, ce client dispose des privilèges nécessaires pour le faire. Un client d'application Web, quant à lui, implémente une fonctionnalité qui exige que l'application client accède aux adresses à l'aide des privilèges et des portées acquis auprès de l'utilisateur connecté. Avec le comportement d'autorisation par défaut des domaines d'identité, ce client doit toujours disposer de l'ensemble complet de privilèges requis pour accéder à ces adresses sans tenir compte des privilèges accordés à l'utilisateur. L'opération autorisée onBehalfOf fournit à un administrateur un moyen d'indiquer que les privilèges de l'utilisateur doivent être utilisés seuls plutôt qu'un croisement des portées de l'utilisateur (si un utilisateur est présent) et des portées du client.

Les applications publiques ou CLI disposent de privilèges très limités ou ne disposent d'aucun privilège pour accéder aux adresses. Ces types de clients dépendent de l'utilisateur qui accède à l'application pour déterminer les droits dont elle dispose. Lorsqu'un utilisateur accède à une application publique, si un jeton d'accès créé à partir des seuls privilèges de l'utilisateur lui a été émis, il peut accéder aux adresses tant que l'utilisateur y est autorisé.

L'opération autorisée onBehalfOf vous permet de générer un jeton d'accès de ce type pour l'application client OAuth. Lors du calcul des portées propres aux domaines d'identité (portées commençant par "urn:opc:idm:") à définir dans le jeton d'accès, les domaines d'identité ignorent les privilèges du client et utilisent une portée égale ou inférieure à la portée initialement accordée à l'utilisateur autorisé. Par conséquent, seuls les privilèges de l'utilisateur (rôles admin, groupes, etc.) associés aux portées demandées sont utilisés pour déterminer l'accès. Si la portée demandée "urn:opc:idm:_myscopes_" est utilisée, toutes les portées accordées à l'utilisateur sont renvoyées.

Activation de l'opération autorisée onBehalfOf

Utilisez l'API REST des domaines d'identité pour créer ou mettre à jour une application OAuth, et indiquez onBehalfOfUser en tant qu'opération autorisée. Lorsque vous créez une application OAuth à l'aide de l'interface utilisateur des domaines d'identité, sur la page Autorisation, cochez la case de l'opération autorisée Au nom de. Lorsque les utilisateurs accèdent à l'application, ils peuvent exécuter diverses fonctions en fonction de leurs autorisations.

Exemple

L'exemple montre comment créer une application et spécifier l'opération autorisée onBehalfOfUser (en gras dans l'exemple).

cat</tmp/OAuthClientApp.json << __EOF__
{
  "schemas": [
    "urn:ietf:params:scim:schemas:oracle:idcs:App"
  ],
  "displayName": "publicClientApp",
  "isOAuthClient": true,
  "description": "public client",
  "active": true,
  "clientType": "public",
  "basedOnTemplate": {
    "value": "CustomBrowserMobileTemplateId"
  },
  "redirectUris": [
    "http://example.com:9090/demoapp/return",
    "http://example.com:9090/IDCSPlayground"
  ],
  "logoutUri": "http://example.com:9090/demoapp/logout.jsp",
  "postLogoutRedirectUris": ["http://example.com:9090/demoapp/logout.jsp"],
  "allowedScopes": [
    {
      "fqs": "http://example.com/photos"
    },
    {
      "fqs": "http://example.com/presentations"
    },
    {
      "fqs": "http://example.com/documents"
    }
  ],
  "allowedOperations": [
    "onBehalfOfUser"   ],
  "allowedGrants": [
    "authorization_code",
    "implicit"
  ]
}
__EOF__
   
curl -X POST 
-H "Content-type: application/json" 
-H "Authorization: Bearer <access token value>" 
--data @/tmp/OAuthClientApp.json http://<domainURL>/admin/v1/Apps