我应该在摘要领域内协商 OAuth2 身份验证吗?
Posted
技术标签:
【中文标题】我应该在摘要领域内协商 OAuth2 身份验证吗?【英文标题】:Should I negotiate OAuth2 auth inside digest realm? 【发布时间】:2012-07-17 03:53:05 【问题描述】:我可能混淆了一些概念,但我一直在 web2py Google Group 上讨论他们应该实现摘要身份验证。
对于 OAuth2,我认为 auth-key 应该被散列并且只在身份验证领域内发送。
如果有什么不同,我使用 javascript 客户端,接口使用 JSONRPC 服务器端公开,OAuth2 使用 Facebook。
我应该在摘要领域内协商 OAuth2 吗?
【问题讨论】:
【参考方案1】:您把事情搞糊涂了——OAuth 中没有摘要领域的概念。也没有“身份验证密钥”之类的东西。 您拥有的是一个 auth-token,它代表您已由用户/实体颁发的声明。
由于令牌代表 [client_id, user, scope, expiration] 元组,它不能用于生成哈希,因为该哈希将无用 - 资源服务器无法对所有可能的组合进行哈希以找到匹配项。
如果您想要传输安全,只需使用 SSL(不考虑使用有效证书的中间人攻击等)。
也就是说,当攻击者已经能够拦截您的流量时,使用摘要保护凭据(令牌)是毫无用处的......
此外,为 OAuth2 背后的故事添加一些内容 - 它之所以如此简单(依靠 SSL 进行保护)是因为几乎每个人都可以管理。
事情越复杂,出错的几率就越高。
【讨论】:
具有讽刺意味的是,当前版本的 OAuth2 处于不再“简单”的状态,并且变得容易出错:(以上是关于我应该在摘要领域内协商 OAuth2 身份验证吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Golang 中使用摘要身份验证进行 HTTP POST?