Kurumsal uygulamalar için SAML belirtecsinde verilen talepleri özelleştirme

Günümüzde, Microsoft kimlik platformu azure AD uygulama galerisinde önceden tümleştirilmiş uygulamalar ve özel uygulamalar da dahil olmak üzere çoğu kurumsal uygulamayla çoklu oturum açma (SSO) desteği sunar. Bir kullanıcı SAML 2.0 protokolünü kullanarak Microsoft kimlik platformu uygulamanın kimliğini doğrularsa, Microsoft kimlik platformu uygulamaya bir belirteç gönderir (HTTP POST aracılığıyla). Ardından uygulama, kullanıcı adı ve parola sorularak oturum açmak için belirteci doğrular ve kullanır. Bu SAML belirteçleri, talep olarak bilinen kullanıcı hakkında bilgi parçaları içerir.

Talep, kimlik sağlayıcısının o kullanıcı için verilen belirteci içindeki bir kullanıcı hakkında ifade ettiği bilgilerdir. SAML belirtecsinde,bu veriler genellikle SAML Öznitelik Deyiminde yer alır. Kullanıcının benzersiz kimliği genellikle SAML Konu içinde temsil edilen ve Ad Tanımlayıcısı olarak da adlandırılan bir kimliktir.

Varsayılan olarak Microsoft kimlik platformu, Azure AD'de kullanıcının kullanıcı adı değerine (kullanıcı asıl adı olarak da bilinir) sahip bir talep içeren bir SAML belirteci verir ve bu da kullanıcı adını benzersiz olarak NameIdentifier tanımlayabilir. SAML belirtecinde kullanıcının e-posta adresini, adını ve soyadını içeren ek beyanlar da vardır.

SAML belirtecsinde verilen talepleri görüntülemek veya düzenlemek için uygulamayı uygulamanın içinde Azure portal. Ardından Kullanıcı Öznitelikleri Talepleri bölümünü açın.

Open the User Attributes & Claims section in the Azure portal

SAML belirtecsinde verilen talepleri düzenlemeniz gerektirenin iki olası nedeni vardır:

  • Uygulama, veya NameID talebinin Azure AD'de depolanan kullanıcı adı (veya kullanıcı asıl NameIdentifier adı) dışında bir şey olması gerekir.
  • Uygulama farklı beyan URI'leri veya beyan değerleri kümesi gerektirecek şekilde yazıldı.

NameID'i düzenleme

NameID (ad tanımlayıcısı değeri) değerini düzenlemek için:

  1. Ad tanımlayıcısı değer sayfasını açın.

  2. Özniteliğine uygulamak istediğiniz özniteliği veya dönüştürmeyi seçin. İsteğe bağlı olarak, NameID talebine sahip olmak istediğiniz biçimi belirtebilirsiniz.

    Edit the NameID (name identifier) value

NameID biçimi

SAML isteği nameIDPolicy öğesini belirli bir biçimde içeriyorsa, Microsoft kimlik platformu isteğin biçimini kabul ediyordur.

SAML isteği NameIDPolicy için bir öğe içeriyorsa, Microsoft kimlik platformu belirttiğiniz biçimle NameID verir. Biçim belirtilmezse, Microsoft kimlik platformu seçilen talep kaynağıyla ilişkili varsayılan kaynak biçimini kullanır. Bir dönüştürmenin null veya geçersiz değerle sonuçlandırılması, Azure AD nameIdentifier içinde kalıcı bir çift tanımlayıcı gönderir.

Ad tanımlayıcısı biçimi seçin açılan listesinden aşağıdaki seçeneklerden birini seçebilirsiniz.

NameID biçimi Description
Varsayılan Microsoft kimlik platformu varsayılan kaynak biçimini kullanır.
Kalıcı Microsoft kimlik platformu NameID biçimi olarak Kalıcı'dır.
E-posta adresi Microsoft kimlik platformu NameID biçimi olarak EmailAddress kullanmayacak.
Belirtilmemiş Microsoft kimlik platformu, NameID biçimi olarak Belirtilmemiş'i kullanır.
Windows etki alanı tam adı Microsoft kimlik platformu WindowsDomainQualifiedName biçimini kullanır.

Geçici NameID de de destek alır, ancak açılan liste içinde kullanılamaz ve Azure tarafında yapılandıramaz. NameIDPolicy özniteliği hakkında daha fazla bilgi edinmek için bkz. Tek Sign-On SAML protokolü.

Öznitelikler

NameIdentifier(veya NameID) talebi için istenen kaynağı seçin. Aşağıdaki seçeneklerden birini seçebilirsiniz.

Adı Açıklama
E-posta Kullanıcının e-posta adresi
Userprincipalname Kullanıcının kullanıcı asıl adı (UPN)
onpremisessamaccountname Şirket içi Azure AD'den eşitlenen SAM hesabı adı
Objectıd Azure AD'de kullanıcının objectid'i
Employeeıd Kullanıcının çalışan kimliği
Dizin genişletmeleri Azure AD Bağlan Sync kullanılarak şirket içi Active Directory dizin uzantıları
Uzantı Öznitelikleri 1-15 Azure AD şemasını genişletmek için kullanılan şirket içi uzantı öznitelikleri

Daha fazla bilgi için bkz. Tablo 3: Kaynak başına geçerli kimlik değerleri.

Ayrıca, Azure AD'de tanımladığınız taleplere herhangi bir sabit (statik) değer atabilirsiniz. Sabit değer atamak için lütfen aşağıdaki adımları izleyin:

  1. Uygulama Azure portal,Kullanıcı Öznitelikleri Talepleri bölümünde, talepleri düzenlemek için Düzenle simgesine tıklayın.

  2. Değiştirmek istediğiniz gerekli talep üzerine tıklayın.

  3. Source özniteliğinde, sabit değeri tırnak içinde olmadan girin ve Kaydet'e tıklayın.

    Org Attributes & Claims section in the Azure portal

  4. Sabit değer aşağıda olduğu gibi görüntülenir.

    Edit Attributes & Claims section in the Azure portal

Özel talepler - dönüştürmeler

Talep dönüştürme işlevlerini de kullanabilirsiniz.

İşlev Açıklama
ExtractMailPrefix() Etki alanı soneki e-posta adresini veya kullanıcı asıl adını kaldırır. Bu, geçirilen kullanıcı adının yalnızca ilk bölümünü ayıklar (örneğin, yerine "joe_smith" joe_smith@contoso.com ).
ToLower() Seçilen özniteliğin karakterlerini küçük harf karakterlere dönüştürür.
ToUpper() Seçilen özniteliğin karakterlerini büyük harf karakterlere dönüştürür.

Uygulamaya özgü talepler ekleme

Uygulamaya özgü talepler eklemek için:

  1. Kullanıcı Öznitelikleri Talepleri'nin altındaYeni talep ekle'yi seçerek Kullanıcı taleplerini yönet sayfasını açın.
  2. Taleplerin adını girin. Değerin SAML özelliklerine göre URI desenini izlemesi kesinlikle gerekli değil. Bir URI düzenine ihtiyacınız varsa, bunu Ad Alanı alanına koyebilirsiniz.
  3. Talebin değerini almak için kaynak değerini seçin. Kaynak öznitelik açılan listesinden bir kullanıcı özniteliğini seçerek veya bir dönüştürmeyi talep olarak yaymadan önce kullanıcı özniteliğine uygulayabilirsiniz.

Talep dönüştürmeleri

Bir kullanıcı özniteliğine dönüştürme uygulamak için:

  1. Talebi yönet'de,Dönüştürmeyi yönet sayfasını açmak için talep kaynağı olarak Dönüşüm'i seçin.

  2. Dönüştürme açılan listesinden işlevi seçin. Seçilen işleve bağlı olarak, dönüştürmede değerlendirmek için parametreler ve sabit bir değer sağlamanız gerekir. Kullanılabilir işlevler hakkında daha fazla bilgi için aşağıdaki tabloya bakın.

  3. (önizleme) Treat source as multivalued , dönüştürmenin tüm değerlere mi yoksa yalnızca ilk değerlere mi uygulan gerektiğini belirten bir onay kutusu. Varsayılan olarak, dönüştürmeler yalnızca çok değerli bir talepte ilk öğeye uygulanır; bu kutu işaretlerini kullanarak tüm öğeye uygulanmasına izin verir. Bu onay kutusu yalnızca çok değerli öznitelikler için etkinleştirilir, örneğin user.proxyaddresses .

  4. Birden çok dönüştürme uygulamak için Dönüştürme ekle'ye tıklayın. Bir talepte en fazla iki dönüştürme uygulayabilirsiniz. Örneğin, önce e-posta ön eklerini ayıklayabilirsiniz. user.mail Ardından dizeyi büyük harfli hale geldi.

    Multiple claims transformation

Talepleri dönüştürmek için aşağıdaki işlevleri kullanabilirsiniz.

İşlev Açıklama
ExtractMailPrefix() Etki alanı soneki e-posta adresini veya kullanıcı asıl adını kaldırır. Bu, geçirilen kullanıcı adının yalnızca ilk bölümünü ayıklar (örneğin, yerine "joe_smith" joe_smith@contoso.com ).
Join() İki özniteliği bir arada kullanarak yeni bir değer oluşturur. İsteğe bağlı olarak, iki öznitelik arasında bir ayırıcı kullanabilirsiniz.
ToLowercase() Seçilen özniteliğin karakterlerini küçük harf karakterlere dönüştürür.
ToUppercase() Seçilen özniteliğin karakterlerini büyük harf karakterlere dönüştürür.
Contains() Giriş belirtilen değerle eşiliyorsa bir öznitelik veya sabit çıktısı verir. Aksi takdirde, eşleşme yoksa başka bir çıkış belirtsiniz.
Örneğin, değerin "@contoso.com" etki alanını içeriyorsa, değerin kullanıcının e-posta adresi olduğu bir talep yayırsanız, aksi takdirde kullanıcı asıl adını vermek istersiniz. Bunu yapmak için aşağıdaki değerleri yapılandırmış oluruz:
Parametre 1(giriş): user.email
Değer:"@contoso.com"
Parametre 2 (çıkış): user.email
Parametre 3 (eşleşme yoksa çıkış): user.userprincipalname
EndWith() Giriş belirtilen değerle sona ererse bir öznitelik veya sabit çıktısı verir. Aksi takdirde, eşleşme yoksa başka bir çıkış belirtsiniz.
Örneğin, çalışan kimliği "000" ile sona ererse değerin kullanıcının çalışan kimliği olduğu bir talep yayırsanız, aksi takdirde bir uzantı özniteliği çıkışı yapmak istersiniz. Bunu yapmak için aşağıdaki değerleri yapılandırmış oluruz:
Parametre 1(input): user.employeeid
Değer:"000"
Parametre 2 (çıktı): user.employeeid
Parametre 3 (eşleşme yoksa çıkış): user.extensionattribute1
StartWith() Giriş belirtilen değerle başlıyorsa bir özniteliği veya sabiti verir. Aksi takdirde, eşleşme yoksa başka bir çıkış belirtsiniz.
Örneğin, ülke/bölge "ABD" ile başlıyorsa değerin kullanıcının çalışan kimliği olduğu bir talep yayırsanız, aksi takdirde uzantı özniteliğini vermek istersiniz. Bunu yapmak için aşağıdaki değerleri yapılandırmış oluruz:
Parametre 1(input): user.country
Değer:"US"
Parametre 2 (çıktı): user.employeeid
Parametre 3 (eşleşme yoksa çıkış): user.extensionattribute1
Extract() - Eşleştirmeden sonra Belirtilen değerle eşledikten sonra alt dizeyi döndürür.
Örneğin, girişin değeri "Finance_BSimon" ise eşleşen değer "Finance_" ise talebin çıkışı "BSimon" olur.
Extract() - Eşleştirmeden önce Belirtilen değerle eşleşene kadar alt dizeyi döndürür.
Örneğin, girişin değeri "BSimon_US" ise eşleşen değer "_US" ise talebin çıkışı "BSimon" olur.
Extract() - Eşleştirme arasında Belirtilen değerle eşleşene kadar alt dizeyi döndürür.
Örneğin, girişin değeri "Finance_BSimon_US" ise ilk eşleşen değer "Finance_", ikinci eşleştirme değeri "_US" ise talebin çıkışı "BSimon" olur.
ExtractAlpha() - Ön Ek Dizenin alfabetik ön ek bölümünü döndürür.
Örneğin, girişin değeri "BSimon_123" ise "BSimon" döndürür.
ExtractAlpha() - Sonek Dizenin alfabetik son ek bölümünü döndürür.
Örneğin girişin değeri "123_Simon" ise "Simon" değerini döndürür.
ExtractNumeric() - Ön Ek Dizenin ön ek sayısal bölümünü döndürür.
Örneğin girişin değeri "123_BSimon" ise "123" değerini döndürür.
ExtractNumeric() - Sonek Dizenin son ek sayısal bölümünü döndürür.
Örneğin girişin değeri "BSimon_123" ise "123" değerini döndürür.
IfEmpty() Giriş null veya boşsa bir öznitelik veya sabit çıkış oluşturur.
Örneğin, bir extensionattribute içinde depolanan bir özniteliğin çıkışını vermek için, verilen kullanıcının çalışan kimliği boşsa. Bunu yapmak için aşağıdaki değerleri yapılandırmış oluruz:
Parametre 1(giriş): user.employeeid
Parametre 2 (çıkış): user.extensionattribute1
Parametre 3 (eşleşme yoksa çıkış): user.employeeid
IfNotEmpty() Giriş null veya boşsa bir öznitelik veya sabit çıkış oluşturur.
Örneğin, bir extensionattribute içinde depolanan bir özniteliğin çıkışını almak için, verilen kullanıcının çalışan kimliği boş değildir. Bunu yapmak için aşağıdaki değerleri yapılandırmış oluruz:
Parametre 1(giriş): user.employeeid
Parametre 2 (çıkış): user.extensionattribute1
Substring() – Sabit Uzunluk (Önizleme) Belirtilen konumdaki karakterden başarak bir dize talep türünün parçalarını ayıklar ve belirtilen karakter sayısını döndürür.
SourceClaim - Dönüşümün yürütülmesi gereken talep kaynağı.
StartIndex - Bu örnekteki bir alt dizenin sıfır tabanlı başlangıç karakteri konumu.
Uzunluk: Alt dizenin karakter sayısı.
Örneğin:
sourceClaim – PleaseExtractThisNow
StartIndex – 6
Uzunluk – 11
Çıkış: ExtractThis
Substring() – EndOfString (Önizleme) Belirtilen konumdaki karakterden başarak bir dize talep türünün parçalarını ayıklar ve talebin geri kalanını belirtilen başlangıç dizininden döndürür.
SourceClaim - Dönüşümün yürütülmesi gereken talep kaynağı.
StartIndex - Bu örnekteki bir alt dizenin sıfır tabanlı başlangıç karakteri konumu.
Örneğin:
sourceClaim – PleaseExtractThisNow
StartIndex – 6
Çıkış: ExtractThisNow

Ek dönüştürmelere ihtiyacınız varsa, fikirlerinizi Azure AD'deSaaS uygulama kategorisi altındaki geri bildirim forumuna gönderin.

SAML belirteçleri için UPN talebi ekleme

Talep, SAML kısıtlanmış talep kümesi kapsamındadır, bu nedenle Kullanıcı Öznitelikleri Talepleri http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upnbölümüne ekleriz.http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn Geçici bir çözüm olarak, bunu isteğe bağlı bir talep olarak Uygulama kayıtları olarak Azure portal.

Uygulamayı uygulama içinde açın Uygulama kayıtları Belirteç yapılandırması'nın ardından İsteğe bağlı talep ekle'yi seçin. SAML belirteci türünü seçin, listeden upn'i seçin ve belirteci almak için Ekle'ye tıklayın.

Koşulları temel alarak talepler yayma

Bir talebin kaynağını kullanıcı türüne ve kullanıcının ait olduğu gruba göre belirtsiniz.

Kullanıcı türü şöyle olabilir:

  • Herhangibir : Tüm kullanıcıların uygulamaya erişmesine izin verilir.
  • Üyeler:Kiracının yerel üyesi
  • Tüm konuklar:Kullanıcı, Azure AD ile veya Azure AD olmadan bir dış kuruluştan getiri.
  • AAD konuk:Konuk kullanıcı, Azure AD kullanan başka bir kuruluşa aittir.
  • Dış konuklar:Konuk kullanıcı, Azure AD'ye sahip olmayan bir dış kuruluşa aittir.

Bunun yararlı olduğu senaryolardan biri, bir talebin kaynağının bir konuk ve uygulamaya erişen bir çalışan için farklı olmasıdır. Kullanıcı bir çalışansa NameID'nin user.email kaynağı olduğunu, ancak kullanıcı bir konuksa NameID'nin user.extensionattribute1 kaynağından olduğunu belirtmektesiniz.

Talep koşulu eklemek için:

  1. Talebi yönet'deTalep koşullarını genişletin.
  2. Kullanıcı türünü seçin.
  3. Kullanıcının ait olması gereken grubu seçin. Belirli bir uygulama için tüm talepler arasında en fazla 50 benzersiz grup seçebilirsiniz.
  4. Talebin değerini almak için kaynak değerini seçin. Kaynak öznitelik açılan listesinden bir kullanıcı özniteliğini seçerek veya bir dönüştürmeyi talep olarak yaymadan önce kullanıcı özniteliğine uygulayabilirsiniz.

Koşulları ekleme sırası önemlidir. Azure AD, talepte hangi değerin yayma olduğuna karar vermek için koşulları üstten aşağıya doğru değerlendirir. İfadeyle eşleşen son değer talepte yayımlar.

Örneğin Britta Simon, Contoso kiracısı içinde bir konuk kullanıcıdır. Ayrıca Azure AD kullanan başka bir kuruluşa ait. Fabrikam uygulaması için aşağıdaki yapılandırmayı ele alınarak, Britta Fabrikam'da oturum Microsoft kimlik platformu aşağıdaki gibi değerlendirir.

İlk olarak, Microsoft kimlik platformu Britta'nın kullanıcı türünün olduğunu All guests doğrular. Bu doğru olduğu için Microsoft kimlik platformu talebin kaynağını 'a user.extensionattribute1 atar. İkincisi, Microsoft kimlik platformu Britta'nın kullanıcı türünün olup olmadığını doğrular çünkü bu da Microsoft kimlik platformu talebin kaynağını AAD guests 'a user.mail atar. Son olarak, talep user.mail Britta değeriyle birlikte yayımlar.

Claims conditional configuration

Sonraki adımlar