Web API安全和认证 - bearer令牌

6

我正在学习Web API和一般API的方法论。

目前,我正在研究身份验证。

我知道有几种API身份验证和授权的方式。最常见的似乎是令牌验证。

我还看到了SAML,我也知道x509(从我的WCF时代开始)。

今天我想谈论Bearer令牌。Bearer令牌作为标头传递。标头未加密可能没有加密? 因此,可能有人可以抓取该令牌并未经同意冒充用户。这是我对Bearer令牌的看法。今天许多受欢迎的服务都使用此方法进行API身份验证。

除了Bearer令牌以外,还有哪些其他选项可以像HMAC消息等一样安全,但更加安全?

我似乎对许多身份验证方法有所了解。 我正在努力了解更多,并希望构建一个非常安全的API,允许SSO(单点登录)-如果Bearer令牌是最好的选择,那太好了,它是一种非常简单且开箱即用的解决方案。 如果有更好且更安全的选择,即使工作量和时间远远超过Bearer令牌,我也会保持开放态度。

我不知道为什么我不喜欢Bearer令牌的声音,但它似乎太容易被攻击和利用了。特别是对于与支付相关的服务。

谢谢!


这不是一个完整的答案,但我曾经尝试过使用WebAPI和令牌。Bearer令牌不仅仅是一些随机的字节序列。它们包含加密信息。对于我的情况,我尝试在令牌中加密客户端的IP地址,这样即使有人劫持了它,除非客户端的IP地址与令牌所包含的匹配,否则它将无法工作。我知道这不是一个完整的解决方案,但它起作用了。 - Nathan A
你是如何控制 STS 服务器发放令牌的? - bugnuker
1
头部已加密。请参考此答案 https://dev59.com/znVC5IYBdhLWcg3wxEN1 - SamV
我没有确切的代码,但我知道WebAPI SDK允许您覆盖令牌生成和验证的默认实现。 - Nathan A
1
这是一篇关于拒绝现有令牌的文章。在OAuthBearerAuthenticationProvider中,很可能还有一个用于创建令牌的事件。http://www.pressinganswer.com/81522/how-do-you-reject-a-katana-bearer-tokens-identity - Nathan A
2个回答

3

HTTP头部使用HTTPS进行加密 - 使用Bearer令牌进行安全性是完全合适的,我现在正在我的企业应用程序中使用它。


2
“Bearer token” 作为一个头部信息被传递。由于头部信息并未加密,因此有可能会被他人获取该令牌并未经授权冒充用户。虽然这不总是理想的解决方案,但您可以确保只使用 HTTPS 传递数据。根据Eran Hammer(实际上在本文中不建议使用 bearer token),如果使用 HTTPS 传递头部信息,则其信息将保持安全。此外,您还可以在需要再次使用令牌或敏感数据时添加自己的加密算法。
请参见《关于 Token 的 10 件事》中的第 8 点

我确实看到/发现头部被加密了 - 这是一个优点。但我仍然想看看其他选择,比如涉及对消息进行MAC处理的东西? - bugnuker
这本来应该是一条评论,我很抱歉。虽然我不太熟悉其他的方法,但我可以说,我对承载令牌提供的安全性感到相当满意。我正在使用它与MVC Web API一起,在HTTPS上运行。 - silencedmessage

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