简体   繁体   English

?wa=wsignoutcleanup1.0 在 SSO sp 发起的流程中有什么意义

[英]What is the significance of ?wa=wsignoutcleanup1.0 in the SSO sp initiated flow

I am Using SAML 2.0 in the SSO SP initiated flow.我在 SSO SP 启动的流程中使用 SAML 2.0。 I have configured logout url as "https://{DNS_name}/adfs/ls/" and i am getting the below error.我已将注销 url 配置为"https://{DNS_name}/adfs/ls/" ,但出现以下错误。

Error:- System.Xml.XmlException: MSIS0006: A required attribute is not present: ID.错误:- System.Xml.XmlException:MSIS0006:所需的属性不存在:ID。

Note:- I am not getting this error if i configure logout URL as "https://{DNS_name}/adfs/ls?wa=wsignoutcleanup1.0" .注意:- 如果我将注销 URL 配置为"https://{DNS_name}/adfs/ls?wa=wsignoutcleanup1.0"我不会收到此错误。

Que :- Why am i getting ID related errors if not configuring cleanup part(?wa=wsignoutcleanup1.0). Que :- 如果不配置清理部分 (?wa=wsignoutcleanup1.0),为什么我会收到与 ID 相关的错误。 i am not getting the significance of cleanup part in the logout URL.我没有得到注销 URL 中清理部分的重要性。

I have read that "The wsignoutcleanup1.0 message is an instruction to relying parties to delete the cached session state for the specified user."我读过“wsignoutcleanup1.0 消息是指示依赖方删除指定用户的缓存会话状态”。

Complete Error:- Encountered error during federation passive request.完全错误:- 在联合被动请求期间遇到错误。

Additional Data附加数据

Protocol Name:协议名称:

Relying Party:依赖方:

Exception details: System.Xml.XmlException: MSIS0006: A required attribute is not present: ID.异常详细信息:System.Xml.XmlException:MSIS0006:所需的属性不存在:ID。 at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadCommonAttributes(XmlReader reader, SamlMessage message) at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadLogoutRequest(XmlReader reader) at Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadSamlMessage(XmlReader reader, NamespaceContext context) 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.HttpPostSamlBindingSerializer.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, 在 Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadCommonAttributes(XmlReader reader, SamlMessage message) 在 Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSerializer.ReadLogoutRequest(XmlReader reader) 在 Microsoft.IdentityServer.Protocols.Saml.SamlReadSamlReaderMessageXmlReadSamlReadSamlReaderMessageXml , NamespaceContext 上下文) 在 Microsoft.IdentityServer.Protocols.Saml.HttpSamlBindingSerializer.ReadProtocolMessage(String encodingSamlMessage) 在 Microsoft.IdentityServer.Protocols.Saml.HttpSamlBindingSerializer.CreateFromNameValueCollection(Uri baseUrl, NameValueCollection collection) 在 Microsoft.IdentityServer. 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) 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.Web.IdentityServer. OnGetContext(WrappedHttpListenerContext 上下文)

You get an error because you're outside of spec. 由于不符合规范,您会收到一个错误消息。 The ?wa parameter defines the action that you want to happen, ie "This REQUIRED parameter specifies the action to be performed." ?wa参数定义要执行的操作,即“此REQUIRED参数指定要执行的操作”。 ( Source ). 来源 )。

It's not specific to this sign-out action... it's any action. 它不特定于此退出操作,而是任何操作。

I work at Microsoft boii.我在 Microsoft boii 工作。 For SAML you want to use the https://sts.contoso.com/adfs/ls endpoint.对于 SAML,您要使用https://sts.contoso.com/adfs/ls端点。 The wa=wsignoutcleanup is for the WS-Federation protocol. wa=wsignoutcleanup 用于 WS-Federation 协议。 Alot of times it looks like things are working if you use the wa=wsignoutcleanup but trust me it doesn't.很多时候,如果您使用 wa=wsignoutcleanup ,事情似乎可以正常工作,但相信我,事实并非如此。 There are 4 cookies you usually get with SAML.您通常会通过 SAML 获得 4 个 cookie。 They are MSIS Auth cookies.它们是MSIS Auth cookie。 There are web application sessions cookies too.也有 Web 应用程序会话 cookie。 Use the right URL to clean up things properly.使用正确的 URL 正确清理内容。

In the SAML protocol there is a concept of a SAML logout request and a SAML logout response.在 SAML 协议中,有 SAML 注销请求和 SAML 注销响应的概念。 This website has examples.这个网站有例子。 https://www.samltool.com/generic_slo_req.php https://www.samltool.com/generic_slo_req.php

You should be able to see this with a SAML tracer.您应该能够使用 SAML 跟踪器看到这一点。 There are a couple gotchas with SAML logout. SAML 注销有几个问题。 The name id you ask to logout has to be the exact same you used to login.您要求注销的名称 ID 必须与您用于登录的名称完全相同。

SAML logouts have to be signed 100% with a X.509 (SSL) Secure Socket Layer cryptography certificate to prevent spoofing. SAML 注销必须使用 X.509 (SSL) 安全套接字层加密证书进行 100% 签名以防止欺骗。 Good luck.祝你好运。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM