Сделайте это:
result = await ac.AcquireTokenAsync("<clientId>", "https://resourceUrl", new Uri("https://ClientReplyUrl"), new PlatformParameters(PromptBehavior.Auto));
Вот ссылка на вики ADAL .NET, в которой подробно описано, как использовать PlatformParameters. «параметры» типа «PlatformParameters» - это способ ADAL.NET выразить, какого рода взаимодействие должно происходить с пользователем.
Auto
пользователь запрашивает учетные данные только при необходимости.
- Если токен уже существует в кэше, диалоговое окно вообще не отображается.
- Если токен не существует в кэше, но пользователь известен, или файл cookie сеанса доступен в элементе управления веб-браузера, используемом для взаимодействия, диалоговое окно мигает, но сразу исчезает.
- Если токен не существует в кеше, а пользователь неизвестен, то для пользователя отображается диалоговое окно для входа
Always
пользователю всегда предлагается ввести учетные данные, даже если токен существует в кэше и если у пользователя есть сеанс. Это полезно, когда приложение хочет дать пользователю возможность войти в систему с другим идентификатором, не давая никаких намеков на предыдущие идентификаторы.
RefreshSession
отображается веб-браузер, и токен получает обновленные заявки. Если файлы cookie для входа доступны (во встроенном веб-представлении), пользователю не будет предложено ввести учетные данные, и диалоговое окно быстро исчезнет (будет мигать).
SelectAccount
это показывает диалоговое окно, содержащее идентификаторы, под которыми пользователь имеет сеансы в настоящее время. Пользователь может добавлять другие учетные записи.
Never
[кроме Android и iOS]: не запрашивает у пользователя учетные данные.
CallerActivity
[Android] или OwnerWindows
[.NET 4.5] позволяют разработчикам приложений контролировать, какое окно / действие будет родительским для диалогового окна аутентификации. Разработчик может захотеть предоставить эту родительскую информацию по причинам UX: чтобы диалоговое окно отображалось по центру родительского окна и над ним.