vab*_*abz 8 asp.net asp.net-mvc asp.net-authorization asp.net-mvc-4 asp.net-web-api
在为我的Web API(服务) - MVC(客户端)架构项目实现身份验证/授权方案时,我很难确定方法.即使我已经在Web API项目中实现了基于自定义令牌的身份验证,但我发现很难确切地实现授权(在客户端或API本身).
架构概述:
已经实现了身份验证:
Web API中基于令牌的身份验证(使用消息处理程序) - 为经过身份验证的用户生成SHA1 encripted令牌,该令牌需要是每个http请求头的一部分以进行身份验证.
(令牌=用户名+用户IP)
受SSL保护的HTTP请求.(再次,使用消息处理程序)
目前的问题:
我希望,考虑到整个身份验证/授权概念,我做错了.因此,我将不胜感激任何替代方法/建议.
首先,我认为发明自己的身份验证机制从来都不是一个好主意。
回答您当前的问题:
1一般来说,您总是希望使用身份验证来保护您的 Api,因为它是您访问数据的地方。您的客户端(MVC 应用程序/智能手机)应授权自己访问您的 Api。
2 & 3 由于您使用的是 REST Api,我建议您保持 Api 无状态,换句话说,不要保留任何会话信息。只需将您需要的角色数据包含在您的令牌中即可。例如,您可以使用JSON Web Token。
4 我总是使用授权标头来发送授权数据。在您的 DelegatingHandler 中(请注意 MessageHandler MVC 和 DelegatingHander HTTP 的区别),您可以简单地检索标头。
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
var authorizationHeader = request.Headers.Authorization;
// Your authorization logic.
return base.SendAsync(request, cancellationToken);
}
Run Code Online (Sandbox Code Playgroud)
有关如何在 ajax 调用中包含授权标头的更多信息,请参阅:如何通过 jQuery 和 AJAX 使用基本身份验证?
额外信息:
如果我是你,我也会看看 Thinktecture 的身份服务器:https://github.com/thinktecture/Thinktecture.IdentityServer.v2
也许这个关于 REST 服务身份验证的答案也会对您有所帮助: REST 服务身份验证
| 归档时间: |
|
| 查看次数: |
8531 次 |
| 最近记录: |