Tareas comunes OpenID Connect
La implementación se hizo con este módulo de SimpleSAMLphp: https://github.com/rediris-es/simplesamlphp-module-oidc al que se le hizo unos cambios que se mantienen aquí: https://github.com/SIU-Toba/simplesamlphp-module-oidc. En el README de esos repositorios hay información de configuración.
A continuación veremos las tareas más comunes a realizar sobre el servidor.
OpenID Connect Discovery
El protocolo define un mecanismo de descubrimiento donde un servidor de OpenID publica metadata en una URL conocida, esta URL, es: https://server.com/.well-known/openid-configuration
. En el caso del ejemplo es https://localhost:8181/idp/.well-known/openid-configuration
.
El resultado de un GET a esa URL es el siguiente:
{
"issuer": "http://localhost:8181",
"authorization_endpoint": "http://localhost:8181/idp/module.php/oidc/authorize.php",
"token_endpoint": "http://localhost:8181/idp/module.php/oidc/access_token.php",
"userinfo_endpoint": "http://localhost:8181/idp/module.php/oidc/userinfo.php",
"jwks_uri": "http://localhost:8181/idp/module.php/oidc/jwks.php",
"scopes_supported": [
"openid",
"profile",
"email",
"address",
"phone"
],
"response_types_supported": [
"code",
"token",
"id_token token"
],
"subject_types_supported": [
"public"
],
"id_token_signing_alg_values_supported": [
"RS256"
]
}
Hay mucha información en Internet que describe el contenido de este Endpoint.
Lo importante es que si se tiene un cliente que lo soporte, la configuración del servidor se puede hacer sólamente conociendo este Endpoint.
Agregar cliente
Desde la operación Aplicaciones
en la pestaña denominada OpenID Connect
podemos asociar el Relying Party (RP) para la misma.
Los datos que debemos proveer son:
Nombre: El identificador univoco para este SP, usualmente especificado como ${URL_APLICACION}/default-sp
URLs de Redirección: Lista en formato JSON de URLs para redirigir al cliente
Scopes: Uno o mas de los scopes básicos disponibles (phone, openid, profile, email, address)
Hay que tener en cuenta que la existencia del cliente no significa que se este utilizando, para ello tildar el checkbox en la parte superior del formulario en el campo activo.
Al presionar "Guardar" y almacenarse la información del RP, se visualizarán dos datos que serán necesarios para realizar la configuración de la solicitud adecuadamente:
- ID OIDC: Identificador de cliente OIDC
- Secret: Clave de cliente