Я задаю этот вопрос в контексте мобильного приложения (Xamarin), использующего Azure AD B2C.
The tl; dr; из этого: Должен ли я всегда использовать IUser
, полученный из политики «входа / подписки», при вызове PublicClientApplication.AcquireTokenSilentAsync
?
Теперь позвольте мне немного объяснить сценарий.
Пользователь пытается использовать приложение, но ему необходимо немедленно сбросить пароль.
Используя библиотеку MSAL, PublicClientApplication.AcquireTokenAsync
вызывается с помощью политики «сброса пароля».
В случае успешного вызова объект IUser
помещается в коллекцию PublicClientApplication.Users
.
Кроме того, токена, возвращенного в AuthenticationResult
из этой функции, достаточно, чтобы позволить пользователю получить доступ к ресурсам, которым нужен токен AD B2C.
Тогда это означает, что любые будущие вызовы PublicClientApplication.AcquireTokenSilentAsync
будут использовать IUser
, который был связан с политикой «сброса пароля».
Это будет работать ... но это лучшая практика?
Или приложение должно немедленно предложить пользователю войти в систему, вызывая тем самым политику «подписка / вход» и, таким образом, добавить IUser
, связанный с этой политикой, в коллекцию PublicClientApplication.Users
. Тогда всякий раз, когда вызывается AcquireTokenSilentAsync
, этот конкретный IUser
может быть передан ему? (Вместо того, что указано в политике «сбросить пароль».)
Тот же вопрос можно задать всякий раз, когда вызывается политика «редактирования профиля». В коллекцию добавляется новый IUser
, и, если пользователь уже выполнил вход в предыдущий, имеет ли значение, какой IUser
отправлен на AcquireTokenSilentAsync
?