#azure #xamarin.forms #azure-active-directory #adal #xamarin.uwp
#azure #xamarin.forms #azure-active-directory #adal #xamarin.uwp
Вопрос:
Я использую Azure AD для аутентификации пользователя в моем приложении Xamarin forms и того, чего я хочу достичь в своем приложении UWP, чтобы, если один пользователь позволяет, сказал, что он вошел в приложение, а затем вышел. При следующем входе в систему Azure AD должен показать список пользователей, которые вошли в систему на этом конкретном устройстве, чтобы пользователь мог выбрать пользователя и просто ввести пароль.
В моем случае, если я выхожу из системы пользователя, он всегда запускает поток с запроса адреса электронной почты и пароля
Вот фрагмент кода для выхода из системы
AuthenticationContext authContext = new AuthenticationContext($"{tenantUrl}/{tenantId}");
authContext.TokenCache.Clear();
Windows.Web.Http.Filters.HttpBaseProtocolFilter myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter();
var cookieManager = myFilter.CookieManager;
var cookieUri = new System.Uri(tenantUrl);
HttpCookieCollection myCookieJar = cookieManager.GetCookies(cookieUri);
foreach (HttpCookie cookie in myCookieJar)
{
cookieManager.DeleteCookie(cookie);
}
P.S: Похоже, проблема с пакетом UWP ADAL, поскольку на iOS то же самое работает нормально
Ответ №1:
Отличный вопрос!
В ADAL потребовалось исправление (должна быть выпущена новая версия, поэтому все, что выше версии 5.0.2-preview, будет исправлено), чтобы справиться с этим в UWP.
Добавьте этот код в свое приложение:
var x = Windows.Security.Authentication.Web.WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
Возьмите значение (что-то вроде этого: ms-app://s-1-15-2-111638678-219698677-36916742-1909548894-372823757-39941306-27685825/
) и зарегистрируйте значение как перенаправление на портале для этого приложения.
Затем, вернувшись в код, вместо того, чтобы передавать указанное выше значение (x) в качестве перенаправления, введите null . ADAL / MSAL установит uri перенаправления, к https://sso
которому будет перенаправляться через WebAuthenticationManager, и теперь вы должны увидеть список учетных записей, как в iOS.
Вас также может заинтересовать эта документация, особенно при возникновении проблем в корпоративной сети.
Ответ №2:
С пакетом ADAL вы не увидите идентификатор электронной почты последнего зарегистрированного пользователя. Но если вы используете пакет MSAL по умолчанию, вы сможете увидеть список идентификаторов электронной почты последних зарегистрированных пользователей. Я попробовал на своем локальном компьютере, и с помощью пакета MSAL я могу видеть список идентификаторов электронной почты пользователя. Ниже приведен снимок экрана.
Я надеюсь, что приведенная выше информация полезна.