好的,所以我在尝试在我的ASP.NET MVC5(Web API 2)项目中获得身份验证过程时遇到了一些麻烦。首先,这里有一些要求:
<Authorize>
属性来帮助保护其他端点(请注意,我有很多原因可以改变上述情况)
我已尝试与Owin(OAuth)合作,但在将其与要求进行比较时,我发现了以下问题:
如果这是最适合我想要的方式,我很乐意远离OAuth。我更愿意使用微软构建的nuget软件包(即没有第三方解决方案),或者我很乐意部分推出自己的解决方案(我想利用内置或微软构建的代码,包括身份和声明尽可能减少测试工作。
我已经阅读了大量关于此问题的StackOverflow问题并在互联网上搜索堆,但大多数文章都坚持使用OAuth,尽管存在上述问题或者它们依赖于EntityFramework。我当前的解决方案使用此处的代码(几乎在ApplicationOAuthProvider.GrantResourceOwnerCredentials()中复制/粘贴了一些自定义代码):https://www.codeproject.com/Articles/1187872/Token-Based-Authentication-for-Web-API-where-Legac
感谢您的帮助!
答案 0 :(得分:0)
我做了一些更广泛的研究,看起来OAuth不适合我的具体情况。虽然它看起来像一个很好的身份验证方法,但我真的需要通过数据库使令牌无效,我需要API始终发送/接收XML(这些在使用OAuth时显然不适用)。
为了解决这些问题,我已经推出了自己的基于令牌的解决方案,在客户端创建了一个散列令牌,所以我从不通过线路发送密码(这有点好一点),因为令牌是在客户端(请注意,我正在控制客户端发生的事情 - 这些都是内部客户端,我正在编写这些客户端将使用的库)。这涉及到我创建自己的过滤器,该过滤器继承System.Web.Http.AuthorizeAttribute
。
如果有人偶然发现这个问题并提供了一个非常好的答案,我很乐意将他们的标记视为已被接受。