ADFS 2.0 Web 应用注销
Posted
技术标签:
【中文标题】ADFS 2.0 Web 应用注销【英文标题】:ADFS 2.0 Web app signout 【发布时间】:2011-10-01 04:13:01 【问题描述】:我们正在使用客户 ASP.NET 按钮来注销我们使用 ADFS 进行身份验证的 Web 应用程序。我们尝试了几种方法来尝试让应用正确退出,但似乎没有任何效果。
它通常会将您带到联合服务器上的注销页面,该页面显示您已正确注销,但如果您回击,您仍然可以访问网络应用程序。
试过了: https://DNS_name_of_RP_STS/adfs/ls/?wa=wsignout1.0
https://DNS_name_of_RP_STS/adfs/ls/?wa=wsignout1.0&wreply=post-sign-out_landing_URL 等等
有人让它正常工作吗?
感谢您的宝贵时间
【问题讨论】:
【参考方案1】:我们也有类似的问题。对我们有用的解决方案建议在 ADFS 2.0 管理控制台的信赖方信任中添加一个端点。 请按照以下步骤操作:
在 google 配置(高级)中添加退出 URL -> SSO -
注销 URL = https://DNS_name_of_RP_STS/adfs/ls/?wa=wsignout1.0
转到 ADFS 2.0 管理控制台。在端点选项卡下,单击添加
端点类型 = SAML 注销,绑定 = POST,URL = https://myadfsserver.domain.net/adfs/ls/?wa=wsignout1.0 如果您希望它重定向到另一个页面,您可以设置响应 URL,但我们喜欢 ADFS 站点,因为它会警告您已注销但您仍应关闭浏览器。
【讨论】:
【参考方案2】:对于我的应用,使用“?wa=wsignout1.0”URL 会清除应用程序 FedAuth cookie 和 ADFS MSISAuth cookie。
您最终会进入“您已退出”页面。
从那里,后退按钮将您带回应用程序,但如果您尝试执行任何操作,您将被重定向到 ADFS 以再次登录。
【讨论】:
【参考方案3】:据我了解,您只需使用适当的 wssignout 操作将用户重定向到 ADFS。这不会删除为您的应用程序创建的身份验证 cookie,因此用户保持登录状态。
我使用 WSFederationAuthenticationModule 来触发联合注销:
string absoluteUrl = HttpContext.Request.Url.AbsoluteUri;
string replyUrl = absoluteUrl.Substring(0, absoluteUrl.LastIndexOf("/") + 1);
WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
我正在回复应用程序,因为我想确保用户已退出。
希望这会有所帮助。
【讨论】:
非常感谢。我在链接按钮的 onclick 事件中添加了用于注销的代码,它对我有用 如何在web.config中添加WSFederationAuthenticationModule? 您需要将其添加到模块集合中的<system.web><httpModules>
或<system.webServer><modules>
。如果您不确定在这两个地方添加它。这是一个例子<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
你可以找到更多信息:goo.gl/iY8Dgv
@shizik 我在httpModules
和modules
中添加了它,我还在configSections
中添加了section
以消除一些阻止我登录的错误(Source)。然后我在Signout.aspx.cs Page_Load Event
中添加了您答案的 3 行。然后我测试了我的应用程序,但现在我在注销后得到了空白页面,那里没有错误或警告消息。现在,我该怎么办。
您的 Signout.aspx 页面是否受到保护,即它不允许匿名请求。因为如果我没记错的话,这个想法是当您被重定向回注销时,系统应该自动将您重定向到登录页面。以上是关于ADFS 2.0 Web 应用注销的主要内容,如果未能解决你的问题,请参考以下文章
SAML 注销时的 ADFS NullReference 异常(事件 303)
如何用passport-saml修复SLO,它在第一次注销时有效,但在以后的注销中不起作用
MVC 5、WIF (System.IdentityModel) 和 ADFS 未实际进行身份验证,联合注销时出错
SAML 2.0 单次注销问题 - IdP 应如何终止在不同用户代理中运行的 SP 会话?