Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini membahas permintaan dan respons autentikasi SAML 2.0 (Security Assertion Markup Language) 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 AuthnRequest (permintaan autentikasi) ke ID Microsoft Entra (IdP). Microsoft Entra ID kemudian menggunakan pengikatan posting HTTP untuk memposting elemen Response ke layanan cloud.
Nota
Artikel ini membahas penggunaan SAML untuk akses menyeluruh. Untuk informasi selengkapnya tentang cara lain untuk menangani akses menyeluruh (misalnya, dengan menggunakan OpenID Connect atau autentikasi Windows terintegrasi), lihat Akses menyeluruh ke aplikasi di Microsoft Entra ID.
AuthnRequest
Untuk meminta autentikasi pengguna, layanan cloud mengirim elemen AuthnRequest ke ID Microsoft Entra. Contoh AuthnRequest SAML 2.0 bisa 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>
| Pengaturan | Jenis | Deskripsi |
|---|---|---|
ID |
Diperlukan | MICROSOFT Entra ID menggunakan atribut ini untuk mengisi atribut InResponseTo respons yang dikembalikan. ID tidak boleh dimulai dengan angka, jadi strategi umum adalah menambahkan string seperti "ID" ke representasi string GUID. Misalnya, id6c1c178c166d486687be4aaf5e482730 adalah ID yang valid. |
Version |
Diperlukan | Parameter ini harus diatur ke 2.0. |
IssueInstant |
Diperlukan | Ini adalah string DateTime dengan nilai UTC dan format pulang-pergi ("o"). MICROSOFT Entra ID mengharapkan nilai DateTime dari jenis ini, tetapi tidak mengevaluasi atau menggunakan nilai . |
AssertionConsumerServiceURL |
Fakultatif | Jika disediakan, parameter ini harus cocok dengan RedirectUri layanan cloud di ID Microsoft Entra. ID Entra akan menghormati URL ACS jika ada dalam Permintaan SAML. |
ForceAuthn |
Fakultatif | 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 |
Fakultatif | 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 AuthnRequest lainnya, seperti Consent, Destination, dan ProviderNamediabaikan.
ID Microsoft Entra juga mengabaikan elemen Conditions di AuthnRequest.
Penerbit
Elemen
Kutipan SAML yang berisi elemen Issuer terlihat seperti sampel 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 elemen AuthnRequest yang dikirim ke ID Microsoft Entra.
Elemen NameIdPolicy terlihat seperti sampel 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 lain menghasilkan kesalahan.
-
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent: ID Microsoft Entra mengeluarkan klaimNameIDsebagai pengidentifikasi berpasangan. -
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress: ID Microsoft Entra mengeluarkan klaimNameIDdalam 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 mengeluarkan klaimNameIDsebagai pengidentifikasi berpasangan. -
urn:oasis:names:tc:SAML:2.0:nameid-format:transient: ID Microsoft Entra mengeluarkanNameIDklaim 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 SPNameQualifier yang sama dalam respons.
ID Microsoft Entra mengabaikan atribut AllowCreate.
RequestedAuthnContext
Elemen RequestedAuthnContext menentukan metode autentikasi yang diinginkan. Ini opsional dalam elemen AuthnRequest yang dikirim ke ID Microsoft Entra.
Nota
Jika RequestedAuthnContext disertakan dalam permintaan SAML, elemen Comparison harus diatur ke exact.
MICROSOFT Entra ID mendukung nilai AuthnContextClassRef berikut.
| Metode autentikasi | URI kelas konteks autentikasi |
|---|---|
| Kerberos | urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos |
| Nama pengguna dan kata sandi | urn:oasis:names:tc:SAML:2.0:ac:classes:Password |
| Infrastruktur Kunci Umum PGP | urn:oasis:names:tc:SAML:2.0:ac:classes:PGP |
| Amankan Kata Sandi Jarak Jauh | urn:oasis:names:tc:SAML:2.0:ac:classes:SecureRemotePassword |
| Tanda Tangan Digital XML | urn:oasis:names:tc:SAML:2.0:ac:classes:XMLDSig |
| Infrastruktur kunci publik sederhana | urn:oasis:names:tc:SAML:2.0:ac:classes:SPKI |
| Kartu pintar | urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard |
| Kartu pintar dengan kunci privat tertutup dan PIN | urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI |
| Klien Keamanan Lapisan Transportasi (TLS) | urn:oasis:names:tc:SAML:2.0:ac:classes:TLSClient |
| Tidak ditentukan | urn:oasis:names:tc:SAML:2.0:ac:classes:Unspecified |
| Sertifikat X.509 | urn:oasis:names:tc:SAML:2.0:ac:classes:X509 |
| Autentikasi Windows terintegrasi | urn:federation:authentication:windows |
Cakupan
Elemen Scoping, yang mencakup daftar penyedia identitas, bersifat opsional dalam elemen AuthnRequest 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. ID Microsoft Entra dapat dikonfigurasi untuk memberlakukan persyaratan permintaan autentikasi yang ditandatangani. Jika diaktifkan, hanya permintaan autentikasi yang ditandatangani yang diterima, jika tidak, verifikasi pemohon disediakan hanya dengan menanggapi URL Layanan Konsumen Pernyataan terdaftar.
Subyek
Jangan sertakan elemen Subject. ID Microsoft Entra tidak mendukung penentuan subjek dalam AuthnRequest dan akan mengembalikan kesalahan jika diberikan.
Subjek dapat disediakan dengan menambahkan parameter login_hint ke permintaan HTTP ke URL akses menyeluruh, dengan NameID subjek sebagai nilai parameter.
Jawaban
Ketika proses masuk yang diminta berhasil diselesaikan, ID Microsoft Entra memposting respons terhadap layanan cloud. Respons terhadap upaya masuk yang berhasil terlihat seperti sampel 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>
<SignatureValue xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
...
</SignatureValue>
<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>
<SignatureValue xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
...
</SignatureValue>
<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>
<Attribute Name="http://schemas.microsoft.com/claims/authnmethodsreferences"> <AttributeValue>http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password</AttributeValue>
<AttributeValue>http://schemas.microsoft.com/claims/multipleauthn</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>
Jawaban
Elemen Response mencakup hasil permintaan otorisasi. MICROSOFT Entra ID mengatur nilai ID, Version, dan IssueInstant dalam elemen Response. Ini juga mengatur atribut berikut:
-
Destination: Ketika masuk berhasil diselesaikan, ini diatur keRedirectUripenyedia layanan (layanan cloud). -
InResponseTo: Ini diatur ke atributIDelemenAuthnRequestyang memulai respons.
Penerbit
MICROSOFT Entra ID mengatur elemen Issuer ke https://sts.windows.net/<TenantIDGUID>/ di mana <TenantIDGUID> adalah ID penyewa penyewa Microsoft Entra.
Misalnya, respons dengan elemen Pengeluar Sertifikat dapat terlihat seperti sampel berikut:
<Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> https://sts.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
Keadaan
Elemen Status menyampaikan keberhasilan atau kegagalan masuk. Ini termasuk 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.
Sampel 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>
Pernyataan
Selain ID, IssueInstant dan Version, MICROSOFT Entra ID mengatur elemen berikut dalam elemen Assertion respons.
Penerbit
Ini diatur ke https://sts.windows.net/<TenantIDGUID>/di mana <TenantIDGUID> adalah 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 berisi tanda tangan digital yang dapat digunakan layanan cloud untuk mengautentikasi sumber untuk memverifikasi integritas pernyataan.
Untuk menghasilkan tanda tangan digital ini, ID Microsoft Entra menggunakan kunci penandatanganan dalam elemen IDPSSODescriptor dokumen metadatanya.
<SignatureValue xmlns:ds="https://www.w3.org/2000/09/xmldsig#">
digital_signature_here
</SignatureValue>
Subyek
Ini menentukan prinsip yang merupakan subjek pernyataan dalam pernyataan. Ini berisi elemen NameID, yang mewakili pengguna yang diautentikasi. Nilai NameID adalah pengidentifikasi yang ditargetkan yang hanya diarahkan ke penyedia layanan yang merupakan audiens untuk token. Ini persisten - dapat dicabut, tetapi tidak pernah ditetapkan kembali. Ini juga buram, karena tidak mengungkapkan apa pun tentang pengguna dan tidak dapat digunakan sebagai pengidentifikasi untuk kueri atribut.
Atribut Method 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 pernyataan 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 menentukan interval saat pernyataan valid.
- Nilai atribut
NotBeforesama dengan atau sedikit (kurang dari satu detik) lebih lambat dari nilai atributIssueInstantelemenAssertion. 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
NotOnOrAfteradalah 70 menit lebih lambat dari nilai atributNotBefore.
Penonton
Ini berisi URI yang mengidentifikasi audiens yang dimaksudkan. MICROSOFT Entra ID menetapkan nilai elemen ini ke nilai elemen Issuer dari 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 nilai Issuer, nilai Audience harus sama persis dengan salah satu nama perwakilan layanan yang mewakili layanan cloud di ID Microsoft Entra. Namun, jika nilai Issuer elemen bukan nilai URI, Audience nilai dalam respons adalah nilai yang Issuer diawali dengan spn:.
AttributeStatement
Ini berisi klaim tentang subjek atau pengguna. Kutipan berikut berisi sampel elemen AttributeStatement. 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>
-
Name Claim - Nilai atribut
Name(http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name) adalah nama utama pengguna dari pengguna yang diautentikasi, sepertitestuser@managedtenant.com. -
ObjectIdentifier Claim - Nilai atribut
ObjectIdentifier(http://schemas.microsoft.com/identity/claims/objectidentifier) adalahObjectIdobjek direktori yang mewakili pengguna yang diautentikasi di ID Microsoft Entra.ObjectIdadalah pengidentifikasi aman yang tidak dapat diubah, unik secara global, dan digunakan kembali dari pengguna yang diautentikasi.
AuthnStatement
Elemen ini menegaskan bahwa subjek pernyataan diautentikasi dengan cara tertentu pada waktu tertentu.
- Atribut
AuthnInstantmenentukan waktu pengguna diautentikasi dengan ID Microsoft Entra. - Elemen
AuthnContextmenentukan 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>
authnmethodreferences
Elemen ini menegaskan bahwa subjek pernyataan diautentikasi dengan cara tertentu pada waktu tertentu. Ini tersedia di bagian klaim agar aplikasi dapat menggunakan dan memverifikasi bahwa subjek telah melakukan autentikasi menggunakan Kata Sandi atau menggunakan metode autentikasi yang lebih kuat seperti MFA atau Passkeys.
- Atribut
authnmethodsreferencesmenentukan cara pengguna mengautentikasi dengan ID Microsoft Entra. - Nilai
http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/passwordklaim menentukan pengguna telah melakukan autentikasi nama pengguna dan kata sandi dengan ID Entra. - Nilai
http://schemas.microsoft.com/claims/multipleauthnklaim menentukan pengguna telah melakukan nama pengguna dan kata sandi dan juga melakukan beberapa autentikasi faktor yang menghasilkan MFA.
<Attribute Name="http://schemas.microsoft.com/claims/authnmethodsreferences">
<AttributeValue>http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password</AttributeValue>
<AttributeValue>http://schemas.microsoft.com/claims/multipleauthn</AttributeValue>
</Attribute>