Google OAuth2.0 是不是支持资源所有者密码凭据流的 OAuth 流?

Posted

技术标签:

【中文标题】Google OAuth2.0 是不是支持资源所有者密码凭据流的 OAuth 流?【英文标题】:Does Google OAuth2.0 support an OAuth-flow for a Resource Owner Password Credential Flow?Google OAuth2.0 是否支持资源所有者密码凭据流的 OAuth 流? 【发布时间】:2013-09-09 13:53:03 【问题描述】:

你好互联网的人们。

Google OAuth2.0 是否支持资源所有者密码凭据流的 OAuth 流? ...如果是这样,那么:

A.) 这种类型的 OAuth 流程可以在 Google OAuth2 Playground 上进行测试吗?

B.) 是否有任何使用 Google OAuth2.0 和 Google API 的“资源所有者密码凭据流程”示例?

根据最近在 Oslo NDC 2013 上的 OAuth 演示文稿,此主题流程显然一起跳过了授权端点,并直接与 OAuth2 服务器的令牌端点对话。请求语法咒语应该看起来像这样:

grant_type=password&
scope=resource&
user_name=owner&
password=password&

我的理解是资源所有者密码凭证流适用于后端企业类型情况下的受信任应用程序(可以安全地存储名称-密码对)。

这个特定的 OAuth 流程不需要最终用户的同意交互(不需要弹出浏览器来接受,然后获取返回的授权码等)。在这个主题流程中,访问和刷新令牌再次直接返回:没有最终用户交互(尽管在输入用户名密码之后)。

查看 Google OAuth 文档 (link to Google OAuth2 docs) 似乎没有提到任何类似于资源密码凭据流的内容,但不确定这是否一定意味着它不受 Google 明确支持。

任何帮助或建议将不胜感激。

提前致谢

【问题讨论】:

【参考方案1】:

亲爱的互联网人,

Google 确实不支持资源所有者密码凭据流程,但 google 建议您使用已安装的应用程序流程,该流程在:https://developers.google.com/accounts/docs/OAuth2InstalledApp 中进行了描述。

您需要在 Google 控制台 (https://code.google.com/apis/console) 中创建一个已安装的应用程序,当您这样做时,您可以获取 client_id 并使用参数构建一个 GET 请求,如下所示:

https://accounts.google.com/o/oauth2/auth\?
scope\=<scope>\&
redirect_uri\=urn:ietf:wg:oauth:2.0:oob\&
response_type\=code\&
client_id\=<client_id fetched from google console>

您将构建此 URL 并在您的浏览器上导航到它,允许访问该应用程序,Google 会为您提供我认为可用于获取凭据的代码。您可以使用这些凭据获取访问令牌并刷新它,并且此凭据是永久性的。 github 上有一个很好的例子。请注意,您只需手动获取这些凭据一次,然后将这些凭据保存在某处并继续使用它们来获取/刷新令牌。

希望这会有所帮助!

【讨论】:

【参考方案2】:

据我所知,没有。OAuth 2.0 的东西是用于 Google 帐户的,Google 会对其进行身份验证。

【讨论】:

只是为了强制执行 Tim 所说的,不支持资源所有者密码凭据。当然。

以上是关于Google OAuth2.0 是不是支持资源所有者密码凭据流的 OAuth 流?的主要内容,如果未能解决你的问题,请参考以下文章

OAuth2.0

授权命令行工具使用 Google API(通过 OAuth2.0 或其他任何方式)

大话Oauth2.0,从概念到实践

OAuth2.0和OIDC详解

SpringBoot--实战开发--OAuth2.0密码模式(五十一)

彻底搞明白OAuth2.0