Короче говоря, я хочу вернуть id_token из Google с использованием стандарта OpenID Connect. Я хочу сделать это для запросов аутентификации из собственного приложения для Android, чтобы использовать мое приложение MVC, например API.Анализ Google OpenID Callback
Проблемы, когда вы устанавливаете ваш «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 и пометить запрос как аутентифицированный?
Я могу отправить код, если вы считаете, что это поможет.
Почему бы не использовать грант авторизационного кода (так называемый «поток кода») и иметь внутренний код «code» для «id_token» и впоследствии возвращать идентификатор информацию в ваше приложение? Неявный поток, который вы используете, был разработан для доставки «id_token» в приложение в браузере. –
Ну, это имеет смысл, за исключением того, что трудно сохранить первоначальный мобильный запрос. Поскольку Google отправляет информацию в фрагменте url, у меня нет доступа к нему на сервере, если я не разбираю его с javascript и не отправляю его сам. Это нарушает цепочку запроса-ответа, что затрудняет ее отправку в мобильное приложение. Но я мог ошибаться во всем этом. – ReimTime
при использовании потока 'code',' code' отправляется как параметр запроса –