Проблема с Azure B2 C Сброс пароля потока пользователя - PullRequest
1 голос
/ 17 февраля 2020

Недавно я разработал веб-приложение ASP. net MVC, которое использует Azure B2 C для аутентификации пользователей.

Меня попросили включить поток сброса пароля пользователя, чтобы пользователи могли выполнить сброс через самообслуживание.

Я создал поток пользователей на портале (используя правильный провайдер идентификации и установил Сброс пароля с помощью адреса электронной почты) и добавил код из примера Microsoft здесь однако каждый раз, когда я нажимаю кнопку сброса пароля , он просто перенаправляет меня обратно на экран входа в систему и никогда не достигает страницы сброса пароля.

Когда я нажимаю ссылку забытого пароля, вызывается метод, приведенный ниже, он корректно проходит по коду, но затем загружает имя входа стр.

Сброс пароля

public void ResetPassword(string redirectUrl)
    {
        // Let the middleware know you are trying to use the reset password policy (see OnRedirectToIdentityProvider in Startup.Auth.cs)
        HttpContext.GetOwinContext().Set("Policy", Startup.PasswordResetPolicyId);

        // Set the page to redirect to after changing passwords
        var authenticationProperties = new AuthenticationProperties { RedirectUri = "/" };
        HttpContext.GetOwinContext().Authentication.Challenge(authenticationProperties);

        return;
    } 

Идентификатор политики правильный как в azure, так и в коде, когда я выполняю шаг, а все значения корректно вытягиваются (см. ниже):

Строка идентификатора политики (как использовано выше)

public static string PasswordResetPolicyId = ConfigurationManager.AppSettings["ida:ResetPasswordPolicyId"];

В Web.config, где определена политика

<add key="ida:ResetPasswordPolicyId" value="B2C_1_UserApp_ResetPassword" />

Я предоставил все примеры кода, которые я добавил для работы функции сброса, остальная часть кода включена в пример Microsoft Web App.

Кто-нибудь еще испытывал нечто подобное? Как я уже говорил ранее, когда вы нажимаете на ссылку забытого пароля, она делает то же, что и должна, и переходит к правильному контроллеру / методу, но затем возвращается к экрану входа.

1 Ответ

1 голос
/ 17 февраля 2020

Просматривая мой код, я обнаружил, что в ConfigureAuth отсутствует строка

app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(PasswordResetPolicyId)); 

. После добавления это решило проблему.

public void ConfigureAuth(IAppBuilder app)
        {
            app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {

                CookieManager = new SystemWebCookieManager()

            });
            app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(SignInPolicyId));
            /////////////////
            app.UseOpenIdConnectAuthentication(CreateOptionsFromPolicy(PasswordResetPolicyId));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...