1

大家好,

我有一个托管在 Azure 中的网站。它使用 Blazor 作为前端在 .net core 3.1 上运行。我正在使用 OAuth 2.0 和 OpenID Connect 与 Microsoft Identity Client 4.14 对站点的用户进行身份验证。我还使用需要同意的委托权限对 Azure 进行 API 调用。

我想实现站点安全并仍然允许用户使用他们的 OAuth 凭据。

  1. 我希望用户不必专门为此站点创建凭据。
  2. 我想利用 Microsoft Identity Platform 权限、同意等。
  3. 我想设置一个空闲超时。

这是我无法弄清楚如何实现的部分。

  1. 当用户在站点上并且闲置了特定时间段(我将使用 15 分钟作为示例)时,我希望页面锁定,因此用户必须重新输入凭据。
  2. 如果用户关闭浏览器并再次尝试访问该站点,我希望他再次接受凭据挑战。我意识到这也意味着对该站点的初始访问也需要输入凭据。
4

2 回答 2

0

我发布这个答案,看看是否有更好的答案。我唯一不喜欢此解决方案的是,用户在超时后会出现提示“您要注销哪个帐户”。

所以这就是我所做的。我在 Startup.cs 类中配置了 OpenID 连接。如果我将“prompt=login”添加到 Startup.cs 类>ConfigurServices>OpenIDConnecOptions,(见下图),它将强制用户在执行注销链接后输入他们的凭据。这是一个否定“单点登录”的选项

工作原理 - 当您以编程方式执行注销 URL (siteUrl + "AzureAD/Account/SignOut") 时,它将带您进入提示“您要注销哪个帐户”的页面。即使用户没有注销帐户,他们也会从您的应用程序中注销,并且需要重新输入凭据。这是我似乎可以通知身份服务器我们需要重新验证此用户的唯一方法。

我认为重要的是要注意,一旦您对 startup.cs 进行了此代码更改,您必须注销一次才能在其他浏览器和选项卡中查看更改的所有效果。我猜身份服务器将此信息存储为参数(提示=登录)。猜测!

我使用 JavaScript 创建空闲超时并自动创建注销链接的单击事件。我从这个视频中得到了空闲超时的 JavaScript 想法。“https://youtu.be/cOV0uV_E6bU”。效果很好。

Startup.cs 类

于 2020-09-02T00:24:32.203 回答
0

如果您使用标准 OIDC 流,则在身份验证后,用户登录超时体验是在 Web 应用程序(依赖方)和浏览器之间,并且使用标准 Web 会话运行。您可以根据 15 分钟的不活动或浏览器关闭简单地使用户超时,您应该能够实现您想要的行为。

于 2020-08-05T21:27:01.750 回答