Рабочий процесс настройки забытого пароля в Azure B2C без перенаправления?

Фон

Per сайт документации, ожидаемый шаг для рабочего процесса забытого пароля в Azure B2C:

  • Просмотреть страницу входа
  • Щелкните ссылку забытого пароля
  • B2C отправляет в приложение ошибку AADB2C90118, пользователь забыл свой пароль.
  • Затем ожидается, что приложение перенаправит обратно в соответствующий рабочий процесс сброса пароля.

Вызов

Однако в моем случае я интегрирую Azure AD B2C с CMS, которая не обладает гибкостью настраиваемого приложения. Рабочий процесс идентификации в этом продукте, который у меня нет доступа для настройки, не понимает, как обрабатывать такую ​​ошибку от поставщика Azure AD B2C.

Это означает, что в настоящее время любой пользователь, который нажимает ссылку на забытый пароль на странице входа, вместо этого получает ошибку 500 в CMS.

Вопрос

  • Есть ли способ изменить этот рабочий процесс таким образом, чтобы он перенаправлял на указанное путешествие пользователя / рабочий процесс, а не возвращал ошибку? В этом случае ничего страшного, если этот рабочий процесс жестко запрограммирован.
  • Если исключить это, можно ли указать Azure B2C не отображать ссылку «Забыли пароль»? Или мне нужно будет удалить это с помощью пользовательского CSS / JS? (хорошо, если это необходимо, но в надежде избежать этого.)

person SeanKilleen    schedule 22.02.2021    source источник


Ответы (2)


Есть несколько способов решить эту проблему, но я бы порекомендовал начать с рассмотрения этого примера для внедрения процесса сброса пароля.

https://github.com/azure-ad-b2c/samples/tree/master/policies/embedded-password-reset

Вы также можете изменить setting.forgotPasswordLinkLocation метаданные для своего самоутвержденного профиля, чтобы они скрывались, как указано в вашем вопросе.

https://docs.microsoft.com/en-us/azure/active-directory-b2c/self-asserted-technical-profile#metadata

person Brad C.    schedule 22.02.2021
comment
Ой, фантастика! Спасибо за ссылку на образец; Я разветвил это репо, но пропустил его как запись. Я обязательно отмечу это как ответ, если этот поток работает. Благодарен за возможность. - person SeanKilleen; 23.02.2021
comment
На данный момент это единственный вариант. Скоро мы будем готовить что-нибудь заранее. - person Jas Suri - MSFT; 23.02.2021
comment
Следует отметить, что ошибка AADB2C90118 не возвращается при использовании Layout версии 2.1.2. Вместо этого вы получаете ошибку сервера на стороне b2c. - person Octopus; 23.02.2021
comment
Если у кого-то есть понимание, чтобы ответить на этот вопрос, stackoverflow.com/questions/66337730/ - person Octopus; 23.02.2021

Хотя ответы, предоставленные Брэдом Си, превосходны и заслуживают рассмотрения, в итоге я решил это немного другим способом, который соответствовал нашему варианту использования с меньшими усилиями.

После загрузки страницы входа я заменяю содержимое ссылки ForgotPassword ссылкой на созданный мной рабочий процесс passwordreset. Я беру текущий URL-адрес страницы и заменяю экземпляр signin_signup на passwordreset.

JQuery на моей пользовательской HTML-странице выглядит следующим образом:

$(document).ready(function() {
    var currentUrl =  $(location).attr('href');
    var modifiedPasswordResetUrl = currentUrl.replace('signup_signin', 'passwordreset');

    var passwordResetLinkSelector = $("a#forgotPassword");

    if(passwordResetLinkSelector.length > 0) {
        // only try to set the href if it's actually found; it won't be there on some screens that use this template.
        passwordResetLinkSelector.attr('href', modifiedPasswordResetUrl);
    }
});
person SeanKilleen    schedule 25.02.2021