首页 > 解决方案 > 具有非交互式服务帐户的 OAuth

问题描述

授权码授予类型是否仅适用于交互式帐户?我正在使用一个似乎不支持客户端凭据授予的 API,除非我回退到基本身份验证(用户:令牌),否则我不知道我们将如何为(对我们而言)是服务帐户的用户进行这项工作.

我正在努力解决的问题是授权码的返回。如果我点击生成的 URL 以请求身份验证代码,我会收到一个对话框,要求我允许/验证访问,并通过接受我返回到带有代码参数的 redirect_uri。这需要人机交互,而在我们的场景中我们不会这样做。身份验证码不应该长期存在,所以我不能只保存它以备将来使用。

标签: oauth-2.0

解决方案


第一部分,获取授权码,需要人工完成。

授权代码是短暂的,因此您不希望存储授权代码以供以后使用。

值得庆幸的是,您可以用该授权代码换取访问令牌和刷新令牌。尽管访问令牌通常在一个小时左右过期,但刷新令牌通常会在很长一段时间内保持活动状态(这可能因 API 而异)。我目前正在使用的 API 没有记录它何时过期,它可能永远不会过期。

我们只需要注意,如果刷新代码失败/过期,那么我们应该手动转到授权 URL 以获取新的身份验证代码,我们可以用它来换取的访问令牌和刷新令牌。我们将安全地存储刷新令牌,并将刷新令牌插入我们的自动化中。自动化不会进行authorization_code授权类型调用(我们仍将保持手动的那部分)并且只会进行refresh_token授权类型调用(这些可以是自动化的)以及一旦我们有了新的 API 进行实际工作的调用,有效的访问令牌。


推荐阅读