我有一个ASP.NET MVC项目和一个Web Api项目(单独的项目)。通过Web Api(包括授权和身份验证)完全实现对数据库的访问。 ASP.NET MVC是一个客户端,Web Api是一个服务器。
那么,如何在ASP.NET MVC项目中(在客户端)正确实现授权和身份验证?我仔细阅读了如何在Web Api中实现它(通过令牌),但我无法理解如何在ASP.NET MVC中正确使用此令牌。
实现每个请求的换行?我也不知道如何在ASP.NET MVC中定义用户角色。也许有一些方法可以重写ASP.NET MVC授权的标准方法来使用Web Api令牌? ASP.NET MVC客户端上的Authorize
属性是否有效?如果可能,请在这样的实现示例中建议,或者告诉我如何最好地实现它。
答案 0 :(得分:0)
如果配置了Active Directory以使用您的应用程序,则最好的方法是使用Azure Active Directory身份验证。您可以获得更多信息here
答案 1 :(得分:0)
我建议您使用OWIN
接口为web api和MVC实现基于令牌的身份验证。您应该在web api中提供身份验证令牌,并提供在MVC和Web Api中反序列化令牌的功能。因此,您可以找到一个示例开源项目here,我为此开发了一个关于如何使用OWIN
为Web api实现基于令牌的身份验证的方法。
对于MVC项目,您应该使用OWIN
遵循相同的做法。
答案 2 :(得分:0)
首先,如果您尚未投入生产,可能是时候跳转到.Net Core 2.x.它没有将Web API和MVC分离到地下并且它是最新技术。
如果由于某种原因,您无法升级框架,那么是的,请使用Microsoft。 Owin,Microsoft.Owin.Security.OpenIdConnect和所有依赖项。
OIdC定义了两种类型的令牌:身份令牌,描述用户和授权令牌,提供对API的访问权限。系统中应该有一些 Identity Provider ,对用户进行身份验证并授权客户端(例如您的MVC APP)。此类提供商可以是外部的(Google,Office 365等),也可以是内部的 - 您可以使用免费Identity Server 4.x
实施并根据您的需要进行调整。您甚至可以将IdP构建到您的应用程序中。
.Net Core和Owin OIdC实现的流程应该相同: