Запомнить последних зарегистрированных пользователей в Azure Active Directory Xamarin Forms

#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 я могу видеть список идентификаторов электронной почты пользователя. Ниже приведен снимок экрана.

введите описание изображения здесь

Я надеюсь, что приведенная выше информация полезна.