Неверный запрос SAML AuthN - PullRequest
0 голосов
/ 10 мая 2019

При попытке установить SSO-соединение (инициированное sp) между моим SP и IDP с помощью ADFS я не могу получить ответ от IDP. Проблема в том, что этот ВПЛ является черным ящиком, и у меня нет руки.

Сделав некоторую отладку, я проверил, что мой запрос был корректным и правильно отформатирован, используя этот инструмент, и получил это сообщение

Неверный запрос аутентификации SAML. Не соответствует saml-schema-protocol-2.0.xsd

Но их больше нет, и даже когда я проверяю схему протокола saml , я не вижу, в чем проблема с этим запросом:

<samlp:AuthnRequest 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
    ID="_2e674db5054e407c30af" 
    Version="2.0" 
    IssueInstant="2019-05-10T09:39:52Z" 
    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
    AssertionConsumerServiceURL="https://my-sp.com/callback">
    <saml:Issuer 
        xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">sp_name
    </saml:Issuer>
    <samlp:NameIDPolicy 
        xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" 
        AllowCreate="true">
    </samlp:NameIDPolicy>
    <samlp:RequestedAuthnContext 
        xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
        Comparison="exact">
        <saml:AuthnContextClassRef 
            xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
        </saml:AuthnContextClassRef>
    </samlp:RequestedAuthnContext>
</samlp:AuthnRequest>

Я пропустил обязательное поле или одно значение не отформатировано?

1 Ответ

1 голос
/ 10 мая 2019

Прежде всего, вы должны использовать Validate XML с XSD-схемой, инструментом. Когда я это сделал, я получил:

Line: 14 | Column: 0 --> Element '{urn:oasis:names:tc:SAML:2.0:protocol}NameIDPolicy': Character content is not allowed, because the content type is empty.

Итак, я удалил тег </samlp:NameIDPolicy> и просто закрыл ваш NameIDPolicy, как показано ниже:

<samlp:AuthnRequest 
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
ID="_2e674db5054e407c30af" 
Version="2.0" 
IssueInstant="2019-05-10T09:39:52Z" 
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
AssertionConsumerServiceURL="https://my-sp.com/callback">
<saml:Issuer 
    xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">sp_name
</saml:Issuer>
<samlp:NameIDPolicy 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
    Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" 
    AllowCreate="true" />
<samlp:RequestedAuthnContext 
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
    Comparison="exact">
    <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
    </saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext></samlp:AuthnRequest>

Надеюсь, это поможет

...