Google Oauth 2.0 最小用户交互
Google Oauth 2.0 minimum user interaction
我们有一个要求,我们的用户想要与各种 Google API 进行交互,因此我们需要针对 Google 的授权服务器的 OAuth2.0 授权。
我们的约束是我们使用的是单个网页前端,并且不想为了获得用户授权而重定向到我们的页面之外。
在理想情况下,用户会在我们的网页上选中一个框或单击一个按钮,然后使用此输入,我们将收到访问令牌和刷新令牌,而无需用户直接与 Google 交互。这样的想法是否可能,或者某种形式的用户交互在初始步骤中是必须的。
我们已经阅读了一些关于搭载 Oauth2.0 和 OpenConnectId 的参考资料,但是我们不确定是否适用于这种情况。任何建议或意见将不胜感激
提前致谢
我猜你需要OAuth2的Refresh Token流
刷新OAuth2的令牌:
刷新令牌是一个字符串,表示授予的权限
资源所有者的客户端。该字符串通常是不透明的
客户端。令牌表示用于检索的标识符
授权信息。与访问令牌不同,刷新令牌是
仅供授权服务器使用,永远不会发送
到资源服务器。
+--------+ +---------------+
| |--(A)------- Authorization Grant --------->| |
| | | |
| |<-(B)----------- Access Token -------------| |
| | & Refresh Token | |
| | | |
| | +----------+ | |
| |--(C)---- Access Token ---->| | | |
| | | | | |
| |<-(D)- Protected Resource --| Resource | | Authorization |
| Client | | Server | | Server |
| |--(E)---- Access Token ---->| | | |
| | | | | |
| |<-(F)- Invalid Token Error -| | | |
| | +----------+ | |
| | | |
| |--(G)----------- Refresh Token ----------->| |
| | | |
| |<-(H)----------- Access Token -------------| |
+--------+ & Optional Refresh Token +---------------+
Figure: Refreshing an Expired Access Token
图 2 中所示的流程包括以下步骤:
(A) 客户端通过身份验证请求访问令牌
授权服务器并提供授权许可。
(B) 授权服务器对客户端进行认证并验证
授权授予,如果有效,则颁发访问令牌
和一个刷新令牌。
(C) 客户端向资源发起受保护的资源请求
服务器通过出示访问令牌。
(D) 资源服务器验证访问令牌,如果有效,
满足要求。
(E) 重复步骤 (C) 和 (D),直到访问令牌过期。如果
客户端知道访问令牌过期,它跳到步骤(G);
否则,它会发出另一个受保护的资源请求。
(F) 由于访问令牌无效,资源服务器returns
无效令牌错误。
(G) 客户端通过身份验证请求新的访问令牌
授权服务器并提供刷新令牌。这
客户端身份验证要求基于客户端类型
以及授权服务器策略。
(H) 授权服务器对客户端进行认证并验证
刷新令牌,如果有效,则发出一个新的访问令牌(并且,
可选地,一个新的刷新令牌)。
根据您的情况,您可以尝试使用Ajax调用来满足您的要求。
我们有一个要求,我们的用户想要与各种 Google API 进行交互,因此我们需要针对 Google 的授权服务器的 OAuth2.0 授权。
我们的约束是我们使用的是单个网页前端,并且不想为了获得用户授权而重定向到我们的页面之外。
在理想情况下,用户会在我们的网页上选中一个框或单击一个按钮,然后使用此输入,我们将收到访问令牌和刷新令牌,而无需用户直接与 Google 交互。这样的想法是否可能,或者某种形式的用户交互在初始步骤中是必须的。
我们已经阅读了一些关于搭载 Oauth2.0 和 OpenConnectId 的参考资料,但是我们不确定是否适用于这种情况。任何建议或意见将不胜感激
提前致谢
我猜你需要OAuth2的Refresh Token流
刷新OAuth2的令牌:
刷新令牌是一个字符串,表示授予的权限 资源所有者的客户端。该字符串通常是不透明的 客户端。令牌表示用于检索的标识符 授权信息。与访问令牌不同,刷新令牌是 仅供授权服务器使用,永远不会发送 到资源服务器。
+--------+ +---------------+
| |--(A)------- Authorization Grant --------->| |
| | | |
| |<-(B)----------- Access Token -------------| |
| | & Refresh Token | |
| | | |
| | +----------+ | |
| |--(C)---- Access Token ---->| | | |
| | | | | |
| |<-(D)- Protected Resource --| Resource | | Authorization |
| Client | | Server | | Server |
| |--(E)---- Access Token ---->| | | |
| | | | | |
| |<-(F)- Invalid Token Error -| | | |
| | +----------+ | |
| | | |
| |--(G)----------- Refresh Token ----------->| |
| | | |
| |<-(H)----------- Access Token -------------| |
+--------+ & Optional Refresh Token +---------------+
Figure: Refreshing an Expired Access Token
图 2 中所示的流程包括以下步骤:
(A) 客户端通过身份验证请求访问令牌 授权服务器并提供授权许可。
(B) 授权服务器对客户端进行认证并验证 授权授予,如果有效,则颁发访问令牌 和一个刷新令牌。
(C) 客户端向资源发起受保护的资源请求 服务器通过出示访问令牌。
(D) 资源服务器验证访问令牌,如果有效, 满足要求。
(E) 重复步骤 (C) 和 (D),直到访问令牌过期。如果 客户端知道访问令牌过期,它跳到步骤(G); 否则,它会发出另一个受保护的资源请求。
(F) 由于访问令牌无效,资源服务器returns 无效令牌错误。
(G) 客户端通过身份验证请求新的访问令牌 授权服务器并提供刷新令牌。这 客户端身份验证要求基于客户端类型 以及授权服务器策略。
(H) 授权服务器对客户端进行认证并验证 刷新令牌,如果有效,则发出一个新的访问令牌(并且, 可选地,一个新的刷新令牌)。
根据您的情况,您可以尝试使用Ajax调用来满足您的要求。