Protokol SAML akses menyeluruh
Artikel ini membahas permintaan dan respons autentikasi SAML 2.0 yang didukung Microsoft Entra ID untuk akses menyeluruh (SSO).
Diagram protokol berikut menjelaskan urutan akses menyeluruh. Layanan cloud (penyedia layanan) menggunakan pengikatan Pengalihan HTTP untuk meneruskan elemen (permintaan autentikasi AuthnRequest
) ke ID Microsoft Entra (IdP). Microsoft Entra ID kemudian menggunakan pengikatan posting HTTP untuk memposting Response
elemen ke layanan cloud.
Catatan
Artikel ini membahas tentang menggunakan SAML untuk akses menyeluruh. Untuk informasi selengkapnya tentang cara lain untuk menangani akses menyeluruh (misalnya, dengan menggunakan OpenID Koneksi atau autentikasi Windows terintegrasi), lihat Akses menyeluruh ke aplikasi di ID Microsoft Entra.
AuthnRequest
Untuk meminta autentikasi pengguna, layanan cloud mengirim AuthnRequest
elemen ke ID Microsoft Entra. Sampel SAML 2.0 AuthnRequest
dapat terlihat seperti contoh berikut:
<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>
Parameter | Jenis | Deskripsi |
---|---|---|
ID |
Wajib diisi | MICROSOFT Entra ID menggunakan atribut ini untuk mengisi InResponseTo atribut respons yang dikembalikan. ID tidak boleh diawali dengan angka, jadi strategi umumnya adalah untuk mengawali string seperti "ID" ke representasi string GUID. Misalnya, id6c1c178c166d486687be4aaf5e482730 adalah ID yang valid. |
Version |
Wajib | Parameter ini harus diatur ke 2.0 . |
IssueInstant |
Wajib | Ini adalah untai DateTime dengan nilai UTC dan format komunikasi dua arah ("o"). MICROSOFT Entra ID mengharapkan nilai DateTime dari jenis ini, tetapi tidak mengevaluasi atau menggunakan nilai . |
AssertionConsumerServiceURL |
Opsional | Jika disediakan, parameter ini harus cocok dengan RedirectUri layanan cloud di ID Microsoft Entra. |
ForceAuthn |
Opsional | Ini adalah nilai boolean. Jika true, itu berarti bahwa pengguna akan dipaksa untuk mengautentikasi ulang, bahkan jika mereka memiliki sesi yang valid dengan ID Microsoft Entra. |
IsPassive |
Opsional | Ini adalah nilai boolean yang menentukan apakah ID Microsoft Entra harus mengautentikasi pengguna secara diam-diam, tanpa interaksi pengguna, menggunakan cookie sesi jika ada. Jika ini benar, ID Microsoft Entra mencoba mengautentikasi pengguna menggunakan cookie sesi. |
Semua atribut lainnya, seperti , , AssertionConsumerServiceIndex
Destination
, AttributeConsumerServiceIndex
, dan ProviderName
diabaikan.Consent
AuthnRequest
ID Microsoft Entra juga mengabaikan Conditions
elemen di AuthnRequest
.
Penerbit
Elemen Issuer
dalam AuthnRequest
harus sama persis dengan salah satu ServicePrincipalNames di layanan cloud di ID Microsoft Entra. Umumnya, ini diatur ke URI ID Aplikasi yang ditentukan selama pendaftaran aplikasi.
Kutipan SAML yang berisi elemen Issuer
terlihat seperti contoh berikut:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.contoso.com</Issuer>
NameIDPolicy
Elemen ini meminta format ID nama tertentu dalam respons dan bersifat opsional dalam AuthnRequest
elemen yang dikirim ke MICROSOFT Entra ID.
Elemen NameIdPolicy
terlihat seperti contoh berikut:
<NameIDPolicy Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"/>
Jika NameIDPolicy
disediakan, Anda dapat menyertakan atribut Format
opsionalnya. Atribut Format
hanya dapat memiliki salah satu nilai berikut; nilai lainnya akan menghasilkan kesalahan.
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
: ID Microsoft Entra mengeluarkanNameID
klaim sebagai pengidentifikasi berpasangan.urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
: ID Microsoft Entra mengeluarkanNameID
klaim dalam format alamat email.urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
: Nilai ini mengizinkan ID Microsoft Entra untuk memilih format klaim. ID Microsoft Entra mengeluarkanNameID
klaim sebagai pengidentifikasi berpasangan.urn:oasis:names:tc:SAML:2.0:nameid-format:transient
: ID Microsoft Entra mengeluarkanNameID
klaim sebagai nilai yang dihasilkan secara acak yang unik untuk operasi SSO saat ini. Ini berarti bahwa nilai bersifat sementara dan tidak dapat digunakan untuk mengidentifikasi pengguna yang mengautentikasi.
Jika SPNameQualifier
ditentukan, ID Microsoft Entra menyertakan hal yang sama SPNameQualifier
dalam respons.
ID Microsoft Entra mengabaikan AllowCreate
atribut .
RequestedAuthnContext
Elemen RequestedAuthnContext
menentukan metode autentikasi yang diinginkan. Ini opsional dalam AuthnRequest
elemen yang dikirim ke MICROSOFT Entra ID. MICROSOFT Entra ID mendukung AuthnContextClassRef
nilai seperti urn:oasis:names:tc:SAML:2.0:ac:classes:Password
.
Cakupan
Elemen Scoping
, yang mencakup daftar penyedia identitas, bersifat opsional dalam AuthnRequest
elemen yang dikirim ke ID Microsoft Entra.
Jika disediakan, jangan sertakan atribut ProxyCount
, elemen IDPListOption
atau RequesterID
, karena tidak didukung.
Tanda Tangan
Elemen Signature
dalam elemen AuthnRequest
bersifat opsional. Microsoft Entra ID dapat dikonfigurasi untuk memberlakukan persyaratan permintaan autentikasi yang ditandatangani. Jika diaktifkan, hanya permintaan autentikasi yang ditandatangani yang diterima, jika tidak, verifikasi pemohon disediakan dengan hanya menanggapi URL Layanan Konsumen Pernyataan yang terdaftar.
Subjek
Jangan sertakan elemen Subject
. ID Microsoft Entra tidak mendukung penentuan subjek di AuthnRequest
dan akan mengembalikan kesalahan jika disediakan.
Sebagai gantinya, subjek dapat diberikan dengan menambahkan parameter login_hint
ke permintaan HTTP ke URL akses menyeluruh, dengan NameID subjek sebagai nilai parameter.
Respons
Ketika proses masuk yang diminta berhasil diselesaikan, ID Microsoft Entra memposting respons terhadap layanan cloud. Respons terhadap upaya masuk yang berhasil terlihat seperti contoh berikut:
<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>
Respons
Elemen Response
ini mencakup hasil permintaan otorisasi. MICROSOFT Entra ID mengatur ID
nilai , Version
dan IssueInstant
dalam Response
elemen . Ini juga mengatur atribut berikut:
Destination
: Ketika masuk berhasil diselesaikan, ini diatur keRedirectUri
penyedia layanan (layanan cloud).InResponseTo
: Ini diatur ke atributID
elemenAuthnRequest
yang memulai respons.
Penerbit
MICROSOFT Entra ID mengatur Issuer
elemen ke https://sts.windows.net/<TenantIDGUID>/
tempat <TenantIDGUID>
ID penyewa penyewa penyewa Microsoft Entra.
Misalnya, respons dengan elemen Pengeluar Sertifikat dapat terlihat seperti contoh berikut:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Keadaan
Elemen Status
ini menunjukkan proses masuk berhasil atau gagal. Ini mencakup elemen StatusCode
, yang berisi kode atau sekumpulan kode berlapis yang mewakili status permintaan. Ini juga mencakup elemen StatusMessage
, yang berisi pesan kesalahan kustom yang dihasilkan selama proses masuk.
Contoh berikut adalah respons SAML terhadap upaya masuk yang gagal.
<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>
Assertion
Selain ID
, dan IssueInstant
Version
, ID Microsoft Entra mengatur elemen berikut dalam Assertion
elemen respons.
Penerbit
Ini diatur ke https://sts.windows.net/<TenantIDGUID>/
tempat <TenantIDGUID>
ID Penyewa penyewa Microsoft Entra.
<Issuer>https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Tanda Tangan
MICROSOFT Entra ID menandatangani pernyataan sebagai respons terhadap keberhasilan masuk. Elemen Signature
ini berisi tanda tangan digital yang dapat digunakan layanan cloud untuk mengautentikasi sumber data untuk memverifikasi integritas penegasan.
Untuk menghasilkan tanda tangan digital ini, ID Microsoft Entra menggunakan kunci penandatanganan dalam IDPSSODescriptor
elemen dokumen metadatanya.
<ds:Signature xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</ds:Signature>
Subjek
Hal ini menentukan perwakilan yang menjadi subjek pernyataan dalam penegasan. Ini berisi elemen NameID
yang mewakili pengguna terautentikasi. Nilai NameID
adalah target pengidentifikasi yang hanya ditujukan kepada penyedia layanan yang merupakan audiens untuk token. Ini terus-menerus - dapat dicabut, tetapi tidak pernah ditugaskan kembali. Ini juga tidak detail, karena tidak mengungkapkan informasi apa pun tentang pengguna, dan tidak dapat digunakan sebagai pengidentifikasi untuk kueri atribut.
Atribut Method
dari elemen SubjectConfirmation
selalu diatur ke urn:oasis:names:tc:SAML:2.0:cm:bearer
.
<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>
Kondisi
Elemen ini menentukan kondisi yang menentukan penggunaan penegasan SAML yang dapat diterima.
<Conditions NotBefore="2013-03-18T07:38:15.128Z" NotOnOrAfter="2013-03-18T08:48:15.128Z">
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
</Conditions>
Atribut NotBefore
dan NotOnOrAfter
atribut menentukan interval di mana penegasan valid.
- Nilai atribut
NotBefore
adalah sama dengan atau sedikit (kurang dari satu detik) lebih baru dari nilai atributIssueInstant
elemenAssertion
. ID Microsoft Entra tidak memperhitungkan perbedaan waktu antara dirinya sendiri dan layanan cloud (penyedia layanan), dan tidak menambahkan buffer apa pun untuk saat ini. - Nilai atribut
NotOnOrAfter
adalah 70 menit lebih lambat dari nilai atributNotBefore
.
Audiens
Ini berisi URI yang mengidentifikasi audiens yang dituju. MICROSOFT Entra ID menetapkan nilai elemen ini ke nilai Issuer
elemen AuthnRequest
yang memulai masuk. Untuk mengevaluasi nilai Audience
, gunakan nilai App ID URI
yang ditentukan selama pendaftaran aplikasi.
<AudienceRestriction>
<Audience>https://www.contoso.com</Audience>
</AudienceRestriction>
Seperti nilainya Issuer
, Audience
nilai harus sama persis dengan salah satu nama perwakilan layanan yang mewakili layanan cloud di ID Microsoft Entra. Namun, jika nilai elemen Issuer
bukan nilai URI, nilai Audience
dalam respons adalah nilai Issuer
yang berawalan spn:
.
AttributeStatement
Ini berisi klaim tentang subjek atau pengguna. Kutipan berikut berisi elemen AttributeStatement
sampel. Elipsis menunjukkan bahwa elemen dapat menyertakan beberapa atribut dan nilai atribut.
<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>
- Klaim Nama - Nilai atribut
Name
(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
) adalah nama prinsipal pengguna yang diautentikasi, sepertitestuser@managedtenant.com
. - Klaim ObjectIdentifier - Nilai
ObjectIdentifier
atribut (http://schemas.microsoft.com/identity/claims/objectidentifier
) adalahObjectId
objek direktori yang mewakili pengguna yang diautentikasi di ID Microsoft Entra.ObjectId
adalah pengidentifikasi yang tetap, unik secara global, dan menggunakan kembali pengidentifikasi aman dari pengguna terautentikasi.
AuthnStatement
Elemen ini menegaskan bahwa subjek penegasan diautentikasi dengan cara tertentu pada waktu tertentu.
- Atribut
AuthnInstant
menentukan waktu di mana pengguna diautentikasi dengan ID Microsoft Entra. - Elemen
AuthnContext
menentukan konteks autentikasi yang digunakan untuk mengautentikasi pengguna.
<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>