首页 文章

MVC WebApi . 授权和认证

提问于
浏览
1

我有一个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 属性是否有效?如果可能,请在这样的实现示例中建议,或者告诉我如何最好地实现它 .

3 回答

  • 0

    如果为使用您的应用程序配置了Active Directory,则最好的方法是使用Azure Active Directory身份验证 . 你可以获得更多信息here

  • 0

    首先,如果您尚未投入 生产环境 ,可能是时候跳转到.Net Core 2.x.它没有将Web API和MVC分离到地下,而且它是最新的技术 .

    如果由于某种原因,您无法升级框架,那么请使用Microsoft.Owin,Microsoft.Owin.Security.OpenIdConnect和所有依赖项 .

    OIdC定义了两种类型的令牌:身份令牌,描述用户和授权令牌,提供对API的访问 . 系统中应该有一些身份提供者,对用户进行身份验证并授权客户端(例如您的MVC APP) . 此类提供商可以是外部的(Google,Office 365等),也可以是内部的 - 您可以使用免费的 Identity Server 4.x 实施并根据您的需要进行调整 . 您甚至可以将IdP构建到您的应用中 .

    .Net Core和Owin OIdC实现的流程应该相同:

    • 您注册所有应用程序(身份提供商中的API和MVC)

    • 用户请求MVC资源,OIdC中间件将他重定向到IdP .

    • IdP验证发出标识和访问令牌的用户 .

    • MVC验证Identity令牌并使用它来创建本地身份验证cookie,以便用户在应用程序中进行身份验证 .

    • MVC控制器调用一些API并将其放入IdP请求的请求访问令牌中 .

    • API验证令牌并使用请求的数据进行响应 .

  • 0

    我建议你使用 OWIN 接口为web api和MVC实现基于令牌的身份验证 . 您应该在web api中提供身份验证令牌,并提供在MVC和Web Api中反序列化令牌的功能 . 那么,你可以找到一个示例开源项目here,我开发了它,关于如何使用 OWIN 为Web api实现基于令牌的身份验证 .

    对于MVC项目,您应该使用 OWIN 遵循相同的做法 .

相关问题