keycloak yalnızca taşıyıcı istemciler: neden varlar?


10

bearer-onlyKeycloak'ta başımı müşteri kavramının etrafına sarmaya çalışıyorum .

Kamuya karşı gizli kavramını, hizmet hesapları kavramını ve diğer grant_type=client_credentialsşeyleri anlıyorum . Ama ile bearer-onlysıkıştım.

Google'da yalnızca şu tartışma bölümleri ortaya çıkar:

İstemciyle tuş takımından anahtar simgesi alamazsınız bearer-only.

Belgeler de belirsiz. Bütün söyledikleri:

Yalnızca taşıyıcı erişim türü, uygulamanın yalnızca taşıyıcı kodu isteklerine izin verdiği anlamına gelir.

Tamam, Uygulamam yalnızca taşıyıcı jetonu isteklerine izin veriyorsa, istemci kimliğini / istemci sırrını kullanarak Keycloak'tan alamıyorsam bu jetonu nasıl edinebilirim?

Ve bir jeton alamazsan, ne yapabilirsin? Bu istemciler neden var? Birisi lütfen bu tür bir müşteri kullanımına örnek verebilir mi?

Yanıtlar:


5

Anladığım kadarıyla, bazı iç servisleriniz olduğunda kullanılır. Diyelim ki var ServiceAve ServiceB. Bir kullanıcı ServiceAelindeki çağrıları arar ServiceB. ServiceBhiçbir zaman doğrudan kullanıcı tarafından çağrılmaz, yalnızca diğer hizmetler tarafından çağrılır. ServiceAkullanıcının kimlik bilgilerini kullanarak bir simge alır. Ve sonra bu simgeyi aramak için kullanır ServiceB. ServiceBhiçbir zaman bir giriş başlatmaz. Yalnızca izinleri doğrulamak için jetonu kullanır.

Bu durumda, ServiceA confidentialve ServiceB bearer-onlyistemcileri olacaktır .


1
Bu, istemcimin yalnızca taşıyıcı olması durumunda, kullanabileceğim tek seçeneğin, anahtarın ServiceAgeçerli olduğundan emin olmak için Keycloak'a doğrulama istekleri yapmak olduğu anlamına gelir. Sağ? Ama eğer durum buysa, Keycloak'ı neden arayalım? İstemcimin genel bir Keycloak anahtarı varsa, Keycloak'ı hiç aramadan bu anahtarı kullanarak doğrulayabilir.
kurtgn

Jeton kapsamı nedeniyle. Hizmet A'nın Hizmet B'den başka bir kapsamı olmalıdır, bu nedenle jeton alışverişi için Anahtar Yüküne ihtiyacınız vardır
Julian Egner

@JulianEgner Token Exchange'in şu anda Teknik Önizleme'de olması, tam olarak desteklenmemesi ve bir Env Değişkeni ile açıkça açılması dışında bu mantıklıdır. Is bearer-onlyhenüz hazır değil bu kullanım senaryosunu desteklemek için gerçekten yerinde?
irbull

@irbull token exchange'in teknik önizlemede alacağı bilgiyi nereden buldunuz?
Julian Egner

@JulianEgner Dokümanlarının en altında listelenmiştir. Keycloak.org/docs/latest/securing_apps/… içinde listelenir "Token Exchange Teknoloji Önizleme'dir ve tam olarak desteklenmez. Bu özellik varsayılan olarak devre dışıdır."
irbull

5

Yalnızca taşıyıcı erişim türü anlamı

Yalnızca taşıyıcı erişim türü, uygulamanın yalnızca taşıyıcı kodu isteklerine izin verdiği anlamına gelir. Bu açıksa, bu uygulama tarayıcı girişlerine katılamaz.

Bu nedenle, istemcinizi bearer-onlybu durumda seçerseniz, keycloak bağdaştırıcısı kullanıcıların kimliğini doğrulamaya çalışmaz, yalnızca taşıyıcı belirteçlerini doğrular. Bu nedenle keycloak belgelerinde belirtilen bearer-onlyuygulama tarayıcıdan oturum açmaya izin vermeyecektir.

Ve bir jeton alamazsan, ne yapabilirsin? Bu istemciler neden var?

İstemciniz Keycloak Sunucusunda yalnızca taşıyıcı olarak ayarlanamaz. Yine de yalnızca adaptör yapılandırmasında yalnızca taşıyıcı kullanabilirsiniz. Keycloak, "yalnızca taşıyıcı" istemcilerin (istemcinizi sunucuda ayarlarken) sunucudan belirteç almasına izin vermez. İstemcinizi sunucuda "gizli" olarak değiştirmeye çalışın ve adaptör yapılandırmanızda (keycloak.json) yalnızca taşıyıcıyı ayarlayın.

Yukarıdaki ifadeyi anlarsanız, durumda birbiriyle konuşan iki mikro hizmetiniz varsa, arayan olur confidentialve callee olurbearer-only

Ve Keycloak da bahsetti

Yalnızca taşıyıcı istemcisi hiçbir zaman oturum açma başlatılmayan web hizmetidir.Genellikle arka ucu korumak için kullanılır.

Yani herhangi bir adaptör kullanmak isterseniz bearer-only , ihtiyaca göre değişir


1
açıklama için Subodh teşekkürler! Yani bu, müşterim yalnızca taşıyıcıysa, benim için mevcut olan tek seçeneğin, anahtarın geçerli olduğundan emin olmak için Keycloak'tan doğrulama istekleri yapmak olduğu anlamına gelir. Sağ? Ama eğer durum buysa, Keycloak'ı neden arayalım? İstemcimin genel bir Keycloak anahtarı varsa, Keycloak'ı hiç aramadan bu anahtarı kullanarak doğrulayabilir.
kurtgn

@kurtgn Eğer herhangi bir adaptör kullanıyorsanız sadece ben bearer-onlyaksi takdirde istemcinizi yapmak kullanmanızı öneririmconfidential
Subodh Joshi

Hayır, adaptör kullanmıyorum, Python'da kodlama yapıyorum, Keycloak için python'a özgü adaptörler yok, bu yüzden genel OIDC libs kullanmak zorundayım
kurtgn 18:19

Keycloak + Python Integration ile hangi kütüphaneyi kullanıyorsunuz?
Subodh Joshi


0

Kısa yanıt: Yalnızca taşıyıcı içeren bir istemci kullanarak erişim belirteci alamazsınız, ancak yalnızca taşıyıcı olan bir istemcinin başka bir istemci kullanarak kabul edebileceği bir erişim belirteci alabilirsiniz.

Daha fazla ayrıntı yalnızca taşıyıcı istemciler, ön hizmet tarafından çağrılan ve yetkilendirme sunucusu tarafından güvence altına alınan web hizmeti gibi arka uç uygulamalarını yararlı bir şekilde temsil eder (= keycloak)

Arka uç / Web hizmeti uygulaması doğrudan kullanıcı tarafından çağrılmaz, bu nedenle Oauth2.0 kullanıcı etkileşimli akışında oynatılamaz. "Yalnızca taşıyıcı" ayarını bu gerçeği keycloak sunucusuna belgelemek, yöneticinin istemciyi başka türlü zorunlu değerler olmadan yapılandırmasına izin vermek (örnek yönlendirme uri…) ve birisi böyle bir istemci için bir simge almaya çalışırken yararlı hata mesajlarına izin vermek

Bununla birlikte, bu, bu istemci için belirli rolleri yapılandıramayacağınız anlamına gelmez: bu nedenle keycloak alanında görünmesi gerekir.

Ayrıca yalnızca taşıyıcı istemcinin alınan erişim belirtecini doğrulaması gerekir, özellikle de bu (önerilen) bağdaştırıcı özelliği "doğrulama belirteci-izleyici" etkinleştirilirse, yalnızca taşıyıcı istemcinin erişim belirtecinin kendisine verildiğini doğrulaması gerekir: yalnızca taşıyıcı istemci erişim belirtecinin kitle özelliğinde olmalıdır: bkz. https://www.keycloak.org/docs/latest/server_admin/index.html#_audience

keycloak tarafından yönetilen kitle için, yalnızca taşıyıcı istemcilerin keycloak alanına kaydedilmesi gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.