Oauth 2.0 如何以及为什么不在oauth2中保护客户端机密

Oauth 2.0 如何以及为什么不在oauth2中保护客户端机密,oauth-2.0,google-oauth,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

请记住,我是一个新手,对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')
据我所知,客户端id是用来识别我的:)请求url只是我在谷歌网站上连接外部应用程序的连接点。刷新令牌用于生成实际的访问令牌

据我所知,客户端的秘密是应用程序和gmail之间的一个共享秘密,以使gmail确信正确的应用程序要求特定的访问权限

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

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


公平地说,oauth2在高层所做的一切都是为了确保某个外部应用程序能够访问我的gmail。这是对特定数据的特定应用程序的授权。但我仍然需要提供登录gmail的凭据。

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

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

假设您使用一个公共代码repo作为github,并将代码与正在使用的配置文件一起推送到那里。你刚刚向全世界暴露了你的秘密,我无法告诉你有多少次人们做过这样的事情

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

哦,为了澄清刷新令牌是如何工作的。。。。它用于延长已过期或即将过期的前一个令牌的寿命,因此您不必请求新令牌

如果是我,我会加密所有3个,即ClientID、ClientSecret和RefreshToken


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

假设您使用一个公共代码repo作为github,并将代码与正在使用的配置文件一起推送到那里。你刚刚向全世界暴露了你的秘密,我无法告诉你有多少次人们做过这样的事情

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

哦,为了澄清刷新令牌是如何工作的。。。。它用于延长已过期或即将过期的前一个令牌的寿命,因此您不必请求新令牌

如果是我,我会加密所有3个,即ClientID、ClientSecret和RefreshToken


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

谢谢你的回答。这是一个公平的观点。关于“如何处理刷新和客户端秘密”的问题呢?将它们存储在文件中有危险吗?还是我应该从加密文件中读取它们?谢谢你的回答。这是一个公平的观点。关于“如何处理刷新和客户端秘密”的问题呢?将它们存储在文件中有危险吗?还是应该从加密文件中读取它们?thx用于anwser。两个快速问题:那么您是加密客户端密码并刷新令牌,还是只加密客户端密码?当然,我的意思是,如果我理解正确,刷新令牌用于创建新的访问令牌。在回答中添加了更多内容以处理anwser的问题。两个快速问题:那么您是加密客户端密码并刷新令牌,还是只加密客户端密码?当然,我的意思是,如果我理解正确,刷新令牌用于创建新的访问令牌。在回答中添加了更多内容以处理您的问题