Политики утверждений SAML

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Что

  • Входящая аутентификация и авторизация: проверка политики утверждений SAML
    Тип политики SAML позволяет прокси-серверам API проверять утверждения SAML, прикрепленные к входящим запросам SOAP. Политика SAML проверяет входящие сообщения, содержащие утверждение SAML с цифровой подписью, отклоняет их, если они недействительны, и устанавливает переменные, которые позволяют дополнительным политикам или самим серверным службам дополнительно проверять информацию в утверждении.
  • Генерация исходящего токена: создание политики утверждений SAML
    Тип политики SAML позволяет прокси-серверам API присоединять утверждения SAML к исходящим запросам XML. Затем эти утверждения становятся доступными, чтобы позволить серверным службам применить дальнейшую обработку безопасности для аутентификации и авторизации.

Образцы

Создать утверждение 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>

Создание утверждения SAML

Проверка утверждения 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>

Проверка утверждения SAML


Ссылка на элемент

Создать утверждение SAML

Имя поля Описание
атрибут name Имя экземпляра политики. Имя должно быть уникальным в организации. В имени можно использовать следующие символы: A-Z0-9._\-$ % . Однако пользовательский интерфейс управления налагает дополнительные ограничения, например автоматическое удаление символов, не являющихся буквенно-цифровыми.
атрибут ignoreContentType Логическое значение, которому может быть присвоено значение true или false . По умолчанию утверждение не будет создано, если тип контента сообщения не является типом контента XML. Если для этого параметра установлено значение true , сообщение будет обрабатываться как XML независимо от типа содержимого.
Issuer
Уникальный идентификатор поставщика удостоверений. Если присутствует необязательный атрибут ref , то значение Issuer будет присвоено во время выполнения на основе указанной переменной. Если необязательный атрибут ref отсутствует, будет использоваться значение Issuer.
KeyStore
Имя хранилища ключей, которое содержит закрытый ключ и псевдоним закрытого ключа, используемого для цифровой подписи утверждений SAML.
OutputVariable
FlowVariable
Message Цель политики. Допустимые значения: message , request и response . Если установлено значение message , политика условно извлекает объект сообщения на основе точки присоединения политики. При присоединении к потоку запроса политика преобразует message в запрос, а при присоединении к потоку ответа политика преобразует message в ответ.
XPath Выражение XPath, указывающее элемент исходящего XML-документа, к которому политика прикрепит утверждение SAML.
SignatureAlgorithm SHA1 или SHA256
Subject
Уникальный идентификатор субъекта утверждения SAML. Если присутствует необязательный атрибут ref , то значение субъекта будет присвоено во время выполнения на основе указанной переменной. Если присутствует необязательный атрибут ref , будет использоваться значение Темы.
Template
Если оно присутствует, то утверждение будет сгенерировано путем запуска этого шаблона, замены всего, обозначенного {} на соответствующую переменную, а затем цифровой подписи результата. Шаблон обрабатывается в соответствии с правилами политики AssignMessage. См. политику назначения сообщений .

Проверка утверждения SAML

Имя поля Описание
атрибут name
Имя экземпляра политики. Имя должно быть уникальным в организации. В имени можно использовать следующие символы: A-Z0-9._\-$ % . Однако пользовательский интерфейс управления налагает дополнительные ограничения, например автоматическое удаление символов, не являющихся буквенно-цифровыми.
атрибут ignoreContentType Логическое значение, которому может быть присвоено значение true или false . По умолчанию утверждение не будет создано, если тип контента сообщения не является типом контента XML. Если для этого параметра установлено true , сообщение будет обрабатываться как XML независимо от типа содержимого.
Source Цель политики. Допустимые значения: message , request и response . Если установлено значение message , политика условно извлекает объект сообщения на основе точки присоединения политики. При присоединении к потоку запроса политика преобразует message в запрос, а при присоединении к потоку ответа политика преобразует message в ответ.
XPath
Устарело. Дитя Source . Используйте AssertionXPath и SignedElementXPath .
AssertionXPath
Дитя Source . Выражение XPath, указывающее элемент входящего XML-документа, из которого политика может извлечь утверждение SAML.
SignedElementXPath
Дитя Source . Выражение XPath, указывающее элемент во входящем XML-документе, из которого политика может извлечь подписанный элемент. Он может отличаться от XPath для AssertionXPath или совпадать с ним.
TrustStore
Имя хранилища TrustStore, содержащего доверенные сертификаты X.509, используемые для проверки цифровых подписей утверждений SAML.
RemoveAssertion
Логическое значение, которому может быть присвоено значение true или false . Если true , утверждение SAML будет удалено из сообщения запроса перед тем, как сообщение будет перенаправлено во внутреннюю службу.

Примечания по использованию

Спецификация языка разметки утверждений безопасности (SAML) определяет форматы и протоколы, которые позволяют приложениям обмениваться информацией в формате XML для аутентификации и авторизации.

«Утверждение безопасности» — это доверенный токен, который описывает атрибут приложения, пользователя приложения или другого участника транзакции. Утверждения безопасности управляются и используются двумя типами объектов:

  • Поставщики удостоверений: создание утверждений безопасности от имени участников.
  • Поставщики услуг: проверка утверждений безопасности посредством доверительных отношений с поставщиками удостоверений.

Платформа API может выступать в качестве поставщика удостоверений и поставщика услуг. Он действует как поставщик удостоверений, генерируя утверждения и прикрепляя их к сообщениям запроса, делая эти утверждения доступными для обработки серверными службами. Он действует как поставщик услуг, проверяя утверждения входящих сообщений запроса.

Тип политики SAML поддерживает утверждения SAML, соответствующие версии 2.0 базовой спецификации SAML и версии 1.0 спецификации профиля токена SAML WS-Security.

Создать утверждение SAML

Обработка политики:

  1. Если сообщение не является XML и для IgnoreContentType не установлено значение true , возникает ошибка.
  2. Если установлен «Шаблон», обработайте шаблон, как описано для политики AssignMessage. Если какие-либо переменные отсутствуют и параметр IgnoreUnresolvedVariables не установлен, возникает ошибка.
  3. Если «Шаблон» не установлен, создайте утверждение, включающее значения параметров «Субъект» и «Издатель» или их ссылки.
  4. Подпишите утверждение, используя указанный ключ.
  5. Добавьте утверждение в сообщение по указанному XPath.

Проверка утверждения SAML

Обработка политики:

  1. Политика проверяет входящее сообщение, чтобы убедиться, что тип носителя запроса — XML, проверяя, соответствует ли тип контента форматам text/(.*+)?xml или application/(.*+)?xml . Если тип носителя не XML и <IgnoreContentType> не установлен, политика выдаст ошибку.
  2. Политика будет анализировать XML. Если синтаксический анализ не удался, это вызовет ошибку.
  3. Политика извлечет подписанный элемент и утверждение, используя соответствующие указанные XPath ( <SignedElementXPath> и <AssertionXPath> ). Если ни один из этих путей не возвращает элемент, политика выдаст ошибку.
  4. Политика проверит, что утверждение совпадает с подписанным элементом или является дочерним элементом подписанного элемента. Если это не так, то политика вызовет ошибку.
  5. Если в утверждении присутствует любой из элементов <NotBefore> или <NotOnOrAfter> , политика проверит текущую метку времени по этим значениям, как описано в разделе 2.5.1 ядра SAML.
  6. Политика будет применять любые дополнительные правила для обработки «Условий», как описано в разделе 2.5.1.1 ядра SAML.
  7. Политика проверит цифровую подпись XML, используя значения <TrustStore> и <ValidateSigner> , как описано выше. Если проверка не удалась, политика выдаст ошибку.

Как только политика завершится без возникновения ошибок, разработчик прокси-сервера может быть уверен в следующем:

  • Цифровая подпись утверждения действительна и подписана доверенным центром сертификации.
  • Утверждение действительно для текущего периода времени.
  • Субъект и отправитель утверждения будут извлечены и установлены в переменных потока. Другие политики обязаны использовать эти значения для дополнительной аутентификации, например, для проверки правильности имени субъекта или передачи его в целевую систему для проверки.

Другие политики, такие как ExtractVariables, могут использоваться для анализа необработанного XML утверждения для более сложной проверки.


Переменные потока

В утверждении SAML можно указать множество фрагментов информации. Само утверждение SAML представляет собой XML, который можно анализировать с помощью политики ExtractVariables и других механизмов для реализации более сложных проверок.

Переменная Описание
saml.id Идентификатор утверждения SAML
saml.issuer «Издатель» утверждения, преобразованный из собственного типа XML в строку.
saml.subject «Субъект» утверждения, преобразованный из собственного типа XML в строку.
saml.valid Возвращает true или false в зависимости от результата проверки достоверности.
saml.issueInstant ПроблемаМгновенный
saml.subjectFormat Формат темы
saml.scmethod Метод подтверждения субъекта
saml.scdaddress Адрес данных подтверждения субъекта
saml.scdinresponse Данные подтверждения субъекта в ответе
saml.scdrcpt Получатель данных подтверждения субъекта
saml.authnSnooa AuthnStatement SessionNotOnOrAfter
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement
saml.authnSessionIndex Индекс сеанса AuthnStatement

Ссылка на ошибку

В этом разделе описаны коды ошибок и сообщения об ошибках, которые возвращаются, а также переменные ошибок, которые устанавливаются Edge, когда эта политика вызывает ошибку. Эту информацию важно знать, если вы разрабатываете правила обработки ошибок. Дополнительные сведения см. в разделах Что нужно знать об ошибках политики и Обработка ошибок .

Ошибки развертывания

Эти ошибки могут возникнуть при развертывании прокси-сервера, содержащего эту политику.

Название ошибки Причина Исправить
SourceNotConfigured Один или несколько из следующих элементов политики проверки утверждений SAML не определены или пусты: <Source> , <XPath> , <Namespaces> , <Namespace> .
TrustStoreNotConfigured Если элемент <TrustStore> пуст или не указан в политике ValidateSAMLAssertion, развертывание прокси-сервера API завершается неудачей. Требуется действующее хранилище доверенных сертификатов.
NullKeyStoreAlias Если дочерний элемент <Alias> пуст или не указан в элементе <Keystore> политики создания утверждений SAML, развертывание прокси-сервера API завершается неудачно. Требуется действительный псевдоним хранилища ключей.
NullKeyStore Если дочерний элемент <Name> пуст или не указан в элементе <Keystore> политики GenerateSAMLAssertion, развертывание прокси-сервера API завершается неудачно. Требуется допустимое имя хранилища ключей.
NullIssuer Если элемент <Issuer> пуст или не указан в политике создания утверждений SAML, развертывание прокси-сервера API завершается неудачно. Требуется допустимое значение <Issuer> .

Переменные неисправности

Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .

Переменные Где Пример
fault.name=" fault_name " fault_name — имя ошибки . Имя неисправности — это последняя часть кода неисправности. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed Для проверки конфигурации политики утверждений SAML префикс ошибки — ValidateSAMLAssertion . GenerateSAMLAssertion.failed = true

Пример ответа об ошибке

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

Пример правила неисправности

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

Связанные темы

Извлечение переменных: политика извлечения переменных