Uso de la Operación Permitida onBehalfOf
La operación onBehalfOf permitida proporciona una forma de garantizar que se puedan generar los privilegios del usuario a partir de los privilegios del usuario, de modo que una aplicación cliente pueda acceder a aquellos puntos finales al que tiene acceso el usuario, incluso si la aplicación cliente por sí misma no tendría acceso normalmente.
Cuando una aplicación cliente autorizada implementa una funcionalidad que la requiere para acceder 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, implanta una funcionalidad que requiere que la aplicación cliente acceda a los puntos finales mediante los privilegios y ámbitos adquiridos del usuario conectado. Con el comportamiento de autorización por defecto 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 onBehalfOf permitida proporciona a un administrador una forma de indicar que solo se deben utilizar los privilegios del usuario 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 al usuario se le ha emitido un token de acceso que se crea solo a partir de los privilegios del usuario, ese usuario podría acceder a los puntos finales siempre que el usuario esté autorizado.
La operación onBehalfOf permitida 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:") que se definirán 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, sólo 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 que se otorgan al usuario.
Activación de la operación onBehalfOf permitida
Utilice la API de REST de los dominios de identidad para crear o actualizar una aplicación OAuth y especifique onBehalfOfUser como una operación permitida. Al crear una aplicación OAuth mediante la interfaz de usuario de los dominios de identidad, en la página Autorización, seleccione la casilla de control para 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