authentication jboss customization principal keycloak

authentication - Keycloak recupera atributos personalizados para KeycloakPrincipal



jboss customization (2)

Para agregar atributos personalizados necesitas hacer tres cosas:

  1. Añadir atributos a la consola de administración
  2. Añadir mapeo de reclamaciones
  3. Reclamaciones de acceso

El primero se explica bastante bien aquí: https://www.keycloak.org/docs/latest/server_admin/index.html#user-attributes

Añadir asignación de reclamación:

  1. Abre la consola de administración de tu reino.
  2. Ve a Clientes y abre tu cliente.
  3. Esto solo funciona para Configuración> Tipo de acceso confidencial o público (no solo para el portador)
  4. Ir a Mappers
  5. Crea un mapeo desde tu atributo a json
  6. Marque "Agregar token ID"

Reclamaciones de acceso:

final Principal userPrincipal = httpRequest.getUserPrincipal(); if (userPrincipal instanceof KeycloakPrincipal) { KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) userPrincipal; IDToken token = kp.getKeycloakSecurityContext().getIdToken(); Map<String, Object> otherClaims = token.getOtherClaims(); if (otherClaims.containsKey("YOUR_CLAIM_KEY")) { yourClaim = String.valueOf(otherClaims.get("YOUR_CLAIM_KEY")); } } else { throw new RuntimeException(...); }

Espero que esto ayude y se ajuste a su caso de uso. Utilicé esto para un atributo personalizado que agregué con un tema personalizado.

En mi servicio de descanso puedo obtener la información principal después de la autenticación usando

KeycloakPrincipal kcPrincipal = (KeycloakPrincipal) servletRequest.getUserPrincipal();

declaración.

Keycloak principal no contiene toda la información que necesito sobre el usuario autenticado. ¿Es posible personalizar mi propio tipo de principal? En el keycloak-server-end he desarrollado un proveedor de federación de usuarios. Vi que UserModel hace posible agregar un conjunto de atributos personalizados a mi usuario.

¿Es posible insertar mi principal personalizado en ese código?

¿Es posible recuperar estos atributos de keycloak principal?

¿Cuál es la manera?


  • Seleccione Usuarios> Buscar> haga clic en ID> vaya a la pestaña de atributos> Agregar atributo> por ejemplo: teléfono> Guardar

  • Seleccione Clientes> haga clic en ID de cliente> vaya a la pestaña Mappers> crear mapper

  • Obtener atributos personalizados