在.Net Core Web Api中使用Azure B2C处理密码重置

时间:2018-02-20 19:45:48

标签: .net azure authentication .net-core asp.net-core-webapi

我正在构建一个允许用户登录或注册Azure B2C的Web API。我正在使用注册或登录政策,这会给我一个“忘记密码?”链接。点击此链接会给我一个 access_denied ,错误描述为 AADB2C90118

如何在我的网络API中处理此错误?

注意:我使用customized authentication UI作为登录/注册表单。

1 个答案:

答案 0 :(得分:1)

查看wingtips sample

请注意,这主要表明您的应用程序需要在发生此错误时进行重定向。不确定您希望API发挥什么样的作用。

具体查找您提到的错误代码AADB2C90118: https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/search?utf8=%E2%9C%93&q=AADB2C90118&type=

处理重置的控制器操作:

https://github.com/Azure-Samples/active-directory-b2c-advanced-policies/blob/master/wingtipgamesb2c/src/WingTipIdentityWebApplication/Api/Controllers/AccountController.cs#L252

从那里取得一些代码:

        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();
                    }

{{1}}