如何在不访问 MVC 应用程序中的安全页面的情况下触发 IdentityServer4 的登录?

How to trigger login for IdentityServer4 without accessing secure page in the MVC app?

在文档中 http://docs.identityserver.io/en/release/quickstarts/3_interactive_login.html

它说“通过导航到受保护的控制器操作来触发身份验证握手”。这将通过简单地使用 [Authorize] 访问您的 MVC 站点中的任何操作来实现。登录后,这将重定向到他们试图访问的页面,而不是他们上次访问的页面(这是好的,预期的行为)。

太棒了。但是这个场景呢?

  1. 用户在网站的某个匿名部分。
  2. 用户从菜单
  3. 中单击 "Sign in"
  4. 用户在身份服务器上登录
  5. 用户被重定向回他们上次访问的匿名(不安全)页面(可能是其中之一)但如果她决定稍后点击,现在已登录[授权] 页面。

我们如何在不点击 MVC 中的安全页面的情况下启动 oidc 登录?

这只是标准 ASP.NET 核心身份验证 - 调用

HttpContext.ChallengeAsync("name_of_oidc_scheme");

您还想传入一个 AuthenticationProperties 对象,您可以在其中设置 URL 您希望在身份验证后结束的位置。