Estoy tratando de bearer-only
entender el concepto de clientes en Keycloak.
Entiendo el concepto de público versus confidencial y el concepto de cuentas de servicio y grant_type=client_credentials
esas cosas. Pero con bearer-only
, estoy atascado.
Buscar en Google solo revela fragmentos de discusiones que dicen:
No puede obtener un token de keycloak con un
bearer-only
cliente.
Los documentos tampoco están claros. Todo lo que dicen es:
El tipo de acceso de solo portador significa que la aplicación solo permite solicitudes de token de portador.
Ok, si mi aplicación solo permite solicitudes de token de portador, ¿cómo obtengo este token si no puedo obtenerlo de Keycloak usando la identificación / secreto del cliente?
Y si no puedes obtener una ficha, ¿qué puedes hacer? ¿Por qué existen estos clientes? ¿Alguien puede dar un ejemplo del uso de este tipo de cliente?
ServiceA
sea válido. ¿Derecha? Pero si este es el caso, ¿por qué llamar a Keycloak? Si mi cliente tiene una clave pública de Keycloak, puede verificarla utilizando esta clave sin tener que llamar a Keycloak.bearer-only
realmente en su lugar solo para apoyar este caso de uso que aún no está listo?Significado del tipo de acceso solo al portador
Entonces, si selecciona su cliente como
bearer-only
entonces, en ese caso, el adaptador keycloak no intentará autenticar a los usuarios, sino solo verificar los tokens de portador. Es por eso que la documentación de keycloak también mencionó que labearer-only
aplicación no permitirá el inicio de sesión desde el navegador.Y si no puedes obtener una ficha, ¿qué puedes hacer? ¿Por qué existen estos clientes?
Entonces, si comprende la declaración anterior, si tiene dos microservicios que están hablando entre sí en el caso, la persona que llama será
confidential
y la persona que llamará serábearer-only
Y Keycloak también mencionó
Entonces, si desea usar cualquier adaptador que pueda usar,
bearer-only
dependerá de la necesidadfuente
bearer-only
contrario haga su clienteconfidential
Respuesta corta: no puede obtener un token de acceso usando un cliente solo de portador, pero puede obtener un token de acceso que un cliente solo de portador puede aceptar usando otro cliente.
Más detalles Los clientes solo portadores representan de manera útil las aplicaciones de back-end, como el servicio web, llamado por la aplicación frontal y protegido por el servidor de autorización (= keycloak)
El usuario no llama directamente a la aplicación de servicios web / backend, por lo que no se puede reproducir en el flujo interactivo de usuario Oauth2.0. La configuración de "solo portador" documenta este hecho en el servidor keycloak, lo que permite al administrador configurar el cliente sin valores obligatorios (por ejemplo, redirigir uri ...) y permitir mensajes de error útiles si alguien intenta obtener un token para dicho cliente
Sin embargo, esto no significa que no pueda configurar roles específicos para este cliente: por lo tanto, debe aparecer en el reino de keycloak.
Además, el cliente de solo portador debe verificar el token de acceso recibido, especialmente, si esta característica (recomendada) del adaptador "verificar-token-audiencia" está activada, el cliente de solo portador debe verificar que se haya emitido el token de acceso para ello: el cliente de solo portador debe estar en el atributo de audiencia del token de acceso: consulte https://www.keycloak.org/docs/latest/server_admin/index.html#_audience
Para la gestión de audiencias por keycloak, los clientes de solo portador deben estar registrados en el reino de keycloak.
fuente