SAMLAssertion politikaları

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

  • Gelen kimlik doğrulaması ve yetkilendirme: SAML Onaylama İşlemini Doğrulama politika
    SAML politika türü, API proxy'lerinin gelen SOAP istekleri. SAML politikası, aşağıdakileri içeren gelen iletileri doğrular. dijital olarak imzalanmış SAML onayı işlemi, geçersizlerse bunları reddeder ve bilgileri daha da doğrulamak için ek politikalara veya arka uç hizmetlerinin kendisine izin verme söz konusu e-postadır.
  • Giden jeton oluşturma: SAML Onaylama politikası oluşturma
    SAML politika türü, API proxy'lerinin SAML onayları giden XML isteklerine ekleyebilmesini sağlar. Bu onaylar, daha fazla güvenlik uygulamak amacıyla arka uç hizmetlerinin etkinleştirilmesi için kullanılabilir kimlik doğrulama ve yetkilendirme için işleniyor.

Örnekler

SAML onayı oluştur

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

SAML onayı oluşturma

SAML onayını doğrulama

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

SAML onayı doğrulama


Öğe referansı

SAML Onayı Oluştur

Alan adı Açıklama
name özellik Politika örneğinin adı. Ad, kurum içinde tutmaktır. Adda kullanabileceğiniz karakterler şununla sınırlıdır: A-Z0-9._\-$ %. Ancak Yönetim Kullanıcı Arayüzünde aşağıdakiler gibi ek kısıtlamalar uygulanır: Alfanümerik olmayan karakterler otomatik olarak kaldırılır.
ignoreContentType özellik true veya false olarak ayarlanabilen bir boole değeri. Varsayılan olarak Mesajın içerik türü XML değilse onay işlemi oluşturulmaz İçerik Türü. true değerine ayarlanırsa mesaj XML olarak işlenir. her ne olursa olsun.
Issuer
Kimlik sağlayıcının benzersiz tanımlayıcısı. İsteğe bağlı ref özelliği mevcutsa, düzenleyen kurumun değeri, Veriye Dayalı İlişkilendirme'ye göre belirtilen değişken. İsteğe bağlı ref özelliği yoksa Veren'in değeri kullanılır.
KeyStore
Özel anahtarı ve özel anahtarın takma adını içeren KeyStore'un adı SAML onaylarını dijital olarak imzalamak için kullanılır.
OutputVariable
FlowVariable
Message Politikanın hedefi. Geçerli değerler message, request, ve response. message değerine ayarlanırsa politika koşullu olarak Politikanın ek noktasına göre ileti nesnesini alır. Şuna eklendiğinde: İstek Akışı'na eklendiğinde, politika, istekte bulunmak üzere message politikasını çözümler ve yanıt Akışı'nı ihlal ederse politika, message yanıtı yanıtını verir.
XPath Giden XML dokümanında yer alan öğeyi belirten XPath ifadesi bu politika, SAML onayını ekler.
SignatureAlgorithm SHA1 veya SHA256
Subject
SAML onayının konusunun benzersiz tanımlayıcısı. İsteğe bağlı ref özelliği mevcutsa Konu değeri çalışma zamanını ayarlayabilirsiniz. İsteğe bağlı ref özelliği Subject (Konu) değeri kullanılır.
Template
Bu kod varsa onay, bu şablonu çalıştırarak üretilir ve {} ile gösterilen her şey karşılık gelen değişkenle, sonra da dijital olarak ve sonucu imzalamasıdır. Şablon,assignMessage politika kurallarına göre işlenir. Bkz. Ödev Mesaj politikası

SAML Onaylama İşlemini Doğrulama

Alan adı Açıklama
name özellik
Politika örneğinin adı. Ad, kuruluşta benzersiz olmalıdır. Adda kullanabileceğiniz karakterler şununla sınırlıdır: A-Z0-9._\-$ %. Ancak Yönetim Kullanıcı Arayüzü'nde, otomatik olarak izleme gibi Alfanümerik olmayan karakterleri kaldırmalıdır.
ignoreContentType özellik true veya false olarak ayarlanabilen bir boole değeri. Varsayılan olarak Mesajın içerik türü XML değilse onay işlemi oluşturulmaz İçerik Türü. true değerine ayarlanırsa mesaj XML olarak işlenir. her ne olursa olsun.
Source Politikanın hedefi. Geçerli değerler message, request, ve response. message değerine ayarlanırsa politika koşullu olarak Politikanın ek noktasına göre ileti nesnesini alır. Şuna eklendiğinde: İstek Akışı'na eklendiğinde, politika, istekte bulunmak üzere message politikasını çözümler ve yanıt Akışı'nı ihlal ederse politika, message yanıtı yanıtını verir.
XPath
Kullanımdan kaldırıldı. Source alt öğesi. Tekliflerinizi otomatikleştirmek ve optimize etmek için AssertionXPath ve SignedElementXPath.
AssertionXPath
Source alt öğesi. Öğeyi Politikanın, SAML onayını çıkarabileceği gelen XML belgesidir.
SignedElementXPath
Source alt öğesi. Öğeyi gelen XML dokümanıdır. Bu AssertionXPath öğesinin XPath'inden farklı veya aynı olabilir.
TrustStore
Doğrulama için kullanılan güvenilir X.509 sertifikalarını içeren TrustStore'un adı dijital imzaları kullandığınızdan emin olun.
RemoveAssertion
true veya false olarak ayarlanabilen bir boole değeri. Zaman true, SAML onayı, istek mesajından önce kaldırılacak. Mesaj arka uç hizmetine yönlendirilir.

Kullanım notları

Güvenlik Onayı Biçimlendirme Dili (SAML) spesifikasyonu, uygulamaların kimlik doğrulama için XML biçimli bilgiler alışverişinde bulunmasını ve yetkilendirme.

"Güvenlik onayı" bir uygulamanın, uygulama kullanıcılarının özelliğini açıklayan güvenilir jetondur. başka bir katılımcıyı etkilemez. Güvenlik onayları, iki kullanıcı tarafından yönetilir ve kullanılır. Varlık türleri:

  • Kimlik sağlayıcılar: Katılımcılar adına güvenlik onayı oluşturma
  • Servis sağlayıcılar: Kimlikle güvenilir ilişkilerle güvenlik onaylarını doğrulama sağlayıcılar

API platformu, kimlik sağlayıcı ve servis sağlayıcı işlevi görebilir. Görev onaylayarak ve bunları istek mesajlarına ekleyerek, onayları arka uç hizmetleri tarafından işlenmek üzere kullanılabilir. Servis sağlayıcı rolünü üstlenen gelen istek mesajlarındaki onayları doğrulama.

SAML politikası türü, SAML Core'un 2.0 sürümüyle eşleşen SAML onaylarını destekler WS Güvenliği SAML Jeton Profili spesifikasyonunun 1.0 Sürümü ve Özelliği.

SAML Onayı Oluştur

Politika işleme:

  1. Mesaj XML değilse ve YoksayContentType true olarak ayarlanmamışsa bir hata oluştu.
  2. "Şablon" ayarlandıktan sonra şablonu Ataması politikasında açıklandığı şekilde işleyin. Eksik değişken varsa ve YoksayUnresolvedVariables ayarlanmamışsa bir hata kaydı oluşturun.
  3. "Şablon" ayarlanmazsa Konu ve Düzenleyen parametreleri veya referansları.
  4. Belirtilen anahtarı kullanarak onaylamayı imzalayın.
  5. Onaylamayı, belirtilen XPath'deki iletiye ekleyin.

SAML Onaylama İşlemini Doğrulama

Politika işleme:

  1. Politika, istek medya türünün XML olduğunu doğrulamak için gelen iletiyi kontrol eder. içerik türünün şu formatlara uygun olup olmadığını kontrol ederek: text/(.*+)?xml veya application/(.*+)?xml. Medya türü XML değilse ve <IgnoreContentType> ayarlanmazsa politika hata verir.
  2. Politika, XML'i ayrıştırır. Ayrıştırma işlemi başarısız olursa bir hata oluşur.
  3. Politika, ilgili XPath'leri kullanarak imzalı öğeyi ve onay işlemini ayıklar belirtilmiş (<SignedElementXPath> ve <AssertionXPath>). Bu yollardan herhangi biri bir öğe döndürmezse politika bir hata verir.
  4. Politika, Onaylama işleminin imzalı öğe ile aynı olduğunu doğrular veya imzalı öğenin bir alt öğesidir. Bu doğru değilse politika bir hata oluşturur.
  5. <NotBefore> veya <NotOnOrAfter> öğesi varsa politika, mevcut zaman damgasını aşağıdaki adımları uygulayın: SAML Core bölümü 2.5.1'de açıklandığı gibi.
  6. Politika, "Koşullar"ın işlenmesi için tüm ek kuralları uygular açıklandığı gibi SAML Core bölümü 2.5.1.1'de mevcuttur.
  7. Bu politika XML dijital imzasını doğrulamak için <TrustStore> ve <ValidateSigner> (yukarıda açıklandığı gibi). Doğrulama başarısız olursa politika bir hata oluşturur.

Politika hata bildirmeden tamamlandıktan sonra proxy'nin geliştiricisi, şunlardan biri:

  • Onaylamadaki dijital imza geçerli ve güvenilir bir CA tarafından imzalandı
  • Onaylama, mevcut dönem için geçerlidir
  • Onaylamanın konusu ve yayıncısı çıkartılacak ve akış değişkenlerinde ayarlanacaktır. Evet Bu değerlerin ek kimlik doğrulama için kullanılması konusunda diğer politikaların sorumluluğunda (örneğin, veya doğrulama için konu adının geçerli olup olmadığını kontrol etmek ya da bir hedef sisteme iletmek.

Onaylamanın ham XML'sini ayrıştırmak için ExtractVariables gibi diğer politikalar kullanılabilir kullanabilirsiniz.


Akış değişkenleri

SAML onayında belirtilebilecek birçok bilgi vardır. SAML onayın kendisi ExtractVariables politikası ve diğer mekanizmaları hakkında daha karmaşık doğrulamalar yapabilirsiniz.

Değişken Açıklama
saml.id SAML onay kimliği
saml.issuer "Düzenleyen" yerel XML türünden bir dizeye dönüştürülen onayın
saml.subject "Konu" yerel XML türünden bir dizeye dönüştürülen onayın
saml.valid Geçerlilik kontrolünün sonucuna göre doğru veya yanlış değerini döndürür
saml.issueInstant IssueInstant
saml.subjectFormat Konu biçimi
saml.scmethod Konu onay yöntemi
saml.scdaddress Konunun onay veri adresi
saml.scdinresponse Yanıttaki konu onay verileri
saml.scdrcpt Konu onayı verisi alıcısı
saml.authnSnooa AuthnStatement Oturumu NotOnOrAfter
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement AuthInstant
saml.authnSessionIndex AuthnStatement Oturum Dizini

Hata referansı

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
SourceNotConfigured One or more of the following elements of the Validate SAML Assertion policy is not defined or empty: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured If the <TrustStore> element is empty or not specified in the ValidateSAMLAssertion policy, then the deployment of the API proxy fails. A valid Trust Store is required.
NullKeyStoreAlias If the child element <Alias> is empty or not specified in the <Keystore> element of Generate SAML Assertion policy, then the deployment of the API proxy fails. A valid Keystore alias is required.
NullKeyStore If the child element <Name> is empty or not specified in the <Keystore> element of GenerateSAMLAssertion policy, then the deployment of the API proxy fails. A valid Keystore name is required.
NullIssuer If the <Issuer> element is empty or not specified in the Generate SAML Assertion policy, then the deployment of the API proxy fails. A valid <Issuer> value is required.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault. The fault name is the last part of the fault code. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed For a validate SAML assertion policy configuration, the error prefix is ValidateSAMLAssertion. GenerateSAMLAssertion.failed = true

Example error response

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

Example fault rule

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

İlgili konular

Değişkenleri ayıklama: Değişkenleri Çıkarın politika