Un servidor Keycloak que funciona como se esperaba me está dando dolor de cabeza desde que comencé a probar e implementar acciones iniciadas por la aplicación.
Debido a que buscar el tema da como resultado una selección escasa de material práctico, tuve que revisar el documento de diseño para AIA , especialmente la sección de flujos.
De acuerdo con el documento de diseño ( aquí hay una entrada a los grupos de Google donde se dice que la función "resultó más o menos como se diseñó" ), los flujos deben construirse como
../realms/myrealm/protocol/openid-connect/auth ?response_type=code &client_id=myclient &redirect_uri=https://myclient.com &kc_action=update_profilelo que resultó en este código en mi motor de plantillas:
`${keycloak.config.realmUrl}/protocol/openid-connect/auth?response_type=code&client_id=${keycloak.config.clientId}&redirect_uri=${new URLSearchParams("http://localhost:3000/account").toString()}&kc_action=update_profile` (pug variable) keycloak.config se llena usando keycloak.getConfig() donde keycloak es la instancia de conexión de keycloak.
El motor de plantillas sustituye correctamente las variables en un enlace que conduce a mi instancia de keycloak, donde aparece (el equivalente alemán de) este mensaje de error:
Unexpected error when handling authentication request to identity provider(Alemán:
Unerwarteter Fehler während der Bearbeitung der Anfrage an den Identity Provider.)
No hay otros proveedores de identidad configurados.
¿Cómo hacer correctamente la llamada a mi Keycloak para iniciar un AIA, si la forma descrita en el documento de diseño conduce a este error?
Después de mi propia investigación, ahora lo hice funcionar. El mensaje de error parece engañoso porque no tengo otro proveedor de identidad configurado en esa instancia.
Se espera que el parámetro kc_action esté en MAYÚSCULAS. Asi que
`${keycloak.config.realmUrl}/protocol/openid-connect/auth?response_type=code&client_id=${keycloak.config.clientId}&redirect_uri=${new URLSearchParams("http://localhost:3000/account").toString()}&kc_action=update_profile`debiera ser
`${keycloak.config.realmUrl}/protocol/openid-connect/auth?response_type=code&client_id=${keycloak.config.clientId}&redirect_uri=${new URLSearchParams("http://localhost:3000/account").toString()}&kc_action=UPDATE_PROFILE`Esto debe documentarse en algún lugar para que la gente lo encuentre, porque no lo vi mencionado explícitamente en los "documentos".