2

我正在考虑使用经过身份验证的加密 JWT 令牌来验证/授权对 ASP.NET Web API 应用程序的访问。

根据我到目前为止所读到的内容,在我看来,这是一种从令牌服务生成 JWT 令牌并通过 http 授权标头将它们传递给 Web API 的选项。

我找到了一些关于实现 JWT 创建和使用的很好的代码示例(Pro ASP.NET Web API Security by Badrinarayanan Lakshmiraghavan)。

我试图了解是否需要完整的 OAuth 实现来支持这一点,或者我是否可以简单地在 auth 标头中传递令牌。

假设令牌已正确加密和签名,在不必使用 OAuth 的情况下保持简单是否存在任何固有的安全缺陷?

在不影响安全性的情况下,尽量让事情变得简单以满足我的需求。

4

2 回答 2

6

并不是说您在使用令牌时必须始终使用 OAuth。但是考虑到您的应用程序是一个 JavaScript 应用程序,您最好实现一个 3-legged 身份验证。Thinktecture 身份服务器确实支持隐式授权. 但是,如果客户端应用程序访问用户凭证对您来说不是问题,那么您的 JavaScript 应用程序可以从用户那里获取用户 ID 和密码,并从令牌颁发者发出令牌请求,以确保用户 ID 和密码不被存储任何在 JavaScript 应用程序(包括 DOM)中的位置。此令牌请求也可以是简单的 HTTP POST,不需要与 OAuth 相关的任何内容。如果您的最终用户不会在客户端应用程序中输入凭据,则可以使用 OAuth 隐式授权。顺便说一句,您不需要加密 JWT。TIS 发出签名的 JWT,这将确保令牌的完整性。但是如果您担心机密性,您可以使用 HTTPS 来获取令牌以及呈现令牌。

于 2013-06-05T04:38:28.857 回答
0

看起来您并不真正需要 OAuth 提供的身份验证委托。HMAC 身份验证对您的场景来说还不够吗?使用 HMAC,您根本不必处理 JWT。这是我为 .NET 的 HMAC 身份验证所做的实现

https://github.com/pcibraro/hawknet

巴勃罗。

于 2013-06-04T17:31:00.957 回答