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

玛吉

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

规划使用asp.net核心网络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,而不是调用组成该API的共享类库。 buinsess /服务层。

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

亚历山德鲁·马库里斯库(Alexandru Marculescu)

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP.NET MVC 5和WEB API使用相同的身份验证

ASP.NET Web API和WCF之间在身份验证机制方面的区别

不同的asp.net Web API控制器的不同身份验证机制

ASP.NET MVC / Web Api通用授权和身份验证

ASP.NET MVC + Web API2 + AngularJS授权和身份验证

使用Windows身份验证和OWIN的ASP.NET MVC5 / AngularJS / Web API应用

如何为具有角色和权限的ASP.NET MVC5 Web Api创建自定义授权?

ASP.NET MVC和WEB API

ASP.NET Core Web API身份验证

ASP.NET Web API中的用户身份验证

ASP.NET 5中的Web API身份验证

ASP.NET Web API的JWT身份验证

Google身份验证ASP.NET Core Web Api

ASP.NET MVC-如何为SQL Server身份验证安全地保留用户密码?

如何使用ASP.NET身份在Web API 2中实现两因素身份验证?

针对Web和移动的ASP.NET Web API社交身份验证

如何在基于 cookie 身份验证的 asp.net mvc 项目中向 web api 添加令牌身份验证

如何使用AWS api网关和Web api实施自定义身份验证(逻辑)

Asp Net Core (2.1) WebApp - API 和 Web 界面的身份验证

在ASP.NET Web API和Angle JS中使用的身份验证方法

Web 应用程序和 API AzureAD 身份验证流程 ASP.NET Core

使用ASP.NET Web API进行的与身份验证和授权相关的疑问

ASP.NET Core Web API + Angular 2授权和身份验证

Asp.net Core Web API-当前用户和Windows身份验证

如何使用自定义身份验证和内存托管进行ASP.NET Web API集成测试

如何在ASP.NET Core 2中对Facebook Web API进行身份验证

如何根据Web API / Asp.Net身份验证HTML-5音频下载请求?

如何通过表单在ASP.NET Web API中实现Active Directory身份验证?

如何使用Postman使用Cookie身份验证测试ASP.NET Core Web API?