在.Net核心Web Api中使用Azure B2C处理密码重置
我正在构建一个允许用户登录或注册Azure B2C的web API。我正在使用“注册”或“登录”策略,这会给我一个“忘记密码”链接。单击此链接会给我一个被拒绝的访问,错误描述为AADB2C90118 如何在web API中处理此错误 注意:我正在使用a作为登录/注册表单。请查看 请注意,这主要表明当发生此错误时,应用程序需要执行重定向。不确定您希望API扮演什么角色 具体查找您提到的错误代码AADB2C90118: Conroller处理重置的操作: 下面是一些代码:在.Net核心Web Api中使用Azure B2C处理密码重置,.net,azure,authentication,.net-core,asp.net-core-webapi,.net,Azure,Authentication,.net Core,Asp.net Core Webapi,我正在构建一个允许用户登录或注册Azure B2C的web API。我正在使用“注册”或“登录”策略,这会给我一个“忘记密码”链接。单击此链接会给我一个被拒绝的访问,错误描述为AADB2C90118 如何在web API中处理此错误 注意:我正在使用a作为登录/注册表单。请查看 请注意,这主要表明当发生此错误时,应用程序需要执行重定向。不确定您希望API扮演什么角色 具体查找您提到的错误代码AADB2C90118: Conroller处理重置的操作: 下面是一些代码: options =
options = new OpenIdConnectAuthenticationOptions
{
Notifications = new OpenIdConnectAuthenticationNotifications()
{
AuthenticationFailed = context =>
{
context.HandleResponse();
if (context.ProtocolMessage.Error == "access_denied" && context.ProtocolMessage.ErrorDescription.StartsWith("AADB2C90118"))
{
context.Response.Redirect("/Account/ResetPassword");
}
及
您是否定义并配置了密码重置策略?执行此操作时,请确保在重置策略中启用了您正在使用的身份提供程序。是的,我已经定义并配置了密码重置策略,并且启用了重置策略。不确定使用OpenId将如何与我设置API的方式配合使用。我正在使用Jwt承载中间件来处理令牌验证,但样本似乎没有使用它。基本上,我如何处理这个示例中的错误代码和重定向?请尝试在startup.cs中调试AuthenticationFailed,或者查看JwtOptions的其他事件。但是您可能需要更改应用程序本身来处理错误,我假设您不仅仅有一个api和登录屏幕?
var openIdConnectAuthenticationOptions = new OpenIdConnectOptions
{
[...]
Events = new OpenIdConnectEvents
{
OnRemoteFailure = context =>
{
[...]
// Handle the error that is raised when a user has requested to recover a password.
if (!string.IsNullOrEmpty(context.Failure.Message) &&
context.Failure.Message.Contains("access_denied") &&
context.Failure.Message.Contains("AADB2C90118"))
{
context.Response.Redirect($"/Account/RecoverPassword?ReturnUrl={context.HttpContext.Items["redirect_uri"]}");
context.HandleResponse();
}