Сброс пароля Azure AD B2C - PullRequest
       27

Сброс пароля Azure AD B2C

0 голосов
/ 20 февраля 2019

Я пытаюсь понять, как используется сброс пароля Azure AD B2C.

Похоже, что сброс пароля можно выполнить несколькими способами.В чем разница между ними?Есть ли разница в цене между ними?Являются ли некоторые из этих функций Azure AD, в то время как некоторые являются функциями Azure AD B2C?Почему описанный ниже метод 3 не работает?

  1. Через пользовательские потоки Azure B2C (политики).

    • Политика входа в v1 относится к сбросу пароля AD ниже.
    • В то время как все остальные политики переходят к сбросу пароля B2C, что позволяет пользователям сбрасывать свой пароль с помощью основной адрес электронной почты , сохраненный в их профиле пользователя.
  2. С помощью сброса пароля службы самообслуживания Azure Active Directory.Который доступен через https://passwordreset.microsoftonline.com. Это позволяет пользователю сбросить свой пароль через любой адрес электронной почты , сохраненный в его профиле.

  3. Кнопка сброса пароля у пользователяпрофиль.Это обеспечивает временный пароль, однако временный пароль не работает.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

AAD B2C ≠ AAD ===> Пользователи AAD B2C users Пользователи AAD

В настоящее время мы поддерживаем только два способа сброса пароля пользователей Azure AD B2C в общем сценарии:

  1. Пароль сброса самообслуживания (SSPR) с Azure AD B2C Политика сброса пароля / поток пользователя.

  2. Администраторы помогают пользователям сбросить пароль с помощью Azure AD Graph API : https://docs.microsoft.com/en-us/previous-versions/azure/ad/graph/api/users-operations#reset-a-users-password--

Ответы на ваши вопросы:

В чем разница между ними?Есть ли разница в цене между ними?Являются ли некоторые из этих функций Azure AD, в то время как некоторые являются функциями Azure AD B2C?

  • Политика сброса пароля / поток пользователей предназначена для пользователей AAD B2C,Вы можете использовать его напрямую.Пользователи AAD B2C могут использовать это для самостоятельного сброса пароля.Это также разновидность SSPR.

  • Сброс пароля самообслуживания Azure Active Directory .Как правило, это для корпоративных пользователей.Так как эта функция предназначена только для V1 Вход в пользовательский поток только , я не рекомендую использовать этот способ.

  • Кнопка сброса пароля в профиле пользователя. Это только для пользователей AAD (организации / предприятия).Не используйте эту кнопку для пользователей AAD B2C.

Почему описанный ниже способ 3 не работает?

Как я уже упоминал ввыше, эта функция только для пользователей Azure AD.НЕ AAD B2C пользователи.Поэтому вы не можете сбросить пароль пользователя B2C здесь.

Как сказал Алекс, пользователь AAD B2C не является пользователем Azure AD.Пользователи B2C для 2c senario.Обычный пользователь Azure AD предназначен для сценария организации / предприятия.

Вы также можете обратиться к моим ответам для В чем разница между клиентом Azure AD B2C и обычным клиентом Azure AD?


Подробнее о том, как работает политика сброса пароля B2C:

  • После нажатия «забыть пароль» Кнопка «Регистрация» / «Политика», AAD B2C отправит сообщение с «AADB2C90118» обратно в приложение.

  • Например, в веб-приложении ASP.NET MVC оно должно вызвать

private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
            {
            notification.HandleResponse();
            // Handle the error code that Azure AD B2C throws when trying to reset a password from the login page 
            // because password reset is not supported by a "sign-up or sign-in policy"
            if (notification.ProtocolMessage.ErrorDescription != null && notification.ProtocolMessage.ErrorDescription.Contains("AADB2C90118"))
            {
                // If the user clicked the reset password link, redirect to the reset password route
                notification.Response.Redirect("/Account/ResetPassword");
            }
  • Itозначает, что приложение будет перенаправлять его /Account/ResetPassword на полученное после этого сообщения.

  • /Account/ResetPassword определяется здесь из Account Controller.Оно должно определяться именем политики сброса пароля, которое вы определили.

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

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

                return;
            }
  • Затем пользователь будет перенаправлен в политику сброса пароля B2C для изменения своего пароля.
0 голосов
/ 20 февраля 2019

Мой опыт, примеры, предполагающие, что ваш B2C-арендатор называется contoso.onmicrosoft.com или просто contoso.com:

  • Если вы зарегистрируетесь через fooaccount@gmail.com или baraccount@otherAAD.com черезполитика входа, вы можете изменить свой пароль только через политику сброса пароля.У вас есть пароль только для этого арендатора, даже если ваша учетная запись принадлежит другому AAD.
  • Если вы вручную создаете учетную запись в клиенте B2C, например, myawesomeaccount@contoso.com, вы можете сбросить пароль только через классическийAAD методы.Это будет 2) и, возможно, 3) в вашем случае.Вы входите в приложения B2C с тем же паролем.

Единственный реальный способ в моем опыте - это использование пользовательских потоков (политик).Два других работают только для учетных записей, относящихся к рассматриваемому каталогу B2C.

Следует учитывать, что в сценарии B2C адрес электронной почты пользователя также может принадлежать «обычному» пользователю AAD всовершенно другой каталог (классический B2B).Два арендатора / каталоги действительно не знают друг о друге.Даже если это не учетная запись AAD, она может принадлежать пользователям в нескольких разных клиентах B2C.У каждого есть отдельный пароль.

...