Uso de la operación permitida onBehalfOf

La operación permitida onBehalfOf proporciona una forma de garantizar que los privilegios de acceso solo se puedan generar a partir de los privilegios del usuario, de modo que una aplicación cliente pueda acceder a los puntos finales a los que tiene acceso el usuario, incluso aunque la aplicación cliente por sí misma no tuviera acceso normalmente.

Cuando una aplicación cliente autorizada implementa una funcionalidad que requiere que acceda a los puntos finales de los dominios de identidad, a ese cliente se le otorgan los privilegios necesarios para hacerlo. Un cliente de aplicación web, por otro lado, implementa una funcionalidad que requiere que la aplicación cliente acceda a los puntos finales utilizando los privilegios y ámbitos adquiridos del usuario conectado. Con el comportamiento de autorización predeterminado de los dominios de identidad, ese cliente debe seguir teniendo el conjunto completo de privilegios necesarios para acceder a esos puntos finales sin tener en cuenta los privilegios otorgados al usuario. La operación permitida onBehalfOf proporciona a un administrador una forma de indicar que los privilegios del usuario solo se deben utilizar en lugar de una intersección de los ámbitos del usuario (si un usuario está presente) y los ámbitos del cliente.

Las aplicaciones públicas o de CLI tienen privilegios muy limitados o no tienen privilegios para acceder a los puntos finales. Estos tipos de clientes dependen del usuario que accede a la aplicación para controlar los derechos que tiene la aplicación. Cuando un usuario accede a una aplicación pública, si se le ha emitido un token de acceso que se crea solo a partir de los privilegios del usuario, ese usuario podrá acceder a los puntos finales siempre que el usuario esté autorizado.

La operación permitida onBehalfOf permite generar dicho token de acceso para la aplicación cliente OAuth. Al calcular los ámbitos específicos de los dominios de identidad (ámbitos que comienzan por "urn:opc:idm:") para definir en el token de acceso, los dominios de identidad ignoran los privilegios del cliente y utilizan un ámbito igual o menor que el ámbito otorgado originalmente al usuario autorizado. Por lo tanto, solo los privilegios del usuario (roles de administrador, grupos, etc.) junto con los ámbitos solicitados se utilizan para determinar el acceso. Si se utiliza el ámbito solicitado "urn:opc:idm:_myscopes_", se devuelven todos los ámbitos otorgados al usuario.

Activación de la operación permitida onBehalfOf

Utilice la API de REST de dominios de identidad para crear o actualizar una aplicación OAuth y especifique onBehalfOfUser como operación permitida. Al crear una aplicación OAuth mediante la interfaz de usuario de dominios de identidad, en la página Autorización, seleccione la casilla de control de la operación permitida En nombre de. Cuando los usuarios acceden a la aplicación, pueden realizar varias funciones en función de sus permisos.

Ejemplo

En el ejemplo se muestra cómo crear una aplicación y especificar la operación permitida onBehalfOfUser (en negrita en el ejemplo).

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