问题标签 [single-logout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
59 浏览

c# - c#MVC OpenID注销所有Web应用程序不起作用

注意我没有使用 .Net Core。我有一个 ASP.Net MVC 应用程序,它使用 Azure AD 或 ADFS 保护,具体取决于客户。它有几个用于管理或生成文档的其他独立 MVC 应用程序,以及用于管理管理设置的旧版 ASP.Net 应用程序。使用基于声明的 OpenID 连接的单点登录运行良好。但是,如果我退出主应用程序,如果它们在其他选项卡中打开,我仍然可以刷新或使用其他应用程序。我还可以打开其他选项卡并直接进入这些应用程序而不会受到挑战。

当主应用程序按下其注销按钮时,代码会尝试调用其他应用程序的注销 url。第一个 MVC 应用程序 (App_A) 执行:

这执行得很好,但是当下一个 Asp.NET 应用程序 (App_B) 尝试执行相同操作时,它会出现 CORS 错误并且调用不成功。我无法再进入 App_A 但 App_B 仍然可以访问。如果我删除 App_A 的 Signout() 调用,则 App_B 的注销运行正常,但我仍然可以在注销后进入两个应用程序,但不能进入主应用程序。我已经尝试过

  • Session.Abandon(),
  • 清除所有 cookie 或将其设置为过期,
  • SessionAuthenticationModule.DeleteSessionCookie(),
  • 使用所有可用的 DefaultAuthenticationTypes 调用 SignOut(),
  • 尝试删除那些允许我这样做的声明。

我唯一一次成功是我让它闲置了一段时间,突然所有的应用程序都要求我进行身份验证。我知道这与会话无关,因为我无法使用 iisreset 复制它,所以它必须是 cookie 过期,但我无法确定。当我注销时,cookie 会消失,但一旦我尝试访问其中一个非主要应用程序,它们就会立即弹出。此外,如果我没有首先访问其中一个应用程序并将其称为注销 url,我会收到 CORS 错误,由于某种原因阻止了请求。

我正在寻找有关如何使用 OpenID Connect(不是 SAML)退出多个站点(Asp.NET 和 Asp.NET MVC,而不是 Core )的任何指南或指导。

0 投票
1 回答
220 浏览

java - 从 aws cognito java 上的一个会话注销

与使用从所有活动会话中注销的 globalSignout 相比,我如何使用 aws sdk 仅从一个会话中注销用户?

我环顾了其他几个问题。其中之一提到使用 AdminForgetDevice 方法,该方法将强制用户注销。但我不知道 DeviceKey 是什么,我从哪里得到它?

管理员忘记设备:https ://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminForgetDevice.html

0 投票
0 回答
25 浏览

java - What should be the redirect URL after performing SLO using jersey

I am using the Jersey rest project(Java) and which will act as a backend. Jersey will redirect to ADFS for SSO & SLO process. I am able to login into the application using the SSO process during my logout process(SLO), I am able to hit my jersey endpoint and able to do some actions. After completion of my process, I need to redirect to the ADFS server which will send other SP's to perform that application-specific logout functionality. During this redirection, I need to generate saml2p:LogoutResponse so that IDP(ADFS) can recognize the request to process further.

I am using Idp initiated flow.

0 投票
0 回答
75 浏览

c# - 使用 AspNetSaml 包进行单次注销

我使用 AspNetSaml 包在我的 dotNet Web 应用程序中实现 SSO(使用 okta 作为 IdP)。我现在想添加 SLO(Single LogOut),请问如何实现我的目标(是否有使用 AspNetSaml 实现 slo 的代码示例)

0 投票
0 回答
79 浏览

asp.net-mvc - asp.net MVC 中的 OIDC 会话管理(checksession)是否可行?

我在 MVC 网站和 SPA 网站上使用身份提供程序。我需要实现 SSO 功能,这意味着当 SPA 网站登录或退出时,MVC 网站应该是相同的。SPA 网站 SSO 功能通过使用 prompt=none 来检查用户是否首先登录到 Idp 并使用 OIDC 会话管理 (checksession) 来检查用户注销事件,效果非常好。

我的问题是,在MVC网站中,我使用的是MVC中的前通道注销机制,但是当Idp cookie本身过期时它不起作用(前通道注销仅在IDP cookie存在时才有效,因此当结束会话时端点被调用,服务器可以从cookie中检索有关用户需要注销哪些网站的信息)。

因此,由于 Idp cookie 不存在但 MVC 网站的用户仍处于登录状态(访问令牌尚未过期),我认为有两种方法可以解决此问题:

  1. 每次用户导航到我的应用程序中的不同页面时,重定向到 Idp 以检查用户登录状态(提示=无流)
    我认为这会通过不断重定向到 Idp 来导致网络流量。但是如果第二种方式(OIDC 会话管理)是不可能的,我猜这是最能接受的方式吗?

  2. 在 MVC 网站上使用 Oidc 会话管理,就像 SPA 网站一样。
    问题:我在网上找到的每个文档都表明会话管理适用于 SPA 或基于 javascript 的应用程序,而对于像 MVC 这样的服务器端 Web 应用程序,他们都建议使用前通道或后通道注销。但我真的不知道为什么。是否有任何理由不建议服务器端客户端进行会话管理?

注意:我也尝试使用反向通道注销,但由于可伸缩性问题,这是不可能的(无法找到用户在多个服务器中的位置)。

请帮助我解决这个问题,或者如果我误解了任何内容,请告诉我。谢谢!

0 投票
0 回答
289 浏览

azure-active-directory - 在隐身窗口中到处注销时,不调用前通道注销 URL

我在 Azure 门户中创建了一个多租户应用程序。我已经设置了它的重定向 URI 和前通道注销 URL。 在此处输入图像描述

我打开了一个普通(非隐身)Chrome 窗口,并同意我使用 Microsoft 帐户的应用程序。然后我打开了另一个隐身 Chrome 窗口并转到 https://myaccount.microsoft.com/(它首先将我重定向到登录页面),然后单击“到处注销”按钮。但是,任何请求都到达 API 以侦听前通道注销 URL 的 GET 请求,因此我无法从数据库中清除任何数据。

但是,如果我在没有隐身模式的情况下打开另一个 Chrome 窗口,则始终会向 API 发送一个请求,如果单击“到处注销”按钮,该请求将侦听前通道注销 URL 的 GET 请求。

那么,为什么当我使用隐身窗口时没有发送请求?我希望 Microsoft 应该知道登录的会话并发送请求,即使在另一个隐身会话中完成了“到处注销”操作。

我为此遵循的一般指南是:https ://docs.microsoft.com/en-us/azure/active-directory/develop/

具体指南是这样的:https ://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-sign-user-sign-in?tabs=java#sign-out

我用来练习的示例项目:https ://github.com/Azure-Samples/ms-identity-java-webapi/tree/master/msal-web-sample

当我尝试在不同的隐身窗口或不同的浏览器窗口中单击该按钮时,我单击的按钮无法获得对我在 Azure 门户上的应用程序页面中设置的前通道注销 url 的 GET 请求,如下所示: 在此处输入图像描述

0 投票
0 回答
28 浏览

ruby-on-rails - 在 IdP 发起的注销期间未加载 Rails 会话 - Omniauth-saml 和设计

我正在使用设计和omniauth-saml,使用Microsoft Azure 帐户进行单点登录和单点注销,单点登录和SP 发起的注销工作正常。

我在devise.rb文件中使用以下配置

在此处输入图像描述

我已经给出了以下配置Microsoft Azure AD

在此处输入图像描述

对于 IdP 发起的注销,在从 Azure 帐户注销时,用户不会从服务提供商(Rails)中的会话中注销。session["saml_uid"] 在 handle_logout_request 方法中返回 nil 并且 validate_signature 返回 false。

在访问 LogoutRequest 时,会话没有正确返回,因此它没有从 Rails 中注销。

在 Azure 中注销时,您能否帮助注销 Rails 会话?

0 投票
1 回答
35 浏览

azure-active-directory - 如何在 Azure AD 应用程序代理中实现注销

我已将基于标头的应用程序与 Azure AD 应用程序代理集成。哪个使用 Azure AD 凭据对用户进行预身份验证并创建了基于 cookie 的会话。如何实现注销,以便在单击应用程序上的注销链接时完全清除会话。

0 投票
2 回答
32 浏览

single-sign-on - SAML ForceAuthn 参数的正确解释

SAML 标准定义的ForceAuthn属性<AuthnRequest>如下:

一个布尔值。如果为“真”,身份提供者必​​须直接对演示者进行身份验证,而不是依赖于先前的安全上下文。如果未提供值,则默认值为“false”。但是,如果 ForceAuthn 和 IsPassive 都为“真”,则身份提供者不得重新验证演示者,除非可以满足 IsPassive 的约束。

我不明白是否ForceAuthn应该只影响发出请求的服务提供商,或者它是否应该像单次注销一样需要全局重新身份验证。ForceAuthnSSO的正确解释方法是什么?

0 投票
1 回答
9 浏览

web-config - 在 web.config 中为 Sustainsys.Saml2 设置 AcceptUnsignedLogoutResponses

我正在尝试启用此处添加的AcceptUnsignedLogoutResponses 设置https://github.com/Sustainsys/Saml2/commit/22f1605eba659641a5a46edb20458b1b050c93af以处理不签署注销消息的身份提供者。
我尝试在 web.config<compatibility AcceptUnsignedLogoutResponses="true"></compatibility><sustainsys.saml2>元素中添加一个新元素,但随后出现“System.Configuration.ConfigurationErrorsException”错误,指出该属性无法识别。

我可以尝试通过代码分配它,因为它是这样识别的

但我不知道如何更改当前配置以仅设置此设置。

有谁知道如何在 web.config 中设置它或在代码(WebForms)中进行设置?