繁体   English   中英

如何为asp.net mvc和Web API实施相同的身份验证机制

[英]How to implement the same authentication mechanism for both the asp.net mvc and web API

目标是创建一个可以由本机移动设备(iOS,Android,Win Phone)以及具有各种表示层(asp.net核心MVC,Angular)的Web应用程序共享的api。

规划使用asp.net核心Web API来实现将由移动客户端以及javascript客户端使用的REST API。 我的问题是,将在理想情况下将安全逻辑放在哪里使用其他表示层(如asp.net MVC)? 如果我们在REST api中添加检查,那么asp.net MVC应用程序控制器将不得不使用HttpClient调用REST Web api,而不仅仅是引用业务层(共享类库)。

每个应用程序的身份验证将由json网络令牌处理,因为它们易于移动并且可以轻松扩展。 所以我的问题确实是关于授权安全性和它的安全性。

选项1:

Web API(安全性生活在这里)>业务/服务层>数据访问层>数据层

选项2:Web API>业务/服务层(安全存在于此处)>数据访问层>数据层

在选项1中,这对于移动端和客户端前端来说非常合适,因为它们必须调用REST API,但是asp.net核心MVC必须使用HttpClient来调用REST api,而不是调用组成该类的共享类库。业务/服务层。

在选项2中,所有REST api所负责的就是调用在其中处理安全性的业务/服务层。

听起来您的目标是构建公共API。 这应该是独立的,并且可以单独处理安全性-MVC网站只是另一个客户端(可能恰好生活在同一解决方案中),但理想情况下,它们之间不应有太多引用(基本上只是API合同)。 这样,您还可以更早地捕获到向后的向下兼容性问题,而不是MVC站点始终以强类型(即使通过重构)工作,而其他(尤其是移动客户端)则不会-您将拥有求助于API版本。

如果您在服务器端采取某些措施(例如,缓存),那么性能确实不应该成为问题,因为大量API都以这种方式工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM