在 .Net Core Web 中使用 Azure B2C 处理密码重置 Api
Handle password reset with Azure B2C in .Net Core Web Api
我正在构建一个允许用户登录或注册 Azure B2C 的网站 API。我正在使用 注册或登录政策 ,这给了我 "Forgot your password?" link。单击此 link 会给我一个 access_denied,错误描述为 AADB2C90118.
如何在我的网站中处理此错误 API?
注意:我在 sign-in/sign-up 表格中使用 customized authentication UI。
注意,这主要说明你的应用在出现这个错误的时候需要做重定向。不确定您希望 API 扮演什么角色。
具体查找你提到的错误代码AADB2C90118:
https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/search?utf8=%E2%9C%93&q=AADB2C90118&type=
处理重置的控制器操作:
从那里获取的一些代码:
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");
}
和
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();
}
我正在构建一个允许用户登录或注册 Azure B2C 的网站 API。我正在使用 注册或登录政策 ,这给了我 "Forgot your password?" link。单击此 link 会给我一个 access_denied,错误描述为 AADB2C90118.
如何在我的网站中处理此错误 API?
注意:我在 sign-in/sign-up 表格中使用 customized authentication UI。
注意,这主要说明你的应用在出现这个错误的时候需要做重定向。不确定您希望 API 扮演什么角色。
具体查找你提到的错误代码AADB2C90118: https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/search?utf8=%E2%9C%93&q=AADB2C90118&type=
处理重置的控制器操作:
从那里获取的一些代码:
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");
}
和
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();
}