.Net Core ChallengeRequest 没有重定向到指定的 RedirectUri

.Net Core ChallengeRequest not redirecting to the specified RedirectUri

我有一个 Rest API,其任务是向 Azure AD 验证用户身份。它使用 ChallengeRequest 登录,如下所示:

return Challenge(new AuthenticationProperties
            {  
                RedirectUri = "http://google.com"  
            }, OpenIdConnectDefaults.AuthenticationScheme);  

这里有 2 个术语要描述:

我期望的是请求将在根据 OpenIdConnect 方案进行身份验证后重定向到 RedirectUri。目的是重定向到查询字符串中指定的自定义 URL。但是,它会重定向到 CallbackPath


更新:

在我下面的回答中调整 Azure AD 设置后,该方案在 Edge 和 Firefox 浏览器中按预期工作。

但是这个问题仍然存在于 Google Chrome 浏览器上。

如何获得重定向到 RedirectUri 的请求?

您设置的重定向 url(在 AuthenticationProperties 中)是为了控制哪个 page/action 应该重定向 after 身份验证。

在身份验证过程中,整个过程由 OpenID Connect 中间件控制,用户在 Azure 的登录页面验证凭据后,Azure Ad 会将用户重定向回应用程序的重定向 url,这是在 OIDC 的配置中设置的,所以您可以获得授权代码(如果使用代码流)并完成身份验证过程。 身份验证后,用户将被重定向到重定向 url(google.com 作为您的代码)。

因此,如果您想在身份验证期间更改回调 url,您应该修改 OIDC 的 CallbackPath 配置。

原来需要在 Azure AD 应用程序上配置 3 个设置:

  • 访问令牌的隐式授予
  • ID 令牌的隐式授予
  • "allowPublicClient": 真

Chrome 问题的答案已在此处调查: https://github.com/dotnet/aspnetcore/issues/20347

Chrome 已开始要求使用 HTTPS 的 cookie,例如使用 SameSite=None

的 .AspNetCore.Correlation.OpenIdConnect