And*_*lov 7 security oauth oauth-2.0
我正在根据OAuth 2.0构建授权服务器.
还有一个使用我的授权服务器的第三方Web应用程序(客户端).它是一个常规的Web应用程序,用户可能会使用此应用程序建立多个活动会话(例如,办公室和家庭计算机,或同一台计算机上的几个Web浏览器).
我的授权服务器为客户端发出一次访问令牌#1(带或不带刷新令牌,这在此处并不重要).当用户与客户端启动新会话时,授权服务器是否应该为客户端应用程序提供该新会话的相同访问令牌#1,还是应该发出新的#2令牌?
我的想法:
从安全的角度来看,新令牌可能听起来更好,但如果用户想要管理他的授权,他将看到每个客户端会话的单独条目,这可能是混乱的.
例如,GitHub为以前授权的客户端返回相同的令牌,在我的GitHub帐户的"应用程序"页面上,我看到每个应用程序只有一个条目,无论我启动了多少个会话,这很方便.
但是,这种方法意味着我必须以可逆方式(纯文本或使用某些已知密钥加密)在授权或资源服务器中存储访问令牌,而不是使用不可逆的散列(就像您通常使用密码,存储salt和密码哈希)来自bcrypt,pbkdf2或类似的东西).
请注意,我不是安全专家,这个解释是我对oauth的总体看法.我之所以提到这一点的原因是因为我看到你正在创建基于oauth 2.0协议的自己的AUTH SERVER,这意味着有些人可能正在使用你的服务器进行身份验证,因此我不希望你拥有错误的概念.
我想先清楚这一点,不要混合会话和oauth.这些是两个独立的东西,通常发现恕我直言.
Oauth协议简单地为应用/用户提供访问令牌,通过该访问令牌,应用/用户可以向服务器查询与令牌相关联的数据.
另一方面,会话取决于应用程序本身.一旦某个应用程序收到令牌,他们就会进行会话.当用户登录或注销时,会话被销毁,而不是oauth.
从服务器的角度来看,每个令牌都应该在一段时间后过期.这就对了.服务器不知道其他任何事情.它为您提供令牌,然后在'n'秒后过期.
但是,应用程序可能会决定要撤消访问令牌.也许他们的网站被黑了,或者他们可能已经完成了所有api调用.然后他们可以向您的服务器发送一个特殊请求,告诉您强制使令牌过期.
绝对没有.作为oauth服务提供商,您根本不关心会话.所有你知道的是,如果应用程序要求你提供令牌,你给他们一个.
但是,我也会回答你关于会议的问题.你应该为同一个用户产生不同的会话吗?我会说是的.如果您有相同的会话,那么如果您从一台计算机注销,并在第二台计算机上刷新页面,由于会话已过期,您的其他浏览器/计算机也将自然退出.
好吧,我不为他们工作,所以我不知道.但我猜他们会检查每个会话,如果两个或多个会话与同一个用户关联,他们就知道用户必须使用许多设备.然后,当您的某个设备向github发送一些请求时,他们可以从您的IP地址猜测您的位置,如果您的许多计算机正在从同一个地方发出请求,那么您必须使用多台计算机.如果没有,那么也许一些攻击者也在使用您的帐户.
这就是AFAIK银行预测恶意用户的方式 - 不是唯一的方式,他们有时也会预测您用于访问银行记录的模式,如果这种模式不同,很有可能您的帐户遭到入侵.
这是我不太确定的部分.从我所看到的,oauth有两件事.谷歌这两个术语获取更多信息:
是的,该令牌应该在给定的到期时间内被使用多次(谷歌将其设置为1小时).在它过期后,使用刷新令牌获取另一个访问令牌并根据需要多次使用它.继续重复这个过程.
如果您的用户不在线启动oauth进程,并且您没有刷新令牌,那么该应用程序需要具有"离线"令牌.
如果您的应用程序需要它,您可以,但由于可能泄露,因此无处推荐.令牌应该在给定的时间限制内提取数据,并在需要时重新发出令牌.但是,如果您愿意,您肯定可以存储它们.
另一方面,"离线"令牌预计将被存储.如果你愿意,你可以加密它们,但如果范围不是太广泛,我就不会打扰了.
| 归档时间: |
|
| 查看次数: |
2833 次 |
| 最近记录: |