正在解析 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_token
和 id_token
。这称为 OpenID Connect 基本客户端配置文件,请参阅:https://openid.net/specs/openid-connect-basic-1_0.html#TokenOK
长话短说,我想使用 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_token
和 id_token
。这称为 OpenID Connect 基本客户端配置文件,请参阅:https://openid.net/specs/openid-connect-basic-1_0.html#TokenOK