2016-11-28 21 views
0

Я использую Opensaml для создания запроса аутентификации saml2 для лазурногоПочему это недействительный запрос saml2?

<?xml version="1.0" encoding="UTF-8"?> 
<samlp:AuthnRequest AssertionConsumerServiceURL="https://myserver.de/_saml/validate/azure" 
ForceAuthn="false" ID="0" IsPassive="false" IssueInstant="2016-11-28T09:46:43.215Z" 
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" 
Version="2.0" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"> 
<samlp:Issuer xmlns:samlp="urn:oasis:names:tc:SAML:2.0:assertion">issuerid</samlp:Issuer> 
<saml2p:NameIDPolicy AllowCreate="true" 
    Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" 
    SPNameQualifier="Isser" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" /> 
<saml2p:RequestedAuthnContext Comparison="exact" 
    xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"> 
    <saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef> 
</saml2p:RequestedAuthnContext> 
</samlp:AuthnRequest> 

XML-закодирован с org.opensaml.xml.io.Marshaller и java.util.zip.DeflaterOutputStream.DeflaterOutputStream в Base64 и я проверить это, используя некоторые онлайн-декодеры для правильной работы.

Ошибка я получаю от лазури однако:

AADSTS75005: The request is not a valid Saml2 protocol message. 

Любой человек может помочь?

+0

Предоставленный XML-фрагмент не является даже XML-документом, не могли бы вы предоставить весь XML? –

+0

На самом деле это весь XML .... так или иначе Stackoverflow не показывал последний закрывающий тег. Но это полный запрос в XML. – Gobliins

ответ

1

В элементе 'AuthnRequest' вы определяете атрибут 'ID' как '0'. Это не допустимое значение атомного типа «xs: ID».

цитирует техническое правило Oasis документа:

хза: ИД простого типа используется для объявления идентификаторов SAML для утверждений, запросов и ответов. Значения объявляются типа хз: ИД в данном описании, должны удовлетворять следующие свойства в помимо тех, которые применяются в определении хз: сам ID типа:

  • Любая сторона, которая назначает идентификатор должен гарантировать, что существует пренебрежимо малая вероятность того, что эта сторона или любая другая сторона будет случайно присвоить один и тот же идентификатор другому объекту данных.
  • Если объект данных заявляет, что он имеет конкретный идентификатор, ДОЛЖНО быть ровно одним таким объявлением.

Механизм, с помощью которого система субъект SAML гарантирует, что идентификатор уникален остается реализацию. В случае, когда используется случайный или псевдослучайный метод , вероятность того, что два случайно выбранных идентификатора идентичны, ДОЛЖНА быть меньше или равна 2-128, а ДОЛЖНО быть меньше или равно 2-160.

Вы должны использовать один из существующих способов генерации идентификатора.

+0

Thx человек. Я проверил так много вещей, но не думал об этом. – Gobliins