正在解析 Google OpenID 回调

Parsing Google OpenID Callback

长话短说,我想使用 OpenID Connect 标准从 Google 得到一个 id_token。我想对来自原生 Android 应用程序的身份验证请求执行此操作,以便像 API.

一样使用我的 MVC 应用程序

问题是,当您将 "response_type=id_token" 设置为与 Google 交换一次性访问代码的请求时,它会以 url 片段中的参数响应: http://mycallbackuri.com#id_token=<whatever>&refresh_token=<whatever>

正如您可能知道的那样,这些片段内容从未接触过服务器。通常我可以在那里放一个 Javascript 中间人来处理请求并散列好东西,然后 POST 它们到我的 MVC 端点。

然而,在 Android 请求的情况下,这成为一个问题:当我必须发出 new[ 时,我应该如何保留原始 Android 请求=27=] 请求在服务器端获取令牌?

作为背景,我让我的 Android 应用程序从 Google 获取访问代码,然后将其发送到我的 Web 应用程序。 Web 应用程序应该将其交换为 id_token,然后设置必要的 cookie 以对其进行身份验证。

有人知道我该怎么做吗?也许我需要使用不同的流程,或者我只需要在我的应用程序中获取一个 id_token 并将其发送到我的 API,然后验证 id_token,并标记请求已通过身份验证?

如果您认为有帮助,我可以post编写代码。

response_type=id_token 将触发在 URL 片段中传送令牌的隐式流,主要供浏览器内客户端使用。

使用 response_type=code 并确保将 scope openid 添加到身份验证请求中,这样您将在后端可以获取的查询参数中获得 code拾取并随后在来自令牌端点的响应中同时获得 access_tokenid_token。这称为 OpenID Connect 基本客户端配置文件,请参阅:https://openid.net/specs/openid-connect-basic-1_0.html#TokenOK