Configuración de un proveedor de OpenID Connect para que acepte solicitudes de registro de cliente
El punto final de registro de cliente es un servidor gestionado por el administrador que se utiliza para registrar, actualizar, suprimir y recuperar información sobre una OpenID Connect Relying Party que tiene la intención de utilizar el proveedor de OpenID Connect. A su vez, el proceso de registro puede proporcionar información para que la Relying Party lo utilice, incluyendo el ID de cliente de OAuth 2.0 y el secreto de cliente, si no se especifican.
Antes de empezar
En una configuración de almacén local, el servicio de registro de cliente está limitado a recuperar sólo información de OpenID Connect Relying Party. Puede modificar el archivo server.xml para añadir más operaciones para registrar, actualizar o suprimir una OpenID Connect Relying Party.
En una configuración de almacén de base de datos, no hay limitación en el servicio de registro de cliente y todas las operaciones son funcionales a través de la interfaz de REST.
El punto final de registro de cliente es un punto final de administración protegido con el rol clientManager. Para acceder a este punto final, el administrador debe otorgar al usuario el rol clientManager.
El rol clientManager es uno de los oauth-roles definidos para un oauthProvider. A continuación figura una configuración de ejemplo que muestra el otorgamiento del rol clientManager al usuario Alice o a los miembros del grupo clientAdministrator.
<oauth-roles>
<authenticated>
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</authenticated>
<clientManager>
<group name="clientAdministrator" />
<user name="Alice" />
</clientManager>
</oauth-roles>
Acerca de esta tarea
La información de registro del cliente acerca de una OpenID Connect Relying Party se utiliza ampliamente para definir las restricciones de escenario de uso del cliente. Además, otras operaciones del OP que son opacas con respecto al cliente utilizan los metadatos de registro de cliente para tomar decisiones de autorización.
En el ejemplo siguiente se presupone que el OP Liberty está configurado con SSL en el puerto 443.
https://server.example.com:443/oidc/endpoint/<nombre_proveedor>/registration
En el ejemplo anterior también se presupone que el archivo server.xml se ha configurado con el nombre de usuario clientAdmin y la contraseña clientAdminPassword, que utiliza el oauth-role: clientManager.
Los metadatos de registro de cliente constan de los parámetros siguientes:
Nombre de atributo | Tipo de datos | Obligatorio/Opcional | Descripción |
---|---|---|---|
client_id | Entrada/salida | Opcional | El identificador de cliente que se está registrado en el OP. Si no se especifica, este valor de parámetro se genera durante el registro de forma predeterminada. Es una serie. |
client_secret | Entrada/salida | Opcional | El secreto de cliente que se está registrado en el OP. Si no se especifica, este valor de parámetro se genera durante el registro de forma predeterminada. Es una serie. Durante una operación de actualización, el valor de parámetro '*' conserva el valor existente. Un valor de parámetro en blanco genera un nuevo client_secret. Un valor de parámetro que no esté en blanco altera temporalmente el valor existente con el nuevo valor especificado. |
client_name | Entrada/salida | Opcional | Descripción del cliente que se está registrado en el OP. Si no se especifica, este parámetro se establece en el valor del parámetro client_id de forma predeterminada. Es una serie. |
application_type | Entrada | Opcional | El tipo de aplicación que describe el cliente.
Si no se especifica, el valor predeterminado es web. Es una serie. Por ejemplo, valores posibles:
|
response_types | Entrada | Opcional | Las restricciones de tipo de respuesta utilizadas por este cliente. Si no se especifica, el valor predeterminado es
code.
Es una matriz JSON. Por ejemplo, valores posibles:
Para un response_type específico, debe especificarse los grant_types correspondientes. Para obtener más información, consulte response_types en el sitio web de Metadatos de cliente. |
grant_types | Entrada | Opcional | Las restricciones de tipo de otorgamiento utilizadas por este cliente. Si no se especifica, el valor predeterminado es
authorization_code.
Es una matriz JSON. Por ejemplo, valores posibles:
|
redirect_uris | Entrada | Opcional | La matriz de los URI de redirección a los que el cliente está limitado. Es una matriz JSON. |
post_logout_redirect_uris | Entrada | Opcional | La matriz de URIs de redirección de cierre de sesión de publicación a los que el cliente está limitado. Es una matriz JSON. |
trusted_uri_prefixes | Entrada | Opcional | La matriz de prefijos de URI de confianza que el cliente ha considerado seguros para enviar señales de acceso. Es una matriz JSON. |
scope | Entrada | Opcional | Los valores de ámbito delimitados por espacios a los que el cliente está limitado. Es una serie. Si el cliente está autorizado a solicitar cualquier ámbito, puede utilizarse un valor de ALL_SCOPES. |
preauthorized_scope | Entrada | Opcional | Los valores de ámbito delimitados por espacios a los que el cliente está preautorizando que no requieren el consentimiento del usuario. Es una serie. |
subject_type | Entrada | Opcional | La restricción de tipo de sujeto descrita por el cliente. Es una serie. Por ejemplo, valores posibles:
|
token_endpoint_auth_method | Entrada | Opcional | La restricción de método de autenticación de punto final de señal utilizada por el cliente. Si no se especifica, el valor predeterminado es client_secret_basic.
Es una serie. Por ejemplo, valores
posibles:
|
functional_user_id | Entrada | Opcional | Este parámetro indica qué ID de usuario debe asociarse con una solicitud realizada en nombre de un cliente en un tipo de otorgamiento client_credentials. Es una serie. |
functional_user_groupIds | Entrada | Opcional | Una lista de IDs de grupo que deben asociarse con señales de acceso obtenidas por este cliente utilizando el tipo de otorgamiento de
credenciales de cliente. El valor es una lista de IDs de grupo de los que el usuario funcional es miembro, donde los ID de grupo son series sensibles a
las mayúsculas y minúsculas. El servidor de autorizaciones define las series. Si el valor contiene varios ID de grupo, su orden no importa. Si la lista está
vacía, la declaración se omite. Cuando se especifica este parámetro de metadatos de cliente, el valor se devuelve en el parámetro de respuesta
functional_user_groupIds desde el punto final de introspección para las señales de acceso enviadas a este cliente con un otorgamiento de
credenciales de cliente. Si el parámetro functional_user_id no se utiliza, este parámetro se ignora. Nota: los servidores de autorización no deben confiar en el
cliente
para autoafirmar este parámetro.
|
introspect_tokens | Entrada | Opcional | Un valor de parámetro que indica si el cliente especificado tiene el privilegio para realizar la introspección de una señal de acceso emitida por el OP. Es un valor booleano. |
registration_client_uri | Sólo salida | N/A | Un parámetro que se devuelve en una respuesta con el valor que indica el URL exclusivo para un cliente registrado. Es una serie. |
client_secret_expires_at | Sólo salida | N/A | Un parámetro que se devuelve en una respuesta con el valor que indica el número de segundos desde 1970-01-01T0:0:0Z medidos en UTC, después del cual caduca el secreto de cliente. El valor 0 indica que no hay tiempo de caducidad. |
client_id_issued_at | Sólo salida | N/A | Un parámetro que se devuelve en una respuesta con el valor que indica el número de segundos desde 1970-01-01T0:0:0Z medidos en UTC, momento en el que se ha emitido el ID de cliente. El valor 0 indica que no se ha identificado ninguna hora de emisión de ID. |