Utilisation de l'opération onBehalfOf autorisée

L'opération onBehalfOf autorisée permet de s'assurer que les droits 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 généralement pas accès.

Lorsqu'une application client autorisée implémente une fonctionnalité qui l'oblige à accéder aux adresses des domaines d'identité, elle dispose des privilèges nécessaires pour ce faire. Un client d'application Web, en revanche, implémente une fonctionnalité qui exige que l'application client accède aux adresses à l'aide des privilèges et des portées acquis 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 onBehalfOf autorisée fournit à un administrateur un moyen d'indiquer que les privilèges de l'utilisateur seuls doivent être utilisés plutôt qu'un croisement entre les portées de l'utilisateur (si un utilisateur est présent) et les 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 client 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 l'utilisateur a reçu un jeton d'accès construit à partir des privilèges de l'utilisateur seul, il peut accéder aux adresses tant que l'utilisateur est autorisé.

L'opération onBehalfOf autorisée vous permet de générer un tel jeton d'accès 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é. 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 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 onBehalfOf autorisée

Utilisez l'API REST de 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 onBehalfOfUser autorisée (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