在OAuth2
规范中,可以预见的情况是,您正在完全运行在客户端(浏览器,移动设备等)的应用程序中进行身份验证,因此它们无法保护其代码/数据。 / p>
在关于Security Considerations
的备忘录中,他们说您不应在我们的代码中存储凭据(出于明显的原因,我认为):
https://tools.ietf.org/html/rfc6819#section-5.3.1
此外,在有关本机客户端的备忘录中,他们强烈建议授权服务器不需要应用程序密码:
https://tools.ietf.org/html/rfc8252#section-8.5
因此,应该有可能获得访问令牌,而无需使用“客户端”授予类型的客户端机密,例如:
https://www.oauth.com/oauth2-servers/mobile-and-native-apps/authorization/
无论如何,在Github文档中,指出client_secret
是检索access token
的必需项:
根据官方规范,您应该可以实现这一目标,但是我找不到使用Github OAuth实现这一目标的方法,这是我的问题:
是否可以使用Github OAuth而不使用access token
来获取client_secret
?
答案 0 :(得分:3)
时,我看不到那么,有没有一种方法可以使用Github OAuth,而无需使用client_secret获得访问令牌?
应用程序用该代码交换访问令牌。
当应用程序发出访问令牌请求时,该请求将通过客户端密码进行身份验证,从而降低了攻击者拦截授权码并自己使用授权码的风险。
这意味着,如果应用程序需要代表客户端自动执行该步骤,则需要从第三方引用(如文件库)中获取该秘密。
例如参见puppetlabs/vault-plugin-secrets-oauthapp
,这是一个为OAuth 2授权代码授予流提供安全包装的插件,允许Vault客户端代表用户请求授权并使用协商的OAuth 2访问令牌执行操作。
(此处,Valut是hashicorp/vault
)