Обновление идентификатора токена с использованием 'prompt = none' не поддерживает URL перенаправления с пользовательской схемой в Azure. - PullRequest
1 голос
/ 06 ноября 2019

Мы создаем приложение Xamarin Forms, пока только Android, которое подключается к веб-API, также созданному нами (ASP.Net Core). Мне удалось настроить аутентификацию OpenId Connect:

  • Использование Azure в качестве поставщика удостоверений.
  • Использование пользовательских вкладок Android для отображения страницы входа Microsoft.
  • Определите, когда пользовательская вкладка перенаправляется на наш URL-адрес перенаправления.
  • Получите маркер идентификатора и используйте его в качестве токена-носителя для аутентификации, отправленного нашему веб-API.
  • Использование аутентификации JwtBearer в веб-API.

Проблема появляется, когда истекает срок действия токена id. Мы хотим получить новый, не задавая пользователю никаких вопросов.

Для этого мы повторяем процесс аутентификации, добавляя параметры prompt=none, id_token_hint=THE_TOKEN и login_hint=THE_USER в запрос аутентификации, какопределено в спецификации OpenId Connect и поддерживается Azure.

Во время этого запроса у нас возникла проблема с URL-адресом перенаправления:

  1. Если URL-адрес перенаправления имеет собственную схему (например,myapp://...) Azure отвечает с ошибкой interaction_required.
  2. Если URL-адрес перенаправления имеет схему HTTPS, то Azure отвечает успешно (включая необходимые параметры для продолжения процесса), но я не могу обнаружитьURL перенаправления в пользовательской вкладке Android. Таким образом, мое приложение застревает на пользовательской вкладке, пытаясь загрузить мой недопустимый URL-адрес перенаправления.

Объяснение # 2 заключается в том, что URL-адреса HTTPS обрабатываются браузером (в данном случае Chrome), поэтомуне вызывать никаких действий, которые я могу обнаружить из моего приложения. Это кажется разумным. Я также пытался обнаружить события навигации по пользовательской вкладке из Xamarin, пытаясь определить событие «вручную», но не получилось. Такие события никогда не инициируются.

Теперь, что касается # 1, у меня нет никаких разумных объяснений. Итак, мой вопрос:

Есть ли способ заставить Azure принимать URL-адрес перенаправления с пользовательской схемой при попытке обновить токен id с помощью стандартного параметра prompt=none OpenId Connect?

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