Ç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.

Çoklu Oturum Açma (SSO) İş Akışının ekran görüntüsü.

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="id6c1c178c166d486687be4aaf5e482730"
  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.0ayarlanmalı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, , AttributeConsumerServiceIndexve ProviderName gibi Consentdiğ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 verir NameID .
  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress: Microsoft Entra Id talebi e-posta adresi biçiminde verir NameID .
  • 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 verir NameID .
  • 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 verir NameID . 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:Passworddeğ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 IDPListOptionProxyCount çü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="id758d0ef385634593a77bdf7e632984b6" 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 IDResponse ve VersionIssueInstant 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ın RedirectUri (bulut hizmeti) ayarına ayarlanır.
  • InResponseTo: Bu, yanıtı başlatan öğenin özniteliğine AuthnRequest 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-dd33-eeeeee333333
    Timestamp: 2013-03-18 08:49:24Z</samlp:StatusMessage>
    </samlp:Status>
</samlp:Response>

Onaylama işlemi

Microsoft Entra Id, ve Versionve IssueInstant öğelerine IDek 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:bearerayarlanı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 saniyeden IssueInstant az) daha sonradır Assertion . 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ır NotBefore .

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( gibi testuser@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ğeridir ObjectId . 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>