如何以及为什么在oauth2中保护客户端密钥

时间:2017-09-26 07:15:41

标签: oauth-2.0 google-oauth

请记住,我是一个菜鸟,而不是oauth2的新手。我想要感受一下oauth2并且玩弄它。为此,我使用了offlineimap连接到我的Gmail帐户并检索电子邮件。

让我复制一些配置文件,我将用它来陈述我的一般性问题

oauth2_client_id = clientId
oauth2_client_secret = clientSecretToken
oauth2_request_url = requestUrl
oauth2_refresh_token = refreshToken
type = IMAP
remotehost = imap.gmail.com
remoteuser = xyz@gmail.com
remotepass = mailpasswd('gmail')

据我所知,client_id用于识别我为我:)请求网址只是我在谷歌网站上为外部应用程序连接的点。刷新令牌用于生成实际的访问令牌。

据我所知,客户端的秘密是应用程序和Gmail之间的共享秘密,以说服gmail正确的应用程序要求某些访问权限。

  

问题如果我理解这一点,刷新令牌和客户端机密应该是" secret"。这是否意味着将这些信息放在这样的配置文件中是危险的?我们应该像密码一样加密它(例如用gpg)吗?

oauth2中我不清楚的最后一点如下:我是否正确理解我需要提供我的凭据(用户名/密码),因为oauth2基本上假设我已登录?

公平地说oauth2在高层次上所做的就是确保某个外部应用程序获得对我的Gmail的特定访问权限。它是针对特定数据的特定应用授予的。但是我仍然需要提供我的凭据才能登录gmail。

2 个答案:

答案 0 :(得分:1)

但问题是,您只向您的Gmail帐户提供登录凭据,而不是将其暴露给第三方服务。第三方应用程序与您的帐户进行交互,通过登录后收到的身份验证令牌进行身份验证。如果需要且第三方应用程序将不再具有访问权限,则此令牌很容易失效。所有这些都无需更改密码。

答案 1 :(得分:1)

想象一下,您使用公共代码仓库作为github,并将您的代码与您正在使用的配置文件一起推送到那里。你刚刚把你的秘密暴露给了整个世界,我不能告诉你人们有多少次做过这样的事情。

如果您的代码不公开,那就更好了,但请确保您的Web服务器在直接请求时不提供配置文件。只要整个事情都没有人可以访问它,你就是安全的。

哦,只是为了澄清刷新令牌是如何工作的....它用于延长前一个令牌的生命周期,该令牌已过期或接近到期,因此您不必请求新的令牌。

如果是我,我会加密所有3,意味着ClientID,ClientSecret和RefreshToken。

可以这样想,ClientID是您的用户名,ClientSecret是您的密码。

相关问题