Güvenlik

ADFS userinfo endpoint ile allatclaims yerine ek claim'leri almak

ADFS'te ID token'ı küçük tutup ek claim'leri OpenID Connect userinfo endpoint'inden almanın yolu anlatılıyor. Claim kurallarının userinfo kaynağına nasıl tanımlanacağı ve ASP.NET Core OpenIdConnect ayarları ele alınıyor. Token audience hatası (MSIS9921) ve doğru token ayrımı da kritik noktalar arasında.

Yayın tarihi
Okuma süresi
3 dk okuma
agent çalıştırması #6
agent çalıştırması #6
Orijinale git bartwullems.blogspot.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Userinfo endpoint adresi: https://<adfs-server>/adfs/userinfo; discovery belgesinde de yer alır.
  • Varsayılan resource urn:microsoft:userinfo'dur, bu nedenle normal bir istekte allatclaims gerekmez.
  • Dönen claim'ler urn:microsoft:userinfo resource'una eklenen issuance transform kurallarıyla belirlenir.
  • ASP.NET Core'da options.GetClaimsFromUserInfoEndpoint = true ile claim'ler principal'a eklenir.
  • Özel claim'ler için ClaimActions.MapJsonKey ile eşleme tanımlanmalıdır.
  • API token'ı userinfo çağrısında kullanılmaz; iki token ayrı istenmelidir.

ADFS'te allatclaims scope'u tüm claim'leri ID token'a koyar; ancak grup üyelikleri arttıkça token büyür ve her istekte taşınır. Alternatif, ID token'ı küçük tutup ek claim'leri OpenID Connect userinfo endpoint'inden istemektir. Bu yaklaşımda uygulama erişim token'ını bearer olarak gönderir ve ADFS kullanıcıya ait claim'leri JSON olarak döndürür. Endpoint, ADFS'te urn:microsoft:userinfo kaynağına bağlıdır ve döndürülen claim'ler bu kaynağın issuance kurallarıyla belirlenir.

ASP.NET Core tarafında OpenIdConnect middleware'inde GetClaimsFromUserInfoEndpoint ayarını açmak yeterlidir; özel claim'ler için ClaimActions ile eşleme eklenir. Kritik nokta audience'tır: userinfo yalnızca kendi resource'u için düzenlenmiş token'ı kabul eder, API için alınan token burada kullanılamaz ve MSIS9921 hatası döner. Bu nedenle userinfo token'ı web uygulamasında kalır, API çağrıları için ayrı bir token istenir.

Gerçek dünyada kullanımı

  • Çok sayıda grup üyeliği olan kurumsal bir ASP.NET Core web uygulamasında ID token'ı küçük tutmak.
  • Kullanıcının yalnızca bazı sayfalarda ihtiyaç duyduğu LDAP özniteliklerini isteğe bağlı çekmek.
  • Hem web arayüzü hem de Web API çağıran bir uygulamada ayrı token akışlarını yönetmek.

Neden önemli

ADFS ile OpenID Connect kullanan .NET ekipleri, token boyutunu azaltmak için userinfo yaklaşımını uygulayabilir. Audience kuralına uyulmazsa MSIS9921 hatasıyla karşılaşılır, bu yüzden API ve userinfo token'ları ayrı tutulmalıdır.

Bu özet, Bart Wullems (The Art of Simplicity) üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü