我应该在摘要领域内协商 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 身份验证吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在摘要身份验证中使用已经 MD5 编码的密码吗

如何在 Golang 中使用摘要身份验证进行 HTTP POST?

使用 Zombie.js 进行摘要式身份验证

如果没有 OpenID/Oauth2 等广泛使用的标准,我可以只使用 JWT 进行身份验证吗?

如何覆盖 Apache 的摘要身份验证

Tomcat 8.5 JDBC领域,具有盐腌密码摘要:身份验证失败