Apache Knox для аутентификации SAML2 продолжает использовать объект NameIDFormat вместо того, что настроено - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь включить возможности единого входа для Apache Zeppelin, используя Apache Knox, который настроен на перенаправление запросов аутентификации на IdP Siteminder.

У меня возникла проблема, связанная с NameID конфигурация формата и конфигурация подписи.

Независимо от того, что я настраиваю в метаданных sp / idp, используется формат NameID

urn: oasis: names: t c: SAML: 2.0: nameid-format: entity

И запросы всегда отправляются с подписанными запросами, установленными в true.

Моя конфигурация SP выглядит следующим образом:

<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://knox.test.com/gateway/knoxsso/api/v1/websso?pac4jCallback=true%26client_name=SAML2Client">
<SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol http://schemas.xmlsoap.org/ws/2003/07/secext">
<NameIDFormat>
  urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
</NameIDFormat>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://knox.test.com/gateway/knoxsso/api/v1/websso?pac4jCallback=true%26client_name=SAML2Client"/>
   <AssertionConsumerService
            Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" index="1" isDefault="true"  Location="https://knox.test.com/gateway/knoxsso/api/v1/websso?pac4jCallback=true%26client_name=SAML2Client"/>
</SPSSODescriptor>

Я активировал трассировщик SAML и предпринял попытку входа пользователя в систему. AuthNRequest, отправляемый IdP Siteminder на основе этой конфигурации, выглядит следующим образом:

<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
                 AssertionConsumerServiceURL="https://knox.test.com/gateway/knoxsso/api/v1/websso?pac4jCallback=true%26client_name=SAML2Client"
                 Destination="https://test-siteminder.com/test/saml2sso"
                 ForceAuthn="false"
                 ID="_yp52mio0oj4ho2niijmnnaikgbkid9tnc5h5ear"
                 IsPassive="false"
                 IssueInstant="2020-02-17T10:19:24.279Z"
                 ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                 ProviderName="pac4j-saml"
                 Version="2.0"
                 >
<saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
              Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
              NameQualifier="https://knox.test.com/gateway/knoxsso/api/v1/websso?pac4jCallback=true%26client_name=SAML2Client"
              >https://knox.test.com/gateway/knoxsso/api/v1/websso?pac4jCallback=true%26client_name=SAML2Client</saml2:Issuer>

Я вижу значение подписи в разделе «Параметры» запроса, поэтому я Я предполагаю, что AuthNRequest подписан (хотя мое понимание этого минимально, так что это может быть неправильным предположением!).

Может кто-нибудь помочь объяснить, почему NameIDFormat проходит как сущность, а не как неопределенная? Apache knox поддерживает протоколы SAML1?

Заранее спасибо!

1 Ответ

0 голосов
/ 18 февраля 2020

Вы упомянули формат NameID как urn:oasis:names:tc:SAML:2.0:nameid-format:entity в своем сообщении, но в вставленном вами коде это urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified, просто ошибка копирования-вставки? Похоже, protocolSupportEnumeration также ссылается на протокол SAML 1. Knox использует Pac4J под капотом, который не поддерживает SAML 1. Это может быть причиной.

...