Microsoft Entra ID'de tek kiracılı uygulamayı çok kiracılıya dönüştürme
Birçok kuruluşa Hizmet Olarak Yazılım (SaaS) uygulaması sunuyorsanız, uygulamanızı çok kiracılıya dönüştürerek herhangi bir Microsoft Entra kiracısından oturum açmaları kabul etmek üzere yapılandırabilirsiniz. Herhangi bir Microsoft Entra kiracısında yer alan kullanıcılar, kendi hesabını uygulamanızla kullanmaya onay verdikten sonra uygulamanızda oturum açabilecektir.
Kendi hesap sistemine (veya diğer bulut sağlayıcılarının diğer oturum açma işlemlerine) sahip mevcut uygulamalar için OAuth2, OpenID Connect veya SAML aracılığıyla oturum açma kodu eklemeli ve uygulamanıza bir "Microsoft ile oturum aç" düğmesi yerleştirmelisiniz.
Bu nasıl yapılır kılavuzunda, tek bir kiracı uygulamasını Microsoft Entra çok kiracılı uygulamasına dönüştürmek için gereken dört adımı üstleneceksiniz:
- Uygulama kaydınızı çok kiracılı olacak şekilde güncelleştirme
- Kodunuzu uç noktaya istek gönderecek şekilde
/common
güncelleştirme - Kodunuzu birden çok veren değerini işleyecek şekilde güncelleştirme
- Kullanıcı ve yönetici onaylarını anlama ve uygun kod değişiklikleri yapma
Örneklerimizden birini kullanmayı denemek istiyorsanız Microsoft Entra ID ve OpenID Connect kullanarak Microsoft Graph'i çağıran çok kiracılı bir SaaS web uygulaması oluşturma bölümüne bakın
Önkoşullar
- Microsoft Entra kiracısı. Bir kiracınız yoksa Hızlı Başlangıç: Microsoft Entra Id'de yeni kiracı oluşturma bölümünden bir kiracı oluşturabilirsiniz
- Microsoft kimlik platformu kayıtlı bir uygulama. Uygulamanız yoksa Hızlı Başlangıç: Uygulamayı Microsoft kimlik platformu kaydetme bölümünden oluşturabilirsiniz.
- Microsoft Entra Id'de Kiracı hakkında bilgi.
- Uygulama kodunuzu düzenlemenizi sağlayan tümleşik bir geliştirme ortamı (IDE).
Kaydı çok kiracılı olacak şekilde güncelleştirme
Varsayılan olarak, Microsoft Entra Id'deki web uygulaması/API kayıtları oluşturma işleminden sonra tek kiracılıdır. Kaydı çok kiracılı hale getirmek için Microsoft Entra yönetim merkezinde oturum açın ve güncelleştirmek istediğiniz uygulama kaydını seçin. Uygulama kaydı açıkken Kimlik Doğrulama bölmesini seçin ve Desteklenen hesap türleri bölümüne gidin. Ayarı herhangi bir kuruluş dizinindeki Hesaplar olarak değiştirin.
Microsoft Entra yönetim merkezinde tek kiracılı bir uygulama oluşturulduğunda, Genel Bakış sayfasında listelenen öğelerden biri Uygulama Kimliği URI'sidir. Bu, bir uygulamanın protokol iletilerinde tanımlanmasının yollarından biridir ve herhangi bir zamanda eklenebilir. Tek kiracılı uygulamalar için Uygulama Kimliği URI'si bu kiracı içinde genel olarak benzersiz olabilir. Buna karşılık, çok kiracılı uygulamalar için tüm kiracılar arasında genel olarak benzersiz olmalıdır ve bu da Microsoft Entra Id'nin uygulamayı tüm kiracılar arasında bulabilmesini sağlar.
Örneğin, kiracınızın adı geçerli bir Uygulama Kimliği URI'si contoso.onmicrosoft.com
ise olacaktır https://contoso.onmicrosoft.com/myapp
. Uygulama Kimliği URI'si bu desene uymuyorsa, bir uygulamayı çok kiracılı olarak ayarlamak başarısız olur.
İstek göndermek için kodunuzu güncelleştirin /common
Çok kiracılı bir uygulamayla uygulama kullanıcının hangi kiracıdan olduğunu hemen anlayamaz, bu nedenle istekler kiracının uç noktasına gönderemez. Bunun yerine, istekler tüm Microsoft Entra kiracılarında hizmet veren ortak bir uç noktaya (https://login.microsoftonline.com/common
) gönderilir ve istekleri işleyen merkezi bir hub görevi görür.
Uygulamanızı IDE'nizde açın, kodunuzu düzenleyin ve kiracı kimliğinizin değerini olarak /common
değiştirin. Bu uç nokta bir kiracı veya verenin kendisi değildir. Microsoft kimlik platformu uç noktada bir istek /common
aldığında, kullanıcıyı oturum açar ve böylece kullanıcının hangi kiracıdan olduğunu bulur. Bu uç nokta, Microsoft Entra Id (OpenID Connect, OAuth 2.0, SAML 2.0, WS-Federation) tarafından desteklenen tüm kimlik doğrulama protokolleriyle çalışır.
Uygulamaya verilen oturum açma yanıtı, kullanıcıyı temsil eden bir belirteç içerir. Belirteçteki veren değeri, uygulamaya kullanıcının hangi kiracıdan olduğunu söyler. Bir yanıt uç noktadan döndürdüğünde /common
, belirteçteki veren değeri kullanıcının kiracısına karşılık gelir.
Not
Gerçekte çok kiracılı uygulamalar için 2 yetkili vardır:
https://login.microsoftonline.com/common
herhangi bir kuruluş dizininde (herhangi bir Microsoft Entra dizini) ve kişisel Microsoft hesaplarında (Skype, XBox gibi) hesapları işleyen uygulamalar için.https://login.microsoftonline.com/organizations
herhangi bir kuruluş dizininde (herhangi bir Microsoft Entra dizininde) hesapları işleyen uygulamalar için:
Bu belgedeki açıklamalarda kullanılır common
. Ancak uygulamanız Microsoft kişisel hesaplarını desteklemiyorsa ile değiştirebilirsiniz organizations
.
Kodunuzu birden çok veren değerini işleyecek şekilde güncelleştirme
Web uygulamaları ve web API'leri Microsoft kimlik platformu belirteçleri alır ve doğrular. Yerel istemci uygulamaları erişim belirteçlerini doğrulamaz ve bunları opak olarak ele almalıdır. Bunun yerine, Microsoft kimlik platformu belirteçleri ister ve alır ve daha sonra doğrulandıkları API'lere göndermek için bunu yapar.
Çok kiracılı uygulamalar bir belirteci doğrularken daha fazla denetim gerçekleştirmelidir. Çok kiracılı bir uygulama, veya /common
anahtar URL'lerinden /organizations
anahtar meta verilerini kullanacak şekilde yapılandırılır. Uygulama, belirteçteki talebin issuer
kiracı kimliği (tid
) talebi içerdiğini denetlemenin yanı sıra yayımlanan meta verilerdeki özelliğin belirteçteki taleple eşleşdiğini iss
iss
doğrulamalıdır. Daha fazla bilgi için bkz . Belirteçleri doğrulama.
Kullanıcı ve yönetici onaylarını anlama ve uygun kod değişiklikleri yapma
Kullanıcının Microsoft Entra Id'de bir uygulamada oturum açması için uygulamanın kullanıcının kiracısında temsil edilmesi gerekir. Bu, kuruluşun kiracılarındaki kullanıcılar uygulamada oturum açarken benzersiz ilkeler uygulama gibi işlemler yapmasına olanak tanır. Tek kiracılı bir uygulama için kaydı Microsoft Entra yönetim merkezi aracılığıyla kullanabilirsiniz.
Çok kiracılı bir uygulama için, uygulamanın ilk kaydı geliştirici tarafından kullanılan Microsoft Entra kiracısında bulunur. Farklı bir kiracıdaki bir kullanıcı uygulamada ilk kez oturum açtığında, Microsoft Entra Id uygulama tarafından istenen izinleri onaylamasını ister. Onaylarsa, kullanıcının kiracısında hizmet sorumlusu adlı uygulamanın bir gösterimi oluşturulur ve oturum açma işlemi devam edebilir. Kullanıcının uygulamaya onayını kaydeden dizinde bir temsilci de oluşturulur. Uygulamanın Application ve ServicePrincipal nesneleri ve birbirleriyle ilişkileri hakkında ayrıntılı bilgi için bkz . Uygulama nesneleri ve hizmet sorumlusu nesneleri.
Bu onay deneyimi, uygulama tarafından istenen izinlerden etkilenir. Microsoft kimlik platformu iki tür izni destekler;
- Temsilci: Bu izin, uygulamaya kullanıcının yapabileceklerinin bir alt kümesi için oturum açmış bir kullanıcı olarak davranma olanağı verir. Örneğin, bir uygulamaya oturum açmış kullanıcının takvimini okuması için temsilci izni verilmektedir.
- Yalnızca uygulama: Bu izin doğrudan uygulamanın kimliğine verilir. Örneğin, uygulamada kimin oturum açtığından bağımsız olarak bir uygulamaya kiracıdaki kullanıcıların listesini okuma izni verilmektedir.
Bazı izinler normal bir kullanıcı tarafından onaylanabilirken, diğerleri kiracı yöneticisinin onayına ihtiyaç duyar.
Kullanıcı ve yönetici onayı hakkında daha fazla bilgi edinmek için bkz . Yönetici onayı iş akışını yapılandırma.
Yönetici onayı
Yalnızca uygulama izinleri her zaman bir kiracı yöneticisinin iznini gerektirir. Uygulamanız yalnızca uygulama izni isterse ve bir kullanıcı uygulamada oturum açmaya çalışırsa, kullanıcının onay veremeyeceğini belirten bir hata iletisi görüntülenir.
Belirli temsilci izinleri de bir kiracı yöneticisinin onayı gerektirir. Örneğin, oturum açmış kullanıcı olarak Microsoft Entra Id'ye geri yazabilmek için kiracı yöneticisinin onayı gerekir. Yalnızca uygulama izinleri gibi, sıradan bir kullanıcı yönetici onayı gerektiren bir temsilci izni isteyen bir uygulamada oturum açmaya çalışırsa, uygulama bir hata alır. İzin için yönetici onayı gerekip gerekmediği, kaynağı yayımlayan geliştirici tarafından belirlenir ve kaynağın belgelerinde bulunabilir. Microsoft Graph API'sinin izin belgeleri, hangi izinlerin yönetici onayı gerektirdiğini gösterir.
Uygulamanız yönetici onayı gerektiren izinler kullanıyorsa, yöneticinin eylemi başlatabileceği bir düğme veya bağlantı eklemeyi göz önünde bulundurun. Uygulamanızın bu eylem için gönderdiği istek, sorgu dizesi parametresini de içeren prompt=consent
olağan OAuth2/OpenID Connect yetkilendirme isteğidir. Yönetici onay verdikten ve hizmet sorumlusu müşterinin kiracısında oluşturulduktan sonra sonraki oturum açma istekleri için prompt=consent
parametresi gerekmez. Yönetici, istenen izinlerin kabul edilebilir olduğuna karar verdiğinden, kiracıdaki diğer kullanıcılardan bu noktadan sonra onay istenmez.
Kiracı yöneticisi, normal kullanıcıların uygulamalara onay verme özelliğini devre dışı bırakabilir. Bu özellik devre dışı bırakılırsa, uygulamanın kiracıda kullanılması için her zaman yönetici onayı gerekir. Microsoft Entra yönetim merkezinde uygulamanızı son kullanıcı onayı devre dışı bırakılmış olarak test edebilirsiniz. Kurumsal uygulamalar>Onayı ve izinleri bölümünde Kullanıcı onayına izin verme seçeneğini işaretleyin.
Parametresi, prompt=consent
yönetici onayı gerektirmeyen izinler isteyen uygulamalar tarafından da kullanılabilir. Uygulamanın kiracı yöneticisinin bir kez "kaydolduğu" bir deneyime ihtiyaç duyması ve bu noktadan sonra başka hiçbir kullanıcıdan onay istenmez olması, bunun ne zaman kullanılacağını gösteren bir örnektir.
Bir uygulama yönetici onayı gerektiriyorsa ve yönetici parametre gönderilmeden prompt=consent
oturum açarsa, yönetici uygulamayı başarıyla onayladığında yalnızca kullanıcı hesabı için geçerli olur. Normal kullanıcılar yine de uygulamada oturum açamaz veya uygulamayı onaylayamaz. Bu özellik, kiracı yöneticisine diğer kullanıcılara erişim izni vermeden önce uygulamanızı keşfetme olanağı vermek istiyorsanız kullanışlıdır.
Onay ve çok katmanlı uygulamalar
Uygulamanızın, her biri Microsoft Entra Id'de kendi kaydıyla temsil edilen birden çok katmanı olabilir. Örneğin, web API'sini çağıran yerel bir uygulama veya web API'sini çağıran bir web uygulaması. Her iki durumda da istemci (yerel uygulama veya web uygulaması) kaynağı (web API' sini) çağırmak için izin ister. İstemcinin müşterinin kiracısına başarıyla onay verebilmesi için, izin istediği tüm kaynakların müşterinin kiracısında zaten mevcut olması gerekir. Bu koşul karşılanmazsa Microsoft Entra Id, önce kaynağın eklenmesi gerektiğini belirten bir hata döndürür.
Tek bir kiracıda birden çok katman
Mantıksal uygulamanız ayrı bir istemci ve kaynak gibi iki veya daha fazla uygulama kaydından oluşuyorsa bu sorun olabilir. Önce kaynağı dış kiracıya nasıl alırsınız? Microsoft Entra Id, istemci ve kaynağın tek bir adımda onaylanmalarını sağlayarak bu durumu kapsar. Kullanıcı, onay sayfasında hem istemci hem de kaynak tarafından istenen izinlerin toplamını görür. Bu davranışı etkinleştirmek için, kaynağın uygulama kaydı istemcinin Uygulama Kimliğini uygulama bildiriminde bir knownClientApplications
olarak içermelidir. Örneğin:
"knownClientApplications": ["12ab34cd-56ef-78gh-90ij11kl12mn"]
Bu, çok kiracılı bir uygulama örneğinde gösterilmiştir. Aşağıdaki diyagramda, tek bir kiracıda kayıtlı çok katmanlı bir uygulama için onaylara genel bir bakış sağlanır.
Birden çok kiracıda birden çok katman
Bir uygulamanın farklı katmanları farklı kiracılarda kayıtlıysa benzer bir durum ortaya çıkar. Örneğin, Exchange Online API'sini çağıran yerel bir istemci uygulaması oluşturma örneğini düşünün. Yerel uygulamayı geliştirmek ve daha sonra yerel uygulamanın müşterinin kiracısında çalışması için Exchange Online hizmet sorumlusunun mevcut olması gerekir. Bu durumda, geliştirici ve müşteri, kiracılarında oluşturulacak hizmet sorumlusu için Exchange Online'ı satın almalıdır.
Bu, Microsoft dışında bir kuruluş tarafından oluşturulmuş bir API ise, API'nin geliştiricisinin müşterilerine uygulamanın müşteri kiracılarına onay vermesi için bir yol sağlaması gerekir. Önerilen tasarım, üçüncü taraf geliştiricinin API'yi, kaydolmayı uygulayacak bir web istemcisi olarak da çalışabilecek şekilde derlemesi içindir. Bunu yapmak için:
- API'nin çok kiracılı uygulama kaydı/kod gereksinimlerini uyguladığından emin olmak için önceki bölümleri izleyin.
- API'nin kapsamlarını/rollerini göstermenin yanı sıra, kaydın "Oturum aç ve kullanıcı profilini oku" iznini (varsayılan olarak sağlanır) içerdiğinden emin olun.
- Web istemcisinde bir oturum açma/kaydolma sayfası uygulayın ve yönetici onayı kılavuzunu izleyin.
- Kullanıcı uygulamaya onay verdikten sonra kiracısında hizmet sorumlusu ve onay temsilcisi bağlantıları oluşturulur ve yerel uygulama API için belirteçler alabilir.
Aşağıdaki diyagramda, farklı kiracılarda kayıtlı çok katmanlı bir uygulama için onaylara genel bir bakış sağlanır.
Onayı iptal etme
Kullanıcılar ve yöneticiler uygulamanızın onayını istedikleri zaman iptal edebilir:
- Kullanıcılar, uygulamaları Erişim Paneli Uygulamalar listesinden kaldırarak tek tek uygulamalara erişimi iptal eder.
- Yöneticiler, Microsoft Entra yönetim merkezinin Kurumsal uygulamalar bölümünü kullanarak uygulamalara erişimi kaldırarak iptal eder. Uygulamayı seçin ve erişimi iptal etmek için İzinler sekmesine gidin.
Yönetici bir kiracıdaki tüm kullanıcılar için bir uygulamaya onay verirse, kullanıcılar erişimi tek tek iptal yapamaz. Erişimi yalnızca yönetici ve yalnızca uygulamanın tamamı için iptal edebilir.
Çok kiracılı uygulamalar ve önbelleğe alma erişim belirteçleri
Çok kiracılı uygulamalar, Microsoft Entra Kimliği ile korunan API'leri çağırmak için erişim belirteçleri de alabilir. Microsoft Kimlik Doğrulama Kitaplığı'nı (MSAL) çok kiracılı bir uygulamayla kullanırken karşılaşılan yaygın bir hata, başlangıçta kullanan /common
bir kullanıcı için bir belirteç istemek, bir yanıt almak ve aynı kullanıcı için de kullanarak /common
sonraki bir belirteç istemektir. Microsoft Entra Id'den gelen yanıt kiracıdan geldiğinden, /common
MSAL belirteci kiracıdan olduğu gibi önbelleğe alır. Kullanıcı için erişim belirteci almak için yapılan sonraki çağrı /common
önbellek girdisini kaçırır ve kullanıcıdan yeniden oturum açması istenir. Önbelleğin eksik olmasını önlemek için, kiracının uç noktasında zaten oturum açmış bir kullanıcı için sonraki çağrıların yapıldığından emin olun.