我正在考虑使用经过身份验证的加密JWT令牌来验证/授权访问ASP.NET Web API应用程序。
根据我到目前为止所读到的内容,在我看来,它似乎是一种从令牌服务生成JWT令牌并通过http授权头将它们传递给Web API的选项。
我找到了一些关于实现JWT创建和使用的好代码示例(Badrinarayanan Lakshmiraghavan的Pro ASP.NET Web API安全性)。
我正在尝试了解我是否需要完整的OAuth实现来支持此功能,或者我是否可以简单地在auth标头中传递令牌。
假设令牌已正确加密和签名,是否存在任何固有的安全漏洞,无需使用OAuth即可保持简单?
在不影响安全性的情况下,尽量使事情尽可能简单。
答案 0 :(得分:6)
使用令牌时,并不一定要始终使用OAuth。但鉴于您的应用程序是一个JavaScript应用程序,您最好实现三脚认证。 Thinktecture身份服务器确实支持implicit grant。但是,如果访问用户凭据的客户端应用程序对您来说不是问题,那么您的JavaScript应用程序可以从用户获取用户ID和密码,并从令牌颁发者发出令牌请求,确保用户ID和密码不会存储在JavaScript应用程序(包括DOM)中的位置。此令牌请求也可以是简单的HTTP POST,并且不需要与OAuth相关。如果您的最终用户不会在客户端应用程序中输入凭据,则可以使用OAuth隐式授权。顺便说一下,你不需要加密JWT。 TIS签署了JWT签名,这将确保令牌完整性。但是如果您担心机密性,可以使用HTTPS来获取令牌以及呈现令牌。
答案 1 :(得分:0)
看起来您并不真正需要使用OAuth提供的授权委派。对于您的场景,HMAC身份验证不够吗?使用HMAC,您根本不需要处理JWT。这是我为.NET
进行HMAC身份验证的实现https://github.com/pcibraro/hawknet
巴勃罗。