Я занимаюсь разработкой мобильного приложения, которое работает на стороне сервера с использованием OAuth2. Для авторизации мы используем OpenID Connect с потоком кода авторизации . Типичным шагом в процессе авторизации на мобильных устройствах в этом потоке является открытие URL-адреса авторизации в системном браузере, а затем перехват URL-адреса перенаправления с кодом авторизации.
В случае, когда пользователю необходимо ввести логин и пароль в браузере, это ХОРОШО. Но у нас есть клиенты, авторизованные по IP, и в этом случае системный браузер автоматически закрывается сразу после запуска и возвращает успешную авторизацию. Такой бесполезный запуск браузера раздражает, и я бы хотел его предотвратить.
Единственная идея, которая у меня есть сейчас, - это сделать запрос прямого HTTP-авторизации с параметром prompt=none
, как описано в https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest попробовать авторизоваться по IP. А в случае ошибок login_required
или interaction_required
повторите это в системном браузере без параметра prompt
.
prompt = none
Сервер авторизации НЕ ДОЛЖНЫ отображаться страницы аутентификации или согласия пользователя. Ошибка возвращается, если Конечный пользователь еще не аутентифицирован, или у Клиента нет предварительно настроенного согласия на запрошенные Претензии или не выполнены другие условия для обработки запроса. Код ошибки, как правило, будет login_required, Interaction_required или другой код, определенный в разделе 3.1.2.6. Это можно использовать как метод проверки существующей аутентификации и / или согласия
Есть ли какой-либо другой способ определения момента в процессе авторизации, когда действительно необходимо взаимодействие пользователя с веб-страницей? Поэтому я могу открыть браузер, только если это необходимо. И без дополнительных запросов бесполезно для большинства клиентов.