Вы просматриваете документацию 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
Обработка политики:
- Если сообщение не является XML и для IgnoreContentType не установлено значение
true
, возникает ошибка. - Если установлен «Шаблон», обработайте шаблон, как описано для политики AssignMessage. Если какие-либо переменные отсутствуют и параметр IgnoreUnresolvedVariables не установлен, возникает ошибка.
- Если «Шаблон» не установлен, создайте утверждение, включающее значения параметров «Субъект» и «Издатель» или их ссылки.
- Подпишите утверждение, используя указанный ключ.
- Добавьте утверждение в сообщение по указанному XPath.
Проверка утверждения SAML
Обработка политики:
- Политика проверяет входящее сообщение, чтобы убедиться, что тип носителя запроса — XML, проверяя, соответствует ли тип контента форматам
text/(.*+)?xml
илиapplication/(.*+)?xml
. Если тип носителя не XML и<IgnoreContentType>
не установлен, политика выдаст ошибку. - Политика будет анализировать XML. Если синтаксический анализ не удался, это вызовет ошибку.
- Политика извлечет подписанный элемент и утверждение, используя соответствующие указанные XPath (
<SignedElementXPath>
и<AssertionXPath>
). Если ни один из этих путей не возвращает элемент, политика выдаст ошибку. - Политика проверит, что утверждение совпадает с подписанным элементом или является дочерним элементом подписанного элемента. Если это не так, то политика вызовет ошибку.
- Если в утверждении присутствует любой из элементов
<NotBefore>
или<NotOnOrAfter>
, политика проверит текущую метку времени по этим значениям, как описано в разделе 2.5.1 ядра SAML. - Политика будет применять любые дополнительные правила для обработки «Условий», как описано в разделе 2.5.1.1 ядра SAML.
- Политика проверит цифровую подпись 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> . | build |
TrustStoreNotConfigured | Если элемент <TrustStore> пуст или не указан в политике ValidateSAMLAssertion, развертывание прокси-сервера API завершается неудачей. Требуется действующее хранилище доверенных сертификатов. | build |
NullKeyStoreAlias | Если дочерний элемент <Alias> пуст или не указан в элементе <Keystore> политики создания утверждений SAML, развертывание прокси-сервера API завершается неудачно. Требуется действительный псевдоним хранилища ключей. | build |
NullKeyStore | Если дочерний элемент <Name> пуст или не указан в элементе <Keystore> политики GenerateSAMLAssertion, развертывание прокси-сервера API завершается неудачно. Требуется допустимое имя хранилища ключей. | build |
NullIssuer | Если элемент <Issuer> пуст или не указан в политике создания утверждений SAML, развертывание прокси-сервера API завершается неудачно. Требуется допустимое значение <Issuer> . | build |
Переменные неисправности
Эти переменные устанавливаются при возникновении ошибки во время выполнения. Дополнительные сведения см. в разделе Что нужно знать об ошибках политики .
Переменные | Где | Пример |
---|---|---|
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>
Связанные темы
Извлечение переменных: политика извлечения переменных