SAMLAssertion politikaları

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne?

  • Gelen kimlik doğrulama ve yetkilendirme: SAML onayını doğrulama politikası
    SAML politika türü, API proxy'lerinin gelen SOAP isteklerine eklenen SAML onaylarını doğrulamasını sağlar. SAML politikası, dijital olarak imzalanmış bir SAML onaylama işlemi içeren gelen mesajları doğrular, geçersizlerse bunları reddeder ve onaylama işlemindeki bilgilerin daha fazla doğrulanmasına olanak tanıyan ek politikalar veya arka uç hizmetlerinin kendisi için değişkenler ayarlar.
  • Giden jeton oluşturma: SAML onayı politikası oluşturma
    SAML politika türü, API proxy'lerinin giden XML isteklerine SAML onayları eklemesini sağlar. Bu onaylar daha sonra arka uç hizmetlerinin kimlik doğrulama ve yetkilendirme için ek güvenlik işlemleri uygulamasına olanak tanır.

Örnekler

SAML onayı oluşturma

<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ını doğrulama


Öğe referansı

SAML onayı oluşturma

Alan Adı Açıklama
name özellik Politika örneğinin adı. Ad, kuruluş içinde benzersiz olmalıdır. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır: A-Z0-9._\-$ %. Ancak yönetim kullanıcı arayüzü, alfanümerik olmayan karakterleri otomatik olarak kaldırma gibi ek kısıtlamalar uygular.
ignoreContentType özellik true veya false olarak ayarlanabilen bir Boole değeri. Varsayılan olarak, iletinin içerik türü XML Content-Type değilse onaylama oluşturulmaz. Bu değer true olarak ayarlanırsa ileti, Content-type'tan bağımsız olarak XML olarak değerlendirilir.
Issuer
Kimlik sağlayıcının benzersiz tanımlayıcısı. İsteğe bağlı ref özelliği varsa Yayınlayan değeri, belirtilen değişkene göre çalışma zamanında atanır. İsteğe bağlı ref özelliği yoksa veren kuruluşun değeri kullanılır.
KeyStore
Özel anahtarı içeren anahtar deposunun adı ve SAML onaylarını dijital olarak imzalamak için kullanılan özel anahtarın diğer adı.
OutputVariable
FlowVariable
Message Politikanın hedefi. Geçerli değerler message, request ve response şeklindedir. message olarak ayarlandığında politika, ileti nesnesini koşullu olarak alır. Bu işlem, politikanın ek noktasına göre yapılır. İstek akışına eklendiğinde politika, message değerini istek olarak çözer. Yanıt akışına eklendiğinde ise politika, message değerini yanıt olarak çözer.
XPath Politikanın SAML onayını ekleyeceği giden XML belgesindeki öğeyi belirten bir XPath ifadesi.
SignatureAlgorithm SHA1 veya SHA256
Subject
SAML onayının konusunun benzersiz tanımlayıcısı. İsteğe bağlı ref özelliği varsa Konu değeri, belirtilen değişkene göre çalışma zamanında atanır. İsteğe bağlı ref özelliği mevcutsa Konu değeri kullanılır.
Template
Varsa bu şablon çalıştırılarak, {} ile gösterilen her şey ilgili değişkenle değiştirilerek ve sonuç dijital olarak imzalanarak onaylama oluşturulur. Şablon, AssignMessage politika kurallarına göre işlenir. İleti politikası atama başlıklı makaleyi inceleyin.

SAML Onayını Doğrulama

Alan Adı Açıklama
name özellik
Politika örneğinin adı. Ad, kuruluş içinde benzersiz olmalıdır. Adda kullanabileceğiniz karakterler şunlarla sınırlıdır: A-Z0-9._\-$ %. Ancak yönetim kullanıcı arayüzü, alfanümerik olmayan karakterleri otomatik olarak kaldırma gibi ek kısıtlamalar uygular.
ignoreContentType özellik true veya false olarak ayarlanabilen bir Boole değeri. Varsayılan olarak, iletinin içerik türü XML Content-Type değilse onaylama oluşturulmaz. Bu ayar true olarak belirlenirse, Content-type'tan bağımsız olarak ileti XML olarak değerlendirilir.
Source Politikanın hedefi. Geçerli değerler message, request ve response şeklindedir. message olarak ayarlandığında politika, ileti nesnesini koşullu olarak alır. Bu işlem, politikanın ek noktasına göre yapılır. İstek akışına eklendiğinde politika, message değerini istek olarak çözer. Yanıt akışına eklendiğinde ise politika, message değerini yanıt olarak çözer.
XPath
Kullanımdan kaldırıldı. Source adlı kullanıcının çocuğu. AssertionXPath ve SignedElementXPath özelliğini kullanın.
AssertionXPath
Source adlı kullanıcının çocuğu. Politikanın SAML onayını çıkarabileceği, gelen XML dokümanındaki öğeyi belirten bir XPath ifadesi.
SignedElementXPath
Source adlı kullanıcının çocuğu. Politikanın imzalı öğeyi çıkarabileceği, gelen XML dokümanındaki öğeyi belirten bir XPath ifadesi. Bu, AssertionXPath için XPath ile aynı veya farklı olabilir.
TrustStore
SAML onaylarındaki dijital imzaları doğrulamak için kullanılan güvenilen X.509 sertifikalarını içeren güven deposunun adı.
RemoveAssertion
true veya false olarak ayarlanabilen bir Boole değeri. true olduğunda, ileti arka uç hizmetine yönlendirilmeden önce SAML onaylaması istek iletisinden çıkarılır.

Kullanım notları

Güvenlik Onayı Biçimlendirme Dili (SAML) spesifikasyonu, uygulamaların kimlik doğrulama ve yetkilendirme için XML biçimli bilgileri değiştirmesini sağlayan biçimleri ve protokolleri tanımlar.

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

  • Kimlik sağlayıcılar: Katılımcılar adına güvenlik onayları oluşturur.
  • Hizmet sağlayıcılar: Kimlik sağlayıcılarla güvenilir ilişkiler kurarak güvenlik onaylarını doğrulama

API platformu, kimlik sağlayıcı ve servis sağlayıcı olarak hareket edebilir. Onaylamalar oluşturup bunları istek mesajlarına ekleyerek kimlik sağlayıcı görevi görür ve bu onaylamaların arka uç hizmetleri tarafından işlenmesini sağlar. Gelen istek mesajlarındaki onayları doğrulayarak servis sağlayıcı görevi görür.

SAML politika türü, SAML Core Specification'ın 2.0 sürümü ve WS-Security SAML Token Profile Specification'ın 1.0 sürümüyle eşleşen SAML onaylarını destekler.

SAML onayı oluşturma

Politika işleme:

  1. İleti XML değilse ve IgnoreContentType true olarak ayarlanmamışsa hata oluşturun.
  2. "Template" ayarlanmışsa şablonu AssignMessage politikası için açıklandığı şekilde işleyin. Değişkenlerden herhangi biri eksikse ve IgnoreUnresolvedVariables ayarlanmamışsa hata oluşturun.
  3. "Şablon" ayarlanmamışsa Subject ve Issuer parametrelerinin değerlerini veya referanslarını içeren bir onaylama oluşturun.
  4. Belirtilen anahtarı kullanarak onaylamayı imzalayın.
  5. Onayı, belirtilen XPath'teki iletiye ekleyin.

SAML Onayını Doğrulama

Politika işleme:

  1. Politika, içerik türünün text/(.*+)?xml veya application/(.*+)?xml biçimleriyle eşleşip eşleşmediğini kontrol ederek isteğin medya türünün XML olduğunu doğrulamak için gelen mesajı kontrol eder. Medya türü XML değilse ve <IgnoreContentType> ayarlanmamışsa politika hata verir.
  2. Politika, XML'yi ayrıştırır. Ayrıştırma başarısız olursa hata oluşur.
  3. Politika, belirtilen ilgili XPath'leri (<SignedElementXPath> ve <AssertionXPath>) kullanarak imzalı öğeyi ve onaylamayı çıkarır. Bu yollardan biri öğe döndürmezse politika bir hata oluşturur.
  4. Politika, onaylamanın imzalı öğeyle aynı olduğunu veya imzalı öğenin alt öğesi olduğunu doğrular. Bu doğru değilse politika bir hata oluşturur.
  5. Onayda <NotBefore> veya <NotOnOrAfter> öğelerinden biri varsa politika, SAML Core bölüm 2.5.1'de açıklandığı gibi geçerli zaman damgasını bu değerlerle karşılaştırarak kontrol eder.
  6. Politika, SAML Core bölüm 2.5.1.1'de açıklandığı gibi "Koşullar"ın işlenmesi için ek kurallar uygular.
  7. Politika, yukarıda açıklanan güvenilir sertifika deposu değerini (<TrustStore>) kullanarak XML dijital imzasını doğrular. Doğrulama başarısız olursa politika bir hata oluşturur.

Politika hataya neden olmadan tamamlandığında, proxy'nin geliştiricisi şunlardan emin olabilir:

  • Onaydaki dijital imza geçerlidir ve güvenilir bir CA tarafından imzalanmıştır.
  • Onay, mevcut dönem için geçerlidir.
  • Onayın konusu ve yayınlayanı çıkarılıp akış değişkenlerine ayarlanır. Konu adının geçerli olup olmadığını kontrol etmek veya doğrulama için hedef sisteme iletmek gibi ek kimlik doğrulama işlemleri için bu değerleri kullanmak diğer politikaların sorumluluğundadır.

Daha karmaşık doğrulama için ExtractVariables gibi diğer politikalar, onaylamanın ham XML'sini ayrıştırmak üzere kullanılabilir.


Akış değişkenleri

SAML onaylama işleminde belirtilebilecek birçok bilgi vardır. SAML onayı, daha karmaşık doğrulamalar uygulamak için ExtractVariables politikası ve diğer mekanizmalar kullanılarak ayrıştırılabilen XML'dir.

Değişken Açıklama
saml.id SAML onayı kimliği
saml.issuer Doğrulamanın "Vereni", kendi XML türünden dizeye dönüştürülür.
saml.subject İddianın "Konu" alanı, kendi XML türünden dizeye dönüştürülür.
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 onaylama yöntemi
saml.scdaddress Konu onayı verilerinin adresi
saml.scdinresponse Yanıtın konu onay verileri
saml.scdrcpt Konu onay verileri alıcısı
saml.authnSnooa AuthnStatement SessionNotOnOrAfter
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement AuthInstant
saml.authnSessionIndex AuthnStatement Oturum Dizini

Hata referansı

Bu bölümde, döndürülen hata kodları ve hata mesajları açıklanmaktadır ve bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata değişkenleri. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.

Dağıtım hataları

Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.

Hata adı Neden Düzelt
SourceNotConfigured Aşağıdaki "SAML Onay Doğrulaması" öğelerinden biri veya daha fazlası politika tanımlanmadı veya boş: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured <TrustStore> öğesi boşsa veya ValidateSAMLAssertion politikasını kontrol ederseniz API proxy'sinin dağıtımı başarısız olur. Geçerli bir Trust Store gerekli.
NullKeyStoreAlias <Alias> alt öğesi boşsa veya <Keystore> içinde belirtilmemişse öğesi oluşturun, ardından API'nin dağıtımına proxy başarısız olur. Geçerli bir Anahtar Deposu takma adı gerekir.
NullKeyStore <Name> alt öğesi boşsa veya <Keystore> içinde belirtilmemişse öğesi oluşturmak, ardından API dağıtımının proxy başarısız olur. Geçerli bir Anahtar Deposu adı gerekli.
NullIssuer <Issuer> öğesi boşsa veya SAML Oluştur bölümünde belirtilmemişse Onay politikası yoksa API proxy'sinin dağıtımı başarısız olur. CEVAP geçerli <Issuer> değeri gereklidir.

Hata değişkenleri

Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed Doğrulama SAML onay politikası yapılandırması için hata öneki ValidateSAMLAssertion GenerateSAMLAssertion.failed = true

Örnek hata yanıtı

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

Örnek hata kuralı

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

İlgili konular

Değişkenleri çıkarma: Değişkenleri Çıkarma politikası