Utilisation de l'opération autorisée onBehalfOf

L'opération autorisée onBehalfOf fournit un moyen de s'assurer que les privilèges d'accès peuvent être générés à partir des seuls privilèges de l'utilisateur, de sorte qu'une application client puisse accéder aux points d'extrémité auxquels l'utilisateur a accès, même si elle n'a normalement pas accès elle-même.

Lorsqu'une application client autorisée met en oeuvre une fonctionnalité qui l'oblige à accéder aux points d'extrémité des domaines d'identité, ce client dispose des privilèges nécessaires pour ce faire. Un client d'application Web, en revanche, met en oeuvre une fonctionnalité qui exige que l'application client accède aux points d'extrémité à l'aide des privilèges et des étendues acquis de l'utilisateur connecté. Avec le comportement d'autorisation par défaut des domaines d'identité, ce client doit toujours disposer du jeu complet de privilèges requis pour accéder à ces points d'extrémité 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 seuls doivent être utilisés plutôt qu'une intersection des étendues de l'utilisateur (si un utilisateur est présent) et des étendues du client.

Les applications publiques ou d'interface de ligne de commande ont des privilèges très limités ou aucun privilège pour accéder aux points d'extrémité. Ces types de clients dépendent de l'utilisateur qui accède à l'application pour déterminer les droits dont dispose l'application. Lorsqu'un utilisateur accède à une application publique, s'il a reçu un jeton d'accès construit uniquement à partir des privilèges de l'utilisateur, il peut accéder aux points d'extrémité tant que l'utilisateur y est autorisé.

L'opération autorisée onBehalfOf vous permet de générer un tel jeton d'accès pour l'application client OAuth. Lors du calcul des étendues spécifiques 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é. Ainsi, seuls les privilèges de l'utilisateur (rôles d'administrateur, groupes, etc.) associés aux portées demandées sont utilisés pour déterminer l'accès. Si l'étendue demandée "urn:opc:idm:_myscopes_" est utilisée, toutes les étendues accordées à l'utilisateur sont retourné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 spécifiez onBehalfOfUser comme opération autorisée. Lorsque vous créez une application OAuth à l'aide de l'interface utilisateur des domaines d'identité, dans 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