Próbuję owinąć głowę koncepcją bearer-only
klientów w Keycloak.
Rozumiem pojęcie konta publicznego kontra poufnego oraz pojęcie kont usługowych i grant_type=client_credentials
takie tam. Ale z bearer-only
, utknąłem.
Google ujawnia tylko fragmenty dyskusji mówiące:
Nie można uzyskać tokena od klucza z
bearer-only
klientem.
Dokumenty również są niejasne. Mówią tylko:
Typ dostępu tylko na okaziciela oznacza, że aplikacja zezwala tylko na żądania tokena na okaziciela.
Ok, jeśli moja aplikacja zezwala tylko na żądania tokenów na okaziciela, jak mogę uzyskać ten token, jeśli nie mogę go uzyskać z Keycloak przy użyciu identyfikatora klienta / tajnego klienta?
A jeśli nie możesz zdobyć tokena, co możesz w ogóle zrobić? Dlaczego ci klienci istnieją? Czy ktoś może podać przykład korzystania z tego typu klienta?
ServiceA
jest prawidłowy. Dobrze? Ale jeśli tak jest, dlaczego w ogóle dzwonić do Keycloak? Jeśli mój klient ma publiczny klucz Keycloak, może go zweryfikować za pomocą tego klucza, nigdy nie dzwoniąc do Keycloak.bearer-only
naprawdę jest na miejscu tylko po to, aby obsługiwać ten przypadek użycia, który nie jest jeszcze gotowy?Znaczenie typu dostępu tylko na okaziciela
Jeśli więc wybierzesz swojego klienta
bearer-only
w takim przypadku, adapter keycloak nie będzie próbował uwierzytelnić użytkowników, a jedynie zweryfikuje tokeny nośnika. Dlatego w dokumentacji keycloak wspomnianej równieżbearer-only
aplikacji nie można się zalogować z przeglądarki.A jeśli nie możesz zdobyć tokena, co możesz w ogóle zrobić? Dlaczego ci klienci istnieją?
Więc jeśli zrozumiesz powyższe stwierdzenie, to jeśli masz dwie mikrousługi, które rozmawiają ze sobą w sprawie, osoba dzwoniąca będzie,
confidential
a osoba odbierająca będziebearer-only
I Keycloak również wspomniał
Więc jeśli chcesz użyć dowolnego adaptera, którego możesz użyć,
bearer-only
zależy od potrzebyźródło
bearer-only
przeciwnym razie uczynić swojego klientaconfidential
Krótka odpowiedź: nie można uzyskać tokena dostępu za pomocą klienta tylko na okaziciela, ale można uzyskać token dostępu, który klient tylko na okaziciela może zaakceptować za pomocą innego klienta.
Więcej informacji Klienci tylko na okaziciela użytecznie reprezentują aplikacje zaplecza, takie jak usługa internetowa, wywoływana przez aplikację frontową i zabezpieczona przez serwer autoryzacji (= keycloak)
Aplikacja zaplecza / usługi sieci Web nie jest wywoływana bezpośrednio przez użytkownika, więc nie mogą grać w interaktywnym przepływie użytkownika Oauth2.0. Ustawienie „tylko na okaziciela” dokumentuje ten fakt serwerowi keycloak, pozwalając administratorowi skonfigurować klienta bez obowiązkowych wartości (np. Przekierowanie uri…) i pozwalając na przydatne komunikaty o błędach, jeśli ktoś próbuje uzyskać token dla takiego klienta
Nie oznacza to jednak, że nie można skonfigurować określonych ról dla tego klienta: musi on więc pojawiać się w obszarze klucza.
Ponadto klient tylko na okaziciela musi zweryfikować otrzymany token dostępu, zwłaszcza jeśli ta (zalecana) funkcja adaptera „Veritet token-odbiorców” jest aktywna, klient tylko na okaziciela musi sprawdzić, czy token dostępu został dla niego wydany: klient tylko na okaziciela musi znajdować się w atrybucie odbiorców tokena dostępu: patrz https://www.keycloak.org/docs/latest/server_admin/index.html#_audience
w przypadku odbiorców zarządzanych przez keycloak klienci będący tylko na okaziciela muszą być zarejestrowani w dziedzinie keycloak.
źródło