【发布时间】:2014-10-13 03:57:25
【问题描述】:
我正在努力学习 Web API 和 API 的一般方法。
目前,我正在调查身份验证。
我知道 API 身份验证和授权有多种方式。最常见的似乎是不记名令牌。
我还看到了 SAML,并且我也了解 x509(从我的 WCF 时代开始)。
今天我想谈谈不记名令牌。不记名令牌作为标头传递。标头未加密可能未加密?因此,有人可能会在未经同意的情况下获取所述令牌并冒充用户。这是我对不记名令牌的看法。似乎当今许多流行的服务都使用这种 API 身份验证方法。
除了不记名令牌之外还有哪些其他选项,但或多或少与 HMAC 处理消息等一样安全?
我似乎对很多身份验证方法都略知一二。我正在尝试了解更多,并希望构建一个非常安全的 API,允许 SSO(单点登录) - 如果不记名令牌是要走的路,那么很好,这是非常简单且开箱即用的解决方案。如果有更好、更安全的东西,我愿意接受,即使工作和时间远远超过不记名令牌。
我不知道为什么我不喜欢不记名令牌的声音,但它似乎很容易被攻击和利用。特别是对于支付相关类型的服务。
谢谢!
【问题讨论】:
-
这不是一个完整的答案,但我玩弄了 WebAPI 和令牌。不记名令牌不仅仅是一些随机的字节序列。它们包含加密信息。就我而言,我尝试在令牌中加密客户端的 IP 地址,这样即使有人劫持它,除非客户端的 IP 地址与令牌包含的内容匹配,否则它也无法工作。我知道这不是一个完整的解决方案,但它确实有效。
-
您是如何控制 STS 服务器分发令牌的令牌的?
-
我没有确切的代码,但我知道 WebAPI SDK 允许您覆盖令牌生成和验证的默认实现。
-
这是一篇关于拒绝现有令牌的文章。在
OAuthBearerAuthenticationProvider中也可能有一个创建事件的事件。 pressinganswer.com/81522/…
标签: c# asp.net api security authentication