在为我的 Web API(服务)-MVC(客户端)架构项目实施身份验证/授权方案时,我很难决定一种方法。尽管我已经在 Web API 项目中实现了基于自定义令牌的身份验证,但我发现我应该在哪里实现授权(在客户端或 API 本身中)很难。
架构概述:
- 项目解决方案-
|
| __ 基于 ASP.NET Web API 的 REST 服务(独立托管在 M/C 1 的 IIS 上)
|
| __ 基于 ASP.NET MVC 的客户端(独立托管在 IIS 上的 M/C 2 使用 REST 服务)
|
| __ 智能手机客户端应用程序(使用 REST 服务)
已实现身份验证:
Web API 中基于令牌的身份验证(使用消息处理程序)- 为经过身份验证的用户生成 SHA1 加密令牌,该令牌需要成为每个 http 请求标头的一部分以进行身份验证。
(令牌 = 用户名 + 用户 IP)SSL 保护的 HTTP 请求。(再次,使用消息处理程序)
当前问题:
- 授权应该在哪一层执行?
- 用户角色应该如何在客户端持久化?使用 Cookie?或将角色信息添加到令牌本身(这可能会增加 API 解密信息的开销和额外的数据库调用以检索与该角色关联的权限)
- 身份验证令牌应如何与客户端会话保持一致?
- 因为,我的应用程序是 SPA MVC 应用程序,将身份验证令牌作为我对 API 进行的每个 AJAX 调用的一部分包含在内的最佳方法是什么?
我希望,在考虑整个身份验证/授权概念时,我没有做错任何事情。因此,我将不胜感激任何替代方法/建议。