Estou tentando bearer-only
entender o conceito de clientes no Keycloak.
Entendo o conceito de público versus confidencial e o conceito de contas de serviço e grant_type=client_credentials
outras coisas. Mas com bearer-only
, eu estou preso.
O Google só revela fragmentos de discussões dizendo:
Você não pode obter um token do keycloak com um
bearer-only
cliente.
Os documentos também não são claros. Tudo o que eles dizem é:
Tipo de acesso apenas ao portador significa que o aplicativo permite apenas solicitações de token do portador.
Ok, se meu aplicativo permite apenas solicitações de tokens ao portador, como obtenho esse token se não consigo obtê-lo no Keycloak usando o id / segredo do cliente?
E se você não pode obter um token, o que você pode fazer? Por que esses clientes existem? Alguém pode fornecer um exemplo do uso desse tipo de cliente?
ServiceA
seja válido. Direita? Mas se esse for o caso, por que ligar para Keycloak? Se meu cliente tiver uma chave pública Keycloak, ele poderá verificá-la usando essa chave sem precisar chamar Keycloak.bearer-only
realmente apenas para suportar esse caso de uso que ainda não está pronto?Significado do tipo de acesso apenas ao portador
Portanto, se você selecionar seu cliente
bearer-only
, nesse caso, o adaptador de capa de chave não tentará autenticar usuários, mas apenas verificará os tokens do portador. É por isso que a documentação do keycloak também mencionou obearer-only
aplicativo não permitirá o logon do navegador.E se você não pode obter um token, o que você pode fazer? Por que esses clientes existem?
Portanto, se você entender a declaração acima, se tiver dois microsserviços que estão conversando entre si, o chamador será
confidential
e o chamado serábearer-only
E Keycloak também mencionou
Portanto, se você quiser usar qualquer adaptador, poderá
bearer-only
depender da necessidadefonte
bearer-only
de outra forma o seu clienteconfidential
Resposta curta: você não pode obter um token de acesso usando um cliente apenas portador, mas pode obter um token de acesso que um cliente apenas portador pode aceitar usando outro cliente.
Mais detalhes Os clientes somente para portadores representam aplicativos úteis, como serviço da Web, chamados pelo aplicativo frontal e protegidos pelo servidor de autorização (= keycloak)
O aplicativo de serviço de back-end / Web não é chamado diretamente pelo usuário e, portanto, não pode ser reproduzido no fluxo interativo do usuário do Oauth2.0. A configuração de "somente portador" documenta esse fato no servidor de keycloak, permitindo que o administrador configure o cliente sem valores obrigatórios (exemplo, redirecionar uri ...) e permitindo mensagens de erro úteis se alguém tentar obter um token para esse cliente
No entanto, isso não significa que você não pode configurar funções específicas para este cliente: portanto, ele precisa aparecer no domínio do keycloak.
Além disso, o cliente somente portador precisa verificar o token de acesso recebido, especialmente se este recurso (recomendado) do adaptador "público-token-verificação" estiver ativado, o cliente somente portador precisará verificar se o token de acesso foi emitido para ele: o cliente apenas ao portador deve estar no atributo de audiência do token de acesso: consulte https://www.keycloak.org/docs/latest/server_admin/index.html#_audience
para o gerenciamento de público-alvo pelo keycloak, os clientes somente portadores precisam ser registrados no domínio do keycloak.
fonte