Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Apa
- Autentikasi dan otorisasi masuk: Kebijakan Validasi Pernyataan SAML
Jenis kebijakan SAML memungkinkan proxy API memvalidasi pernyataan SAML yang dilampirkan ke permintaan SOAP masuk. Kebijakan SAML memvalidasi pesan masuk yang berisi pernyataan SAML yang ditandatangani secara digital, menolaknya jika tidak valid, dan menetapkan variabel yang memungkinkan kebijakan tambahan, atau layanan backend itu sendiri, untuk memvalidasi lebih lanjut informasi dalam pernyataan. - Pembuatan token keluar: Kebijakan Generate SAML Assertion
Jenis kebijakan SAML memungkinkan proxy API melampirkan pernyataan SAML ke permintaan XML keluar. Kemudian, pernyataan tersebut tersedia untuk memungkinkan layanan backend menerapkan pemrosesan keamanan lebih lanjut untuk autentikasi dan otorisasi.
Contoh
Membuat pernyataan SAML
<GenerateSAMLAssertion name="SAML" ignoreContentType="false"> <CanonicalizationAlgorithm /> <Issuer ref="reference">Issuer name</Issuer> <KeyStore> <Name ref="reference">keystorename</Name> <Alias ref="reference">alias</Alias> </KeyStore> <OutputVariable> <FlowVariable>assertion.content</FlowVariable> <Message name="request"> <Namespaces> <Namespace prefix="test">http://www.example.com/test</Namespace> </Namespaces> <XPath>/envelope/header</XPath> </Message> </OutputVariable> <SignatureAlgorithm /> <Subject ref="reference">Subject name</Subject> <Template ignoreUnresolvedVariables="false"> <!-- A lot of XML goes here, in CDATA, with {} around each variable --> </Template> </GenerateSAMLAssertion>
Membuat pernyataan SAML
Memvalidasi pernyataan SAML
<ValidateSAMLAssertion name="SAML" ignoreContentType="false"> <Source name="request"> <Namespaces> <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace> <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace> <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace> </Namespaces> <AssertionXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</AssertionXPath> <SignedElementXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</SignedElementXPath> </Source> <TrustStore>TrustStoreName</TrustStore> <RemoveAssertion>false</RemoveAssertion> </ValidateSAMLAssertion>
Memvalidasi pernyataan SAML
Referensi elemen
Membuat Pernyataan SAML
| Nama Kolom | Deskripsi | ||
|---|---|---|---|
name atribut |
Nama instance kebijakan. Nama harus unik dalam organisasi. Karakter yang dapat Anda gunakan dalam nama dibatasi untuk: A-Z0-9._\-$
%. Namun, UI Pengelolaan menerapkan batasan tambahan, seperti
menghapus karakter yang bukan alfanumerik secara otomatis. |
||
ignoreContentType atribut |
Nilai boolean yang dapat ditetapkan ke true atau false. Secara default, pernyataan
tidak akan dibuat jika jenis konten pesan bukan Jenis Konten
XML. Jika disetel ke true, pesan akan diperlakukan sebagai XML
terlepas dari Content-type. |
||
Issuer |
ID unik penyedia identitas. Jika atribut
ref
opsional ada, nilai Penerbit akan ditetapkan saat runtime berdasarkan
variabel yang ditentukan. Jika atribut ref opsional tidak ada, nilai Penerbit akan digunakan.
|
||
KeyStore |
Nama KeyStore yang berisi kunci pribadi dan alias kunci pribadi yang
digunakan untuk menandatangani pernyataan SAML secara digital.
|
||
OutputVariable |
|||
FlowVariable |
|||
Message |
Target kebijakan. Nilai yang valid adalah message, request,
dan response. Jika disetel ke message, kebijakan akan mengambil
objek pesan secara bersyarat berdasarkan titik lampiran kebijakan. Jika dilampirkan ke
Flow permintaan, kebijakan akan me-resolve message ke permintaan, dan jika dilampirkan ke
Flow respons, kebijakan akan me-resolve message ke respons. |
||
XPath |
Ekspresi XPath yang menunjukkan elemen pada dokumen XML keluar yang kebijakannya akan melampirkan pernyataan SAML. | ||
SignatureAlgorithm |
SHA1 atau SHA256 | ||
Subject |
ID unik subjek pernyataan SAML. Jika atribut
ref opsional ada, nilai Subjek akan ditetapkan saat
runtime berdasarkan variabel yang ditentukan. Jika atribut ref opsional ada, nilai Subjek akan digunakan.
|
||
Template |
Jika ada, pernyataan akan dibuat dengan menjalankan template ini, mengganti
semua yang ditandai
{} dengan variabel yang sesuai, lalu menandatangani
hasilnya secara digital. Template diproses mengikuti aturan kebijakan AssignMessage.
Lihat Tetapkan
Kebijakan pesan.
|
||
Memvalidasi Pernyataan SAML
| Nama Kolom | Deskripsi |
|---|---|
name atribut |
Nama instance kebijakan. Nama harus unik dalam organisasi.
Karakter yang dapat Anda gunakan dalam nama dibatasi untuk:
A-Z0-9._\-$ %.
Namun, UI Pengelolaan menerapkan batasan tambahan, seperti menghapus karakter yang bukan alfanumerik secara otomatis.
|
ignoreContentType atribut |
Nilai boolean yang dapat ditetapkan ke true atau false. Secara default, pernyataan
tidak akan dibuat jika jenis konten pesan bukan Jenis Konten
XML. Jika disetel ke true, pesan akan diperlakukan sebagai XML
terlepas dari Content-type. |
Source |
Target kebijakan. Nilai yang valid adalah message, request,
dan response. Jika disetel ke message, kebijakan akan mengambil
objek pesan secara bersyarat berdasarkan titik lampiran kebijakan. Jika dilampirkan ke
Flow permintaan, kebijakan akan me-resolve message ke permintaan, dan jika dilampirkan ke
Flow respons, kebijakan akan me-resolve message ke respons. |
XPath |
Tidak digunakan lagi. Turunan dari
Source. Gunakan
AssertionXPath dan SignedElementXPath.
|
AssertionXPath |
Turunan dari
Source. Ekspresi XPath yang menunjukkan elemen pada
dokumen XML masuk yang darinya kebijakan dapat mengekstrak pernyataan SAML.
|
SignedElementXPath |
Turunan dari
Source. Ekspresi XPath yang menunjukkan elemen pada
dokumen XML masuk tempat kebijakan dapat mengekstrak elemen yang ditandatangani. XPath ini
dapat berbeda atau sama dengan XPath untuk AssertionXPath.
|
TrustStore |
Nama TrustStore yang berisi sertifikat X.509 tepercaya yang digunakan untuk memvalidasi
tanda tangan digital pada pernyataan SAML.
|
RemoveAssertion |
Nilai boolean yang dapat ditetapkan ke
true atau false. Saat
true, pernyataan SAML akan dihapus dari pesan permintaan sebelum
pesan diteruskan ke layanan backend.
|
Catatan penggunaan
Spesifikasi Security Assertion Markup Language (SAML) menentukan format dan protokol yang memungkinkan aplikasi bertukar informasi berformat XML untuk autentikasi dan otorisasi.
"Pernyataan keamanan" adalah token tepercaya yang menjelaskan atribut aplikasi, pengguna aplikasi, atau peserta lain dalam transaksi. Pernyataan keamanan dikelola dan digunakan oleh dua jenis entitas:
- Penyedia identitas: Membuat pernyataan keamanan atas nama peserta
- Penyedia layanan: Memvalidasi pernyataan keamanan melalui hubungan tepercaya dengan penyedia identitas
Platform API dapat bertindak sebagai penyedia identitas dan sebagai penyedia layanan. API ini bertindak sebagai penyedia identitas dengan membuat pernyataan dan melampirkannya ke pesan permintaan, sehingga pernyataan tersebut tersedia untuk diproses oleh layanan backend. Layanan ini bertindak sebagai penyedia layanan dengan memvalidasi pernyataan pada pesan permintaan masuk.
Jenis kebijakan SAML mendukung pernyataan SAML yang cocok dengan versi 2.0 Spesifikasi Inti SAML dan Versi 1.0 spesifikasi Profil Token SAML WS-Security.
Membuat Pernyataan SAML
Pemrosesan kebijakan:
- Jika pesan bukan XML, dan IgnoreContentType tidak disetel ke
true, maka akan memunculkan kesalahan. - Jika "Template" disetel, proses template seperti yang dijelaskan untuk kebijakan AssignMessage. Jika ada variabel yang tidak ada dan IgnoreUnresolvedVariables tidak ditetapkan, maka akan muncul kesalahan.
- Jika "Template" tidak ditetapkan, buat pernyataan yang menyertakan nilai parameter Subjek dan Penerbit atau referensinya.
- Menandatangani pernyataan menggunakan kunci yang ditentukan.
- Tambahkan pernyataan ke pesan di XPath yang ditentukan.
Memvalidasi Pernyataan SAML
Pemrosesan kebijakan:
- Kebijakan ini memeriksa pesan masuk untuk memverifikasi bahwa jenis media permintaan adalah XML, dengan
memeriksa apakah jenis konten cocok dengan format
text/(.*+)?xmlatauapplication/(.*+)?xml. Jika jenis media bukan XML dan<IgnoreContentType>tidak disetel, kebijakan akan memunculkan kesalahan. - Kebijakan ini akan mengurai XML. Jika penguraian gagal, maka akan memunculkan kesalahan.
- Kebijakan akan mengekstrak elemen yang ditandatangani dan pernyataan, menggunakan XPath masing-masing yang ditentukan (
<SignedElementXPath>dan<AssertionXPath>). Jika salah satu jalur ini tidak menampilkan elemen, kebijakan akan memunculkan kesalahan. - Kebijakan akan memverifikasi bahwa Pernyataan sama dengan elemen bertanda tangan, atau merupakan turunan dari elemen bertanda tangan. Jika tidak benar, kebijakan akan memunculkan kesalahan.
- Jika elemen
<NotBefore>atau<NotOnOrAfter>ada dalam pernyataan, kebijakan akan memeriksa stempel waktu saat ini terhadap nilai-nilai ini, seperti yang dijelaskan dalam bagian 2.5.1 SAML Core. - Kebijakan ini akan menerapkan aturan tambahan untuk memproses "Kondisi" sebagaimana dijelaskan dalam bagian 2.5.1.1 SAML Core.
- Kebijakan ini memvalidasi tanda tangan digital XML menggunakan nilai trust store
(
<TrustStore>) yang dijelaskan di atas. Jika validasi gagal, kebijakan akan memunculkan kesalahan.
Setelah kebijakan selesai tanpa menimbulkan kesalahan, developer proxy dapat memastikan hal berikut:
- Tanda tangan digital pada pernyataan valid dan ditandatangani oleh CA tepercaya
- Pernyataan ini valid untuk jangka waktu saat ini
- Subjek dan penerbit pernyataan akan diekstrak dan ditetapkan dalam variabel alur. Kebijakan lain bertanggung jawab untuk menggunakan nilai ini untuk autentikasi tambahan, seperti memeriksa apakah nama subjek valid, atau meneruskannya ke sistem target untuk validasi.
Kebijakan lain, seperti ExtractVariables, dapat digunakan untuk mengurai XML mentah pernyataan untuk validasi yang lebih kompleks.
Variabel alur
Ada banyak informasi yang dapat ditentukan dalam pernyataan SAML. Pernyataan SAML itu sendiri adalah XML yang dapat diuraikan menggunakan kebijakan ExtractVariables dan mekanisme lainnya untuk menerapkan validasi yang lebih kompleks.
| Variabel | Deskripsi |
|---|---|
saml.id |
ID pernyataan SAML |
saml.issuer |
"Penerbit" pernyataan, dikonversi dari jenis XML aslinya menjadi string |
saml.subject |
"Subjek" pernyataan, dikonversi dari jenis XML aslinya menjadi string |
saml.valid |
Menampilkan nilai benar atau salah berdasarkan hasil pemeriksaan validitas |
saml.issueInstant |
IssueInstant |
saml.subjectFormat |
Format subjek |
saml.scmethod |
Metode konfirmasi subjek |
saml.scdaddress |
Alamat data konfirmasi subjek |
saml.scdinresponse |
Data konfirmasi subjek dalam respons |
saml.scdrcpt |
Penerima data konfirmasi subjek |
saml.authnSnooa |
SessionNotOnOrAfter AuthnStatement |
saml.authnContextClassRef |
AuthnStatement AuthnContextClassRef |
saml.authnInstant |
AuthnStatement AuthInstant |
saml.authnSessionIndex |
Indeks Sesi AuthnStatement |
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang dikembalikan dan variabel fault yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Penanganan kesalahan.
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
| Nama error | Penyebab | Perbaiki |
|---|---|---|
SourceNotConfigured |
Satu atau beberapa elemen Validate SAML Assertion berikut
kebijakan tidak ditentukan atau kosong: <Source>, <XPath>,
<Namespaces>, <Namespace>.
|
build |
TrustStoreNotConfigured |
Jika elemen <TrustStore> kosong atau tidak ditentukan dalam
kebijakan ValidateSAMLAssertion, deployment proxy API akan gagal.
Trust Store yang valid wajib diisi.
|
build |
NullKeyStoreAlias |
Jika elemen turunan <Alias> kosong atau tidak ditentukan dalam <Keystore>
kebijakan Generate SAML Assertion, lalu deployment API
proxy gagal. Alias Keystore yang valid wajib diisi.
|
build |
NullKeyStore |
Jika elemen turunan <Name> kosong atau tidak ditentukan dalam <Keystore>
elemen kebijakan GenerateSAMLAssertion, lalu deployment API
proxy gagal. Nama Keystore yang valid wajib diisi.
|
build |
NullIssuer |
Jika elemen <Issuer> kosong atau tidak ditentukan di kolom Generate SAML
Kebijakan pernyataan, deployment proxy API akan gagal. J
nilai <Issuer> yang valid wajib diisi.
|
build |
Variabel kesalahan
Variabel ini ditetapkan saat terjadi error runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
| Variabel | Di mana | Contoh |
|---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
Untuk konfigurasi kebijakan pernyataan SAML
pemvalidasian, awalan errornya adalah
ValidateSAMLAssertion. |
GenerateSAMLAssertion.failed = true |
Contoh respons error
{ "fault": { "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type", "detail": { "errorcode": "steps.saml.generate.InvalidMediaTpe" } } }
Contoh aturan kesalahan
<FaultRules>
<FaultRule name="invalid_saml_rule">
<Step>
<Name>invalid-saml</Name>
</Step>
<Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
</FaultRule>
</FaultRules>Topik terkait
Mengekstrak variabel: Kebijakan Extract Variables policy