Общие проблемы SAML
Ниже приведены некоторые распространенные проблемы SAML с советами по их решению.
-
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
Cannot find any matching realm for [SamlPrepareAuthenticationRequest{realmName=saml1, assertionConsumerServiceURL=https://my.kibana.url/api/security/saml/callback}]Решение:
Для инициирования аутентификации SAML Kibana должна знать, какой домен SAML использовать из тех, что настроены в Elasticsearch. Можно использовать параметр
xpack.security.authc.providers.saml.<provider-name>.realm, чтобы явно задать имя домена SAML в Kibana. Оно должно совпадать с именем домена SAML, настроенного в Elasticsearch.Если вы получаете ошибку, подобную приведенной выше, это, возможно, означает, что значение
xpack.security.authc.providers.saml.<provider-name>.realmв вашей конфигурации Kibana неверно. Убедитесь, что оно совпадает с именем настроенного домена в Elasticsearch, которое является строкой послеxpack.security.authc.realms.saml.в вашей конфигурации Elasticsearch. -
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
Authentication to realm saml1 failed - Provided SAML response is not valid for realm saml/saml1 (Caused by ElasticsearchSecurityException[Conditions [https://some-url-here...] do not match required audience [https://my.kibana.url]])
Решение:
Получен ответ SAML, адресованный другому поставщику услуг SAML. Обычно это означает, что настроенный идентификатор субъекта поставщика услуг SAML в
elasticsearch.yml(sp.entity_id) не соответствует тому, что настроено как идентификатор субъекта поставщика услуг SAML в документации поставщика удостоверений SAML.Для решения этой проблемы убедитесь, что как домен SAML в Elasticsearch, так и IdP настроены с одинаковой строкой для идентификатора субъекта поставщика услуг SAML.
Эти строки сравниваются как чувствительные к регистру строки, а не как канонизированные URL-адреса, даже когда значения похожи на URL-адреса. Обращайте внимание на косые черты, номера портов и т. д.
-
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
Cannot find metadata for entity [your:entity.id] in [metadata.xml]
Решение:
Не удалось найти метаданные для идентификатора субъекта SAML
your:entity.idв настроенном файле метаданных (metadata.xml).- Убедитесь, что используемый файл
metadata.xml— это действительно тот, что предоставлен вашим поставщиком удостоверений SAML. - Убедитесь, что файл
metadata.xmlсодержит один элемент <EntityDescriptor> следующим образом:<EntityDescriptor ID="0597c9aa-e69b-46e7-a1c6-636c7b8a8070" entityID="https://saml.example.com/f174199a-a96e-4201-88f1-0d57a610c522/" ..., где значение атрибутаentityIDсовпадает со значениемidp.entity_id, которое вы задали в конфигурации домена SAML вelasticsearch.yml. - Обратите внимание, что они также сравниваются как чувствительные к регистру строки, а не как канонизированные URL-адреса, даже когда значения похожи на URL-адреса.
- Убедитесь, что используемый файл
-
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
unable to authenticate user [<unauthenticated-saml-user>] for action [cluster:admin/xpack/security/saml/authenticate]
Решение:
Эта ошибка указывает на то, что Elasticsearch не смог обработать входящее сообщение об аутентификации SAML. Поскольку сообщение не может быть обработано, Elasticsearch не знает, кто является пользователем, который должен пройти аутентификацию, и вместо этого используется заполнитель
<unauthenticated-saml-user>. Для диагностики фактической проблемы необходимо проверить лог Elasticsearch на наличие дополнительных подробностей. -
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
Authentication to realm <saml-realm-name> failed - SAML Attribute [<AttributeName0>] for [xpack.security.authc.realms.saml.<saml-realm-name>.attributes.principal] not found in saml attributes [<AttributeName1>=<AttributeValue1>, <AttributeName2>=<AttributeValue2>, ...] or NameID [ NameID(format)=value ]
Решение:
Эта ошибка указывает на то, что Elasticsearch не смог найти необходимый атрибут SAML в ответе SAML, отправленном поставщиком удостоверений. В данном примере Elasticsearch настроен следующим образом:
xpack.security.authc.realms.saml.<saml-realm-name>.attributes.principal: AttributeName0
Эта конфигурация означает, что Elasticsearch ожидает найти атрибут SAML с именем
AttributeName0илиNameIDс соответствующим форматом в ответе SAML, чтобы он мог сопоставить его с свойством пользователяprincipal. Свойство пользователяprincipalявляется обязательным, поэтому если это сопоставление не удается, аутентификация завершается неудачей.Если вы пытаетесь сопоставить
NameID, убедитесь, что ожидаемый форматNameIDсоответствует отправленному. Подробности см. в разделе Специальные имена атрибутов.Если вы пытаетесь сопоставить атрибут SAML, и он не входит в список в сообщении об ошибке, это может означать, что вы ошиблись в написании имени атрибута или что IdP не отправляет этот конкретный атрибут. Возможно, вы сможете использовать другой атрибут из списка для сопоставления со свойством
principal, или проконсультируйтесь с администратором IdP, чтобы определить, можно ли отправить требуемый атрибут. -
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
Cannot find [{urn:oasis:names:tc:SAML:2.0:metadata}IDPSSODescriptor]/[urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect] in descriptorРешение:
Эта ошибка указывает на то, что метаданные SAML вашего поставщика удостоверений не содержат конечную точку
<SingleSignOnService>с типом связи HTTP-Redirect (urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect). Elasticsearch поддерживает только тип связиHTTP-Redirectдля запросов аутентификации SAML (и не поддерживает тип связиHTTP-POST). Обратитесь к администратору IdP, чтобы включить по крайней мере один тип связи<SingleSignOnService>, поддерживающий тип связиHTTP-Redirect, и обновите метаданные SAML IdP. -
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
Authentication to realm my-saml-realm failed - Provided SAML response is not valid for realm saml/my-saml-realm (Caused by ElasticsearchSecurityException[SAML Response is not a 'success' response: The SAML IdP did not grant the request. It indicated that the Elastic Stack side sent something invalid (urn:oasis:names:tc:SAML:2.0:status:Requester). Specific status code which might indicate what the issue is: [urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy]] )
Решение:
Это означает, что поставщик удостоверений SAML не смог пройти аутентификацию пользователя и отправил ответ SAML поставщику услуг (Elastic Stack), указав об этом неудаче. Сообщение сообщит, считает ли поставщик удостоверений SAML, что проблема связана с поставщиком услуг (Elastic Stack) или самим поставщиком удостоверений, и конкретный код состояния, который следует за ним, очень полезен, так как он обычно указывает на основную проблему. Список конкретных кодов ошибок определен в Спецификации SAML 2.0 Core - Раздел 3.2.2.2, и наиболее часто встречающимися являются:
-
urn:oasis:names:tc:SAML:2.0:status:AuthnFailed: Поставщик удостоверений SAML не смог пройти аутентификацию пользователя. Нет многого, что можно исправить со стороны Elastic Stack, логи поставщика удостоверений SAML, вероятно, предоставят больше информации. -
urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy: Поставщик удостоверений SAML не может предоставить NameID с запрошенным форматом. При создании запросов аутентификации SAML Elasticsearch устанавливает элемент NameIDPolicy запроса аутентификации с соответствующим значением. Это контролируется параметром конфигурацииnameid_formatвelasticsearch.yml, который по умолчанию равенurn:oasis:names:tc:SAML:2.0:nameid-format:transient. Это указывает поставщику удостоверений вернуть NameID с этим конкретным форматом в ответе SAML. Если поставщик удостоверений SAML не может удовлетворить этот запрос, например, потому что он настроен на выпуск NameID с форматомurn:oasis:names:tc:SAML:2.0:nameid-format:persistentвместо этого, он возвращает эту ошибку, указывая на недействительную политику NameID. Эту проблему можно решить, скорректировавnameid_format, чтобы он соответствовал формату, который может вернуть поставщик удостоверений SAML, или установив его в значениеurn:oasis:names:tc:SAML:2.0:nameid-format:unspecified, чтобы поставщик удостоверений мог вернуть любой желаемый формат.
-
-
Симптомы:
Аутентификация в Kibana завершается неудачей, и в логах Elasticsearch отображается следующая ошибка:
The XML Signature of this SAML message cannot be validated. Please verify that the saml realm uses the correct SAMLmetadata file/URL for this Identity Provider
Решение:
Это означает, что Elasticsearch не смог проверить цифровую подпись сообщения SAML, отправленного поставщиком удостоверений. Elasticsearch использует открытый ключ поставщика удостоверений, который включён в метаданные SAML, для проверки подписи, созданной IdP с помощью соответствующего закрытого ключа. Невозможность этого может иметь ряд причин:
- Как указывает сообщение об ошибке, наиболее распространённой причиной является использование неправильного файла метаданных, в результате чего открытый ключ, содержащийся в нём, не соответствует закрытому ключу, используемому поставщиком удостоверений.
- Конфигурация поставщика удостоверений изменилась или ключ был изменён, а файл метаданных, используемый Elasticsearch, не был обновлён.
- Сообщение SAML Response было изменено во время передачи, и подпись не может быть проверена, даже если используется правильный ключ.
Закрытые ключи, открытые ключи и самоподписанные сертификаты X.509, используемые в SAML для цифровых подписей, как описано выше, не имеют отношения к ключам и сертификатам, используемым для TLS ни в транспорте, ни на уровне http. Неисправность, подобная описанной выше, не связана с вашей конфигурацией, связанной с
xpack.ssl. -
Симптомы:
Пользователи не могут войти в систему с локальным именем пользователя и паролем в Kibana, так как SAML включён.
Решение:
Если вы хотите, чтобы ваши пользователи могли использовать локальные учетные данные для аутентификации в Kibana помимо использования домена SAML для единого входа, вы должны включить
basicauthProviderв Kibana. Процесс описан в Руководстве SAML
Ведение журнала:
Если предыдущие решения не решают проблему, включите дополнительное ведение журнала для домена SAML для дальнейшей отладки. Вы можете включить отладочное ведение журнала, настроив следующий постоянный параметр:
PUT /_cluster/settings
{
"persistent": {
"logger.org.elasticsearch.xpack.security.authc.saml": "debug"
}
} В качестве альтернативы можно добавить следующие строки в конец файла конфигурации log4j2.properties в папке ES_PATH_CONF:
logger.saml.name = org.elasticsearch.xpack.security.authc.saml logger.saml.level = DEBUG
См. настройку уровней регистрации для получения дополнительной информации.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/trb-security-saml.html