Назад | Перейти на главную страницу

adfs выдает ошибку в сообщении authnrequest

У меня есть поставщик услуг SAML2, и я пытаюсь настроить единый вход с поставщиком удостоверений ADFS. В настоящее время мой поставщик услуг работает только с Okta и OneLogin. Когда они инициируют аутентификацию (отправляют мне ответное сообщение), она проходит успешно, но когда аутентификация инициируется с моей стороны (отправляя им сообщение AuthnRequest), ADFS выдает ошибку.

Я не могу определить почему и не очень хорошо знаком с ADFS. Журналы ошибок, предоставленные поставщиком удостоверений (анонимные), имеют это

Verbose,1/25/2019 8:37:10 AM,AD FS Tracing,70,None,"  Message after decoding: <?xml version=""1.0"" standalone=""yes""?>
<samlp:AuthnRequest xmlns:samlp=""urn:oasis:names:tc:SAML:2.0:protocol""
                    xmlns:saml=""urn:oasis:names:tc:SAML:2.0:assertion""
                    Destination=""https://exmaple.com/adfs/ls/""
                    ProviderName=""My SP's human readable name.""
                    AssertionConsumerServiceURL=""https://www.example.com/login/saml2/1234567/authenticate""
                    Version=""2.0""
                    IssueInstant=""2019-01-25T16:37:08Z""
                    ID=""IDcbe874446fa31fcb9c3f5868beab546b"">
  <saml:Issuer>https://www.example.com</saml:Issuer>
  <samlp:NameIDPolicy Format=""transient"" AllowCreate=""1"" />
</samlp:AuthnRequest>"
Error,1/25/2019 8:37:10 AM,AD FS Tracing,153,None,"Exception: MSIS0018: The SAML protocol message cannot be read because it contains data that is not valid.
StackTrace:    at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadNameIDPolicy(XmlReader reader)
   at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadAuthnRequest(XmlReader reader)
   at Microsoft.IdentityServer.Protocols.Saml.HttpSamlBindingSerializer.ReadProtocolMessage(String encodedSamlMessage)
   at Microsoft.IdentityServer.Protocols.Saml.HttpSamlBindingSerializer.CreateFromNameValueCollection(Uri baseUrl, NameValueCollection collection)
   at Microsoft.IdentityServer.Protocols.Saml.HttpRedirectSamlBindingSerializer.ReadMessage(Uri requestUrl, NameValueCollection form)
   at Microsoft.IdentityServer.Web.Protocols.Saml.HttpSamlMessageFactory.CreateMessage(WrappedHttpListenerRequest httpRequest)
   at Microsoft.IdentityServer.Web.Protocols.Saml.SamlContextFactory.CreateProtocolContextFromRequest(WrappedHttpListenerRequest request, ProtocolContext& protocolContext)
   at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolHandler.CreateProtocolContext(WrappedHttpListenerRequest request)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.GetProtocolHandler(WrappedHttpListenerRequest request, ProtocolContext& protocolContext, PassiveProtocolHandler& protocolHandler)
   at Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context)
Exception: Invalid URI: The format of the URI could not be determined.
StackTrace:    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
   at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadNameIDPolicy(XmlReader reader)
"
Error,1/25/2019 8:37:10 AM,AD FS Tracing,87,None,Passive pipeline error

Я не уверен, являются ли две трассировки стека разными ошибками или связаны.

Мой провайдер услуг использует слегка измененную версию модуля Perl Net :: SAML2.

Я надеюсь, что это всего лишь какой-то атрибут или элемент, которого ожидает ADFS, но я не предоставляю, или еще лучше, что на их стороне есть некорректная конфигурация.

Что может вызвать эту ошибку?

Я считаю, что мы должны отправить urn:oasis:names:tc:SAML:2.0:nameid-format:transient вместо того transient в качестве атрибута формата NameIDPolicy. Допустимые значения для Format приведены в разделе 8.3. основная спецификация SAML2.