2016-10-17 2 views
1

Я застрял с Not allowed to load local resource: file:///android_asset/www/index.html?code=[code]&state=[state], когда API аутентификации, используя стандарт OpenID Connect, пытается перенаправить на локальное приложение Android.Не разрешено загружать локальный ресурс с перенаправлением OpenID connect

Когда я запускаю приложение, если я еще не подключен, перенаправление выполняется в API аутентификации, который запрашивает учетные данные пользователя. Затем, если учетные данные были хорошими, API выполнит другое перенаправление на redirectUri, прошедшее в первом перенаправлении (в качестве параметра запроса). Это redirectUri является предыдущим file:///android_asset/www/index.html.

Я не знаю, как настроить приложение/телефон, чтобы удаленное приложение (API аутентификации) перенаправлялось в мое приложение после успешной проверки подлинности.

ответ

1

Для этого есть несколько вариантов. Рассматривая предложения, предлагаемые в OAuth 2.0 specification, точнее, те, которые предполагают внешний пользовательский агент.

Внешнего агент пользователя - родное приложение может захватить ответ от сервера авторизации с использованием (1) перенаправления URI со схемой, зарегистрированной в операционной системе для вызова клиента в качестве обработчика, (2) ручное копирование и вставка из учетных данных, (3) работают локальный веб-сервер, (4) установка расширения агента пользователя, или с помощью (5) обеспечения перенаправления URI, идентифицирующего поддерживаемого сервера размещенный ресурс под контролем клиента, что, в свою очередь, делает ответ доступным для собственного приложения.

Вариант 1:

Вы настраиваете переадресацию с помощью пользовательской схемы, зарегистрировавший ваше Android приложение, таким образом, ваше приложение будет вызываться, когда внешний агент пользователя, браузер, получает ответ, указывающий перенаправить на вашу схему. Учитывая, там есть несколько приложений для Android :), схема должна быть довольно уникальной. Рекомендация заключается в использовании обратной записи имени домена для вашего домена, например, если вам принадлежит «app.example.com», эта схема может быть «com.example.app».

Вариант 2:

Вы перенаправляет где-то, что только показывает красивую страницу с кодом и попросить пользователя ввести его вручную в приложении.

Вариант 3:

Ваше приложение запускает локальный веб-сервер и настроить переадресацию быть что-то вдоль линий http://localhost:[port]/. Здесь могут возникнуть проблемы с конфликтами портов, если несколько приложений решают использовать один и тот же.

Вариант 4:

Установив расширение агента пользователя вы бы код, работающий с браузером, и это может сообщить код автоматически в приложения, больше для сценариев рабочего стола.

Вариант 5:

конфигурируется перенаправлением URI, указывающее на какую стороне сервера коды размещенных и что ваш клиент Android приложение знает, так что он может захватить код из этого URL.


для гораздо больше информации по этой теме, проверьте: OAuth 2.0 for Native Apps

В заключительной ноте, используя схему file URL не будет вариант. Кроме того, если вы не хотите использовать полную серверную часть для параметров, которые требуют некоторой логики на сервере, вы можете сделать то же самое, используя гораздо меньше строк кода, написав что-то как Webtask (обязательно используйте собственный домен).

Раскрытие информации: Я инженер Auth0.

+0

Спасибо за быстрый ответ! Я скажу вам как можно скорее, если это сработает для меня или нет. –

+0

Как настроить пользовательскую схему типа "com.example.app"? Поскольку это родное/гибридное приложение для Android, у меня нет зарегистрированного домена. Единственный способ, который, как мне известно, для доступа к моему приложению, - это URL-адрес файла «не вариант». –

+0

Это просто соглашение об именах, вы можете попросить зарегистрировать схему с нужным именем. Конвенция заключается лишь в уменьшении вероятности того, что два приложения будут регистрировать одну и ту же схему. –

Смежные вопросы