Çoklu oturum açma SAML protokolü
Bu makale, Microsoft Entra ID'nin çoklu oturum açma (SSO) için desteklediği SAML 2.0 kimlik doğrulama isteklerini ve yanıtlarını kapsar.
Aşağıdaki protokol diyagramında çoklu oturum açma sırası açıklanmaktadır. Bulut hizmeti (hizmet sağlayıcısı), bir (kimlik doğrulama isteği) öğesini Microsoft Entra Id'ye (kimlik sağlayıcısı) geçirmek için HTTP AuthnRequest
Yeniden Yönlendirme bağlaması kullanır. Microsoft Entra Id daha sonra bir öğeyi bulut hizmetine göndermek için bir Response
HTTP gönderi bağlaması kullanır.
Not
Bu makalede çoklu oturum açma için SAML kullanımı ele alınmaktadır. Çoklu oturum açmayı işlemenin diğer yolları hakkında daha fazla bilgi için (örneğin, OpenID Bağlan veya tümleşik Windows kimlik doğrulaması kullanarak), bkz. Microsoft Entra Id'de uygulamalarda çoklu oturum açma.
AuthnRequest
Kullanıcı kimlik doğrulaması istemek için bulut hizmetleri Microsoft Entra Id'ye bir AuthnRequest
öğe gönderir. Örnek bir SAML 2.0 AuthnRequest
aşağıdaki örneğe benzer olabilir:
<samlp:AuthnRequest
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w"
Version="2.0" IssueInstant="2013-03-18T03:28:54.1839884Z"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
</samlp:AuthnRequest>
Parametre | Tür | Açıklama |
---|---|---|
ID |
Gerekli | Microsoft Entra Id, döndürülen yanıtın InResponseTo özniteliğini doldurmak için bu özniteliği kullanır. Kimlik bir sayı ile başlamamalıdır, bu nedenle ortak bir strateji guid'nin dize gösterimine "ID" gibi bir dize eklemektir. Örneğin, id6c1c178c166d486687be4aaf5e482730 geçerli bir kimliktir. |
Version |
Zorunlu | Bu parametre olarak 2.0 ayarlanmalıdır. |
IssueInstant |
Zorunlu | Bu, UTC değeri ve gidiş dönüş biçimi ("o") olan bir DateTime dizesidir. Microsoft Entra Id bu tür bir DateTime değeri bekler, ancak değeri değerlendirmez veya kullanmaz. |
AssertionConsumerServiceURL |
İsteğe bağlı | Sağlanırsa, bu parametre Microsoft Entra Id'deki bulut hizmetinin değeriyle eşleşmelidir RedirectUri . |
ForceAuthn |
İsteğe bağlı | Bu bir boole değeridir. Doğru ise, kullanıcının Microsoft Entra Id ile geçerli bir oturumu olsa bile yeniden kimlik doğrulaması yapmaya zorlanacağı anlamına gelir. |
IsPassive |
İsteğe bağlı | Bu, Microsoft Entra Id'nin varsa oturum tanımlama bilgisini kullanarak kullanıcı etkileşimi olmadan kullanıcının kimliğini sessizce doğrulayıp doğrulamayacağını belirten boole değeridir. Bu doğruysa, Microsoft Entra Id oturum tanımlama bilgisini kullanarak kullanıcının kimliğini doğrulamayı dener. |
, AssertionConsumerServiceIndex
, , AttributeConsumerServiceIndex
ve ProviderName
gibi Consent
diğer AuthnRequest
tüm öznitelikler yoksayılır. Destination
Microsoft Entra Id, içindeki AuthnRequest
öğesini de yoksayarConditions
.
Sertifikayı veren
Issuer
içindeki AuthnRequest
öğesi, Microsoft Entra Id'deki bulut hizmetindeki ServicePrincipalNames'lerden biriyle tam olarak eşleşmelidir. Bu genellikle uygulama kaydı sırasında belirtilen Uygulama Kimliği URI'sine ayarlanır.
öğesini içeren bir SAML alıntısı Issuer
aşağıdaki örneğe benzer:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
NameIDPolicy
Bu öğe yanıtta belirli bir ad kimliği biçimi istemektedir ve Microsoft Entra Id'ye gönderilen öğelerde AuthnRequest
isteğe bağlıdır.
Bir NameIdPolicy
öğe aşağıdaki örneğe benzer:
<NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
Sağlanırsa NameIDPolicy
isteğe bağlı Format
özniteliğini ekleyebilirsiniz. Özniteliği aşağıdaki Format
değerlerden yalnızca birine sahip olabilir; diğer tüm değerler hatayla sonuçlanır.
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
: Microsoft Entra Id, talebi çift tabanlı tanımlayıcı olarak verirNameID
.urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: Microsoft Entra Id talebi e-posta adresi biçiminde verirNameID
.urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
: Bu değer, Microsoft Entra Id'nin talep biçimini seçmesine izin verir. Microsoft Entra Id, talebi çift tabanlı tanımlayıcı olarak verirNameID
.urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: Microsoft Entra Id, talebi geçerli SSO işlemine özgü rastgele oluşturulmuş bir değer olarak verirNameID
. Bu, değerin geçici olduğu ve kimlik doğrulama kullanıcısını tanımlamak için kullanılamayacağı anlamına gelir.
Belirtilirse SPNameQualifier
, Microsoft Entra Id yanıtta da aynı SPNameQualifier
değeri içerir.
Microsoft Entra Id özniteliği yoksayar AllowCreate
.
RequestedAuthnContext
RequestedAuthnContext
öğesi istenen kimlik doğrulama yöntemlerini belirtir. Microsoft Entra Id'ye gönderilen öğelerde AuthnRequest
isteğe bağlıdır. Microsoft Entra ID gibi urn:oasis:names:tc:SAML:2.0:ac:classes:Password
değerleri desteklerAuthnContextClassRef
.
Kapsam Belirleme
Scoping
Kimlik sağlayıcılarının listesini içeren öğesi, Microsoft Entra Id'ye gönderilen öğelerde AuthnRequest
isteğe bağlıdır.
Sağlandıysa, özniteliğini veya RequesterID
öğesini eklemeyin IDPListOption
ProxyCount
çünkü bunlar desteklenmez.
İmza
Signature
Öğelerdeki AuthnRequest
bir öğe isteğe bağlıdır. Microsoft Entra ID, imzalı kimlik doğrulama istekleri gereksinimini zorlayacak şekilde yapılandırılabilir. Etkinleştirilirse, yalnızca imzalı kimlik doğrulama istekleri kabul edilir, aksi takdirde istek sahibi doğrulaması yalnızca kayıtlı Onay Tüketici Hizmeti URL'leri yanıtlanarak sağlanır.
Konu
Öğe eklemeyin Subject
. Microsoft Entra Id, içinde AuthnRequest
bir konu belirtmeyi desteklemez ve bir konu sağlanırsa hata döndürür.
Bunun yerine, çoklu oturum açma URL'sine HTTP isteğine parametre login_hint
eklenerek konu sağlanabilir ve parametre değeri olarak konunun NameID değeri kullanılır.
Response
İstenen oturum açma işlemi başarıyla tamamlandığında, Microsoft Entra Id bulut hizmetine bir yanıt postalar. Başarılı bir oturum açma girişimine verilen yanıt aşağıdaki örneğe benzer:
<samlp:Response ID="_a4958bfd-e107-4e67-b06d-0d85ade2e76a" Version="2.0" IssueInstant="2013-03-18T07:38:15.144Z" Destination="https://contoso.com/identity/inboundsso.aspx" InResponseTo="C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<Assertion ID="_bf9c623d-cc20-407a-9a59-c2d0aee84d12" IssueInstant="2013-03-18T07:38:15.144Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature>
<Subject>
<NameID>Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="id758d0ef385634593a77bdf7e632984b6" NotOnOrAfter="2013-03-18T07:43:15.144Z" Recipient="https://contoso.com/identity/inboundsso.aspx" />
</SubjectConfirmation>
</Subject>
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
<AttributeStatement>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>testuser@contoso.com</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>3F2504E0-4F89-11D3-9A0C-0305E82C3301</AttributeValue>
</Attribute>
...
</AttributeStatement>
<AuthnStatement AuthnInstant="2013-03-18T07:33:56.000Z" SessionIndex="_bf9c623d-cc20-407a-9a59-c2d0aee84d12">
<AuthnContext>
<AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>
</Assertion>
</samlp:Response>
Response
Response
öğesi yetkilendirme isteğinin sonucunu içerir. Microsoft Entra Id öğesindeki ID
Response
ve Version
IssueInstant
değerlerini ayarlar. Ayrıca aşağıdaki öznitelikleri ayarlar:
Destination
: Oturum açma işlemi başarıyla tamamlandığında bu, hizmet sağlayıcısınınRedirectUri
(bulut hizmeti) ayarına ayarlanır.InResponseTo
: Bu, yanıtı başlatan öğenin özniteliğineAuthnRequest
ayarlanırID
.
Sertifikayı veren
Microsoft Entra Kimliği, öğesini https://sts.windows.net/<TenantIDGUID>/
Microsoft Entra kiracısının kiracı kimliği olduğu yere <TenantIDGUID>
ayarlarIssuer
.
Örneğin, Veren öğesini içeren bir yanıt aşağıdaki örneğe benzer olabilir:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Durum
Status
öğesi, oturum açma işleminin başarısını veya başarısızlığını iletir. İsteğin StatusCode
durumunu temsil eden bir kod veya iç içe kod kümesi içeren öğesini içerir. Ayrıca, oturum açma işlemi sırasında oluşturulan özel hata iletilerini içeren öğesini içerir StatusMessage
.
Aşağıdaki örnek, başarısız bir oturum açma girişimine saml yanıtıdır.
<samlp:Response ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Requester">
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:RequestUnsupported" />
</samlp:StatusCode>
<samlp:StatusMessage>AADSTS75006: An error occurred while processing a SAML2 Authentication request. AADSTS90011: The SAML authentication request property 'NameIdentifierPolicy/SPNameQualifier' is not supported.
Trace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333
Timestamp: 2013-03-18 08:49:24Z</samlp:StatusMessage>
</samlp:Status>
</samlp:Response>
Onaylama işlemi
Microsoft Entra Id, ve Version
ve IssueInstant
öğelerine ID
ek olarak yanıtın Assertion
öğesinde aşağıdaki öğeleri ayarlar.
Sertifikayı veren
Bu, Microsoft Entra kiracısının Kiracı Kimliği olarak <TenantIDGUID>
ayarlanırhttps://sts.windows.net/<TenantIDGUID>/
.
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
İmza
Microsoft Entra Id, başarılı bir oturum açma işlemine yanıt olarak onaylamayı imzalar. öğesi, Signature
bulut hizmetinin onay bütünlüğünü doğrulamak için kaynağın kimliğini doğrulamak için kullanabileceği bir dijital imza içerir.
Microsoft Entra Id, bu dijital imzayı oluşturmak için meta veri belgesinin IDPSSODescriptor
öğesindeki imzalama anahtarını kullanır.
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</ds:Signature>
Konu
Bu, onaydaki deyimlerin konusu olan ilkeyi belirtir. Kimliği doğrulanmış kullanıcıyı temsil eden bir NameID
öğe içerir. NameID
Değer, yalnızca belirtecin hedef kitlesi olan hizmet sağlayıcısına yönlendirilen hedeflenen bir tanımlayıcıdır. Kalıcıdır; iptal edilebilir, ancak hiçbir zaman yeniden atanamaz. Ayrıca, kullanıcı hakkında hiçbir şey göstermemesi ve öznitelik sorguları için tanımlayıcı olarak kullanılamaması açısından da opaktır.
Method
öğesinin SubjectConfirmation
özniteliği her zaman olarak urn:oasis:names:tc:SAML:2.0:cm:bearer
ayarlanır.
<Subject>
<NameID>Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<SubjectConfirmationData InResponseTo="id758d0ef385634593a77bdf7e632984b6" NotOnOrAfter="2013-03-18T07:43:15.144Z" Recipient="https://contoso.com/identity/inboundsso.aspx" />
</SubjectConfirmation>
</Subject>
Koşullar
Bu öğe, SAML onaylarının kabul edilebilir kullanımını tanımlayan koşulları belirtir.
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
NotBefore
ve NotOnOrAfter
öznitelikleri onay işleminin geçerli olduğu aralığı belirtir.
- özniteliğinin değeri, öğesinin
NotBefore
özniteliğinin değerinden biraz (bir saniyedenIssueInstant
az) daha sonradırAssertion
. Microsoft Entra Id, kendisiyle bulut hizmeti (hizmet sağlayıcısı) arasındaki herhangi bir zaman farkını hesaba katmaz ve bu zamana herhangi bir arabellek eklemez. - özniteliğinin
NotOnOrAfter
değeri, özniteliğin değerinden 70 dakika sonradırNotBefore
.
Hedef Kitle
Bu, hedeflenen hedef kitleyi tanımlayan bir URI içerir. Microsoft Entra Id, bu öğenin değerini oturum açmayı başlatan öğesinin AuthnRequest
değerine Issuer
ayarlar. Değeri değerlendirmek Audience
için, uygulama kaydı sırasında belirtilen değerini App ID URI
kullanın.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Issuer
Değer gibi, değerin Audience
de Microsoft Entra Id içindeki bulut hizmetini temsil eden hizmet asıl adlarından biriyle tam olarak eşleşmesi gerekir. Ancak, öğesinin Issuer
değeri bir URI değeri değilse, Audience
yanıttaki değer ön spn:
ekli değerdirIssuer
.
AttributeStatement
Bu, konu veya kullanıcı hakkındaki talepleri içerir. Aşağıdaki alıntı örnek AttributeStatement
bir öğe içerir. Üç nokta, öğesinin birden çok öznitelik ve öznitelik değeri içerebileceğini gösterir.
<AttributeStatement>
<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
<AttributeValue>testuser@contoso.com</AttributeValue>
</Attribute>
<Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
<AttributeValue>3F2504E0-4F89-11D3-9A0C-0305E82C3301</AttributeValue>
</Attribute>
...
</AttributeStatement>
- Ad Talebi - özniteliğinin
Name
(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
) değeri, kimliği doğrulanmış kullanıcının kullanıcı asıl adıdır( gibitestuser@managedtenant.com
). - ObjectIdentifier Talebi - Özniteliğin
ObjectIdentifier
(http://schemas.microsoft.com/identity/claims/objectidentifier
) değeri, Microsoft Entra Id'de kimliği doğrulanmış kullanıcıyı temsil eden dizin nesnesinin değeridirObjectId
.ObjectId
sabit, genel olarak benzersizdir ve kimliği doğrulanmış kullanıcının güvenli tanımlayıcısını yeniden kullanılır.
AuthnStatement
Bu öğe, onay konusunun belirli bir zamanda belirli bir yolla kimliğinin doğrulandığını onaylar.
- özniteliği,
AuthnInstant
kullanıcının Microsoft Entra Id ile kimlik doğrulamasını hangi zaman olduğunu belirtir. - öğesi,
AuthnContext
kullanıcının kimliğini doğrulamak için kullanılan kimlik doğrulama bağlamını belirtir.
<AuthnStatement AuthnInstant="2013-03-18T07:33:56.000Z" SessionIndex="_bf9c623d-cc20-407a-9a59-c2d0aee84d12">
<AuthnContext>
<AuthnContextClassRef> urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
</AuthnContext>
</AuthnStatement>