.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 个术语要描述:
- CallbackPath:OpenIdConnect 配置的一个参数。此 URL 必须在身份提供者的 'Reply Urls' 列表中进行身份验证。
- RedirectUri: 属性 传递到质询请求中。
我期望的是请求将在根据 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
我有一个 Rest API,其任务是向 Azure AD 验证用户身份。它使用 ChallengeRequest 登录,如下所示:
return Challenge(new AuthenticationProperties
{
RedirectUri = "http://google.com"
}, OpenIdConnectDefaults.AuthenticationScheme);
这里有 2 个术语要描述:
- CallbackPath:OpenIdConnect 配置的一个参数。此 URL 必须在身份提供者的 'Reply Urls' 列表中进行身份验证。
- RedirectUri: 属性 传递到质询请求中。
我期望的是请求将在根据 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