Bot Framework v3: как правильно выполнить выход пользователя из системы? - PullRequest
0 голосов
/ 30 мая 2019

В настоящее время я использую Bot Framework v3 SDK для C #.Моя проблема возникает, когда я выхожу из системы, она не удаляет учетные данные пользователя из всплывающего окна (Примечание: всплывающее окно открывает браузер в приложении, а не мой браузер).Поэтому, когда мой бот предлагает пользователю снова войти в систему (используя карту входа), приглашение на вход в систему для учетных записей Microsoft (https://login.microsoftonline.com/common) появляется на короткую секунду или две перед автоматическим закрытием.Мой бот получает токен доступа на основе ранее вышедшего пользователя.Моими средами тестирования являются Microsoft Teams и Bot Emulator.

Для входа я использую GetTokenDialog в пространстве имен Microsoft.Bot.Builder.Dialogs, который обрабатывает вход пользователя и обменивает токен авторизации на токен доступа.Эта часть работает правильно, так как я могу делать вызовы MS Graph с этим токеном доступа.

Чтобы выйти, в настоящее время я использую библиотеку расширений, предоставляемую в Microsoft.Bot.Builder.Dialogs пространстве имен.

bool success = await context.SignOutUserAsync(ConnectionName);

, где context - это объект IDialogContext, а ConnectionName - это строка с именем соединения OAuth моего AAD.

Используя Fiddler, я знаю, что этот единственный оператор кода отправляет HTTP-запрос DELETE на token.botframework.com, чтобы удалить токен из службы ботов Azure.Он возвращает логическое значение в зависимости от кода состояния ответа HTTP, и я всегда получаю значение true.Мой токен удален из службы ботов Azure, но всплывающее окно для входа автоматически подписывает пользователя на основании предыдущих учетных данных.Это заставляет меня поверить, что await context.SignOutUserAsync(ConnectionName); не обращается к Microsoft Online с просьбой выйти из системы, чтобы любезно выйти из системы моего пользователя, а только удаляет токен из службы ботов Azure.

Любая документация и примеры, которые я нашел в Интернете, используют это единственное утверждение кода для выхода из системы.Что-то не так / отсутствует в том, что я делаю?Есть ли альтернативы, чтобы обойти эту проблему?

1 Ответ

1 голос
/ 31 мая 2019

Это может быть связано с тем, что вы выбираете опцию «держать меня в системе».

При вызове SignOutUserAsync () токен удаляется из Azure. Но учетные данные пользователя все еще кэшируются в браузере всплывающего окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...