Oauth 2.0 对于使用OAuth 2.0在网页上处于空闲状态并需要重新输入凭据的用户,如何使其超时?

Oauth 2.0 对于使用OAuth 2.0在网页上处于空闲状态并需要重新输入凭据的用户,如何使其超时?,oauth-2.0,settimeout,idle-timer,microsoft-identity-platform,Oauth 2.0,Settimeout,Idle Timer,Microsoft Identity Platform,大家好 我有一个网站托管在Azure中。它在.NETCore3.1上运行,使用Blazor作为前端。我正在使用OAuth 2.0和OpenID连接Microsoft Identity Client 4.14来验证站点的用户身份。我还对Azure进行API调用,在Azure中我使用需要同意的委托权限 我希望实现站点安全,并且仍然允许用户使用其OAuth凭据。 我希望用户不必专门为此站点创建凭据 我想利用Microsoft Identity Platform的权限、同意等 我想设置一个空闲超时 这是

大家好

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

我希望实现站点安全,并且仍然允许用户使用其OAuth凭据。

  • 我希望用户不必专门为此站点创建凭据
  • 我想利用Microsoft Identity Platform的权限、同意等
  • 我想设置一个空闲超时
  • 这是我不知道如何实现的部分

  • 当用户在站点上并且在特定时间段内处于空闲状态(我将使用15分钟作为示例)时,我希望页面锁定,以便用户必须重新输入凭据
  • 如果用户关闭浏览器并再次尝试访问该站点,我希望他再次被询问凭据。我意识到这也意味着对该站点的初始访问也需要输入凭据

  • 如果您使用的是标准OIDC流,则在身份验证之后,用户登录超时体验介于web应用程序(依赖方)和浏览器之间,并且使用标准web会话运行。您只需根据15分钟的不活动或浏览器关闭来暂停用户,就可以实现您想要的行为。

    如果您使用的是标准的OIDC流,经过身份验证后,用户登录超时体验介于web应用程序(依赖方)和浏览器之间,并且正在使用标准的web会话运行。您只需根据15分钟的不活动或浏览器关闭来暂停用户,您就可以实现所需的行为。

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

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

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

    我认为重要的是要注意,一旦您将此代码更改为startup.cs,您必须注销一次才能在其他浏览器和选项卡中看到更改的所有效果。我猜identity server将此信息存储为一个参数(prompt=login)。猜猜看

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


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

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

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

    我认为重要的是要注意,一旦您将此代码更改为startup.cs,您必须注销一次才能在其他浏览器和选项卡中看到更改的所有效果。我猜identity server将此信息存储为一个参数(prompt=login)。猜猜看

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


    Sahil,感谢您的回复,但您似乎重复了我的问题作为声明。我仍然不知道,一旦我确定用户空闲时间过长,我需要做什么来强制用户输入凭据(至少是密码)。对于OAuth,我不能让他退出。我可以将用户重定向到另一个页面,但只需打开相关站点的URL即可登录,而无需询问fro凭据。请具体说明我能做什么。我可以强制用户输入其OAuth密码以进入此站点而不是自动登录吗。否则超时没有任何作用。t一旦网站使会话无效,用户在该时间点是匿名的。然后,您的网站应将用户重定向到身份验证提供商。如果身份验证提供程序没有执行SSO或KMSI,则用户将被迫重新身份验证。这应该可以有效地实现您所期望的。Sahil,我正在努力理解整个过程的底层代码,所以请原谅这个基本的任务