Парсинг Google OpenID Callback

Короче говоря, я хочу получить id_token от Google, используя стандарт OpenID Connect. Я хочу сделать это с запросами на аутентификацию от нативного приложения Android, чтобы использовать мое MVC-приложение как API.

Проблема в том, что когда вы устанавливаете свой response_type=id_token для запроса на обмен вашего кода одноразового доступа с Google, он отвечает параметрами в фрагменте URL: http://mycallbackuri.com#id_token=<whatever>&refresh_token=<whatever>

Как вы, наверное, знаете, этот фрагмент не затрагивает сервер. Обычно я могу поставить посредника Javascript для обработки запроса и хеширования положительных героев, а затем отправить их в мою конечную точку MVC.

Однако в случае запросов Android это становится проблемой: как мне сохранить исходный запрос Android, когда мне нужно сделать новый запрос, чтобы получить токены на стороне сервера?

В качестве фона у меня есть приложение для Android, которое получает код доступа от Google и затем отправляет его в мое веб-приложение. Предполагается, что веб-приложение обменивает его на id_token, а затем устанавливает необходимые файлы cookie для его аутентификации.

Кто-нибудь знает, как я могу это сделать? Может быть, мне нужен другой поток, или мне нужно просто получить id_token в моем приложении и отправить его вместе с моим API, затем проверить id_token и пометить запрос как аутентифицированный?

Я могу опубликовать код, если вы думаете, что это поможет.

1 ответ

Решение

response_type=id_token запустит неявный поток, который доставляет токен во фрагменте URL, в первую очередь предназначенный для использования клиентами в браузере.

использование response_type=code и не забудьте добавить scopeopenid на запрос аутентификации, чтобы вы получили code в параметре запроса, который сервер может получить и впоследствии получить как access_token и id_token в ответе от конечной точки токена. Это называется профилем OpenID Connect Basic Client, см.: https://openid.net/specs/openid-connect-basic-1_0.html

Другие вопросы по тегам