Web API OAuth承载令牌安全性

16
我相信我在这里错过了什么,希望有人能填补一下。
我正在查看.NET 4.5 Web API(版本2?)中的OAuth 2.0实现,并实现了一个非常简单的演示文稿,其中我有一个控制台应用程序调用一些基本操作。 我从“/ Token”端点获得一个令牌,并将其作为“承载者”令牌传递回Authorization标头。 这一切都很好。
然而,我想知道的是,这样不容易受到MITM,重放或其他攻击的影响吗? 如果我只是简单地传递凭据(以令牌形式),并且它们一直是相同的凭据,那么围绕此所做的安全性是什么,以确保没有人仅仅窃取了我的令牌并正在冒充我?
诚然,我也使用了SSL,但这是唯一围绕此构建的安全性吗? 或许我也应该使用某种nonce,或者时间戳检查? 如果是这样,如何在Web API中执行?
无论如何,我相信这里有一个非常简单的解释,所以我会感激这些信息。
另请注意,我正在两个Visual Studio 2013 Web应用程序项目中运行两个服务器,它们位于不同的VS 2013解决方案中,这些解决方案在不同的端口上运行。 我不确定这是否有关系,但我想提一下。

2
我真的对StackOverflow中的编辑概念感到沮丧。我不明白这个编辑与问题的本质有任何关系。我认为这是一个概念性问题,并且我的设置如何运行并不影响答案。我只是将其用作问题来源的上下文。为什么不直接将其作为评论添加,或在把话放在我嘴里之前先问一下我的意思?我还认为,在回答被接受后编辑问题毫无意义。此次编辑可能会改变给出的答案。沮丧无处不在。 - ChrisC
有时候人们喜欢玩他们所拥有的玩具 :) 此外,根据这篇文章,这也是提高声望的一种方式 >> http://meta.stackexchange.com/questions/17204/six-simple-tips-to-get-reputation-fast-on-any-stack-exchange-site - user20358
1个回答

25

OAuth 2.0 bearer tokens仅依赖于SSL/TLS进行安全保护,没有内部保护或承载令牌。如果您拥有该令牌,则是所有者。在许多依赖OAuth 2.0的API提供者中,他们会粗体提示客户端开发人员在传输期间安全存储和保护令牌。

您可以阅读Eran Hammer的这篇有趣的文章,他曾与制定OAuth 2.0标准的社区合作,但我相信他因意见冲突而离开了他们。查看他的OAuth Bearer Tokens are a Terrible Idea以及这篇文章

但最终,它正在成为标准方式,并且必须通过https进行传输并安全地存储。


谢谢 Taiseer。我记得在某个地方读过类似的内容(可能是那篇 Eran Hammer 的文章),但对于 HMAC 来说,这看起来太奇怪了,因为它非常费心地对事物进行签名、使用一次性数字、时间戳等等。你知道还有其他什么最佳实践可以用来使这个过程更加安全吗? - ChrisC
@ChrisC 签名的作用是确保令牌是由您的服务器发行的。由于负载本身只是base64,您有两个选择。要么您从不在令牌中存储敏感数据,要么加密负载。这篇文章很有趣:https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/#confidential-info - Pier-Luc Gendreau
1
谢谢Taiseer Joudeh,我对使用Bearer令牌的Oauth2.0有很多困惑。这个解释给了我一个合适的解决方案来消除我的困惑。 - Anand Mishra
很遗憾,答案中的帖子链接都已失效。 - Tony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接