【问题标题】:How can I implement custom authentication/authorization in asp.net MVC without Identity?如何在没有身份的 asp.net MVC 中实现自定义身份验证/授权?
【发布时间】:2017-10-13 09:53:42
【问题描述】:

我正在开发一个 asp.net MVC 5 解决方案,我现在需要在其中实现身份验证和授权。该解决方案有一个管理“繁重工作”的外部服务,该服务将在每个请求上获取用户名和密码,并在成功验证后发回一个带有用户权限(角色)的令牌,该令牌应与控制器中的属性相匹配。

对我的解决方案的每个请求都应向外部服务发出请求。如何在现有的 asp.net MVC 5 解决方案中以简单的方式实现这一点?我看过 Identity 和 Owin,但他们对我想要实现的目标感到过于臃肿。我还找到了一些有关 Forms auth 的信息,但它似乎已被弃用?

我尝试过的工作流程是这样的:

用户请求控制器。控制器标有类似“Require(Roles="IT")”的属性。我实现了 IauthenticationFilter 并在 OnAuthentication 中调用我的服务来验证用户请求。从返回中,我将验证用户实际上是他所说的那个人,以及他是否被允许在所述控制器上输入所述操作。

感谢任何输入,因为我很难找到有关如何实施自定义身份验证解决方案的可靠信息。有什么最佳做法吗?

谢谢!

【问题讨论】:

  • 你试过IdentityServer4吗?
  • 基本上我们有一个完整的身份解决方案滚动作为一项服务,它将完成繁重的工作和管理。但是现在我们有一个需要使用它的小型 mvc 解决方案。所以我在寻找更多的是告诉 MVC 为每个请求向我们的身份服务器询问凭据而不是内置身份的方法。
  • 我想正如您已经说过的,是实现自定义的问题。关于最佳实践,这主要是一个基于意见的问题,所以你会得到很多,或者没有。Customizing ASP.NET Authentication with IdentityImplementing custom authentication (MVC5),通常我会使用 IdentityServer,抱歉,帮不上什么忙:(

标签: c# asp.net asp.net-mvc security asp.net-mvc-5


【解决方案1】:

MVC 建立在 ASP.NET 的接口 IPrincipalIIdentity 之上。如果你实现了这些接口,你可以利用 MVC 现有的 [Authorize] / [AllowAnonymous] 属性功能,并且只有在你需要用户/角色以外的一些功能时才对其进行扩展。

这里就不重复实现了——有几篇关于如何正确实现这些接口的帖子(应该在 ASP.NET/MVC 的Application_PostAuthenticateRequest 事件中设置)。

【讨论】:

  • 非常感谢您提供的信息。我会看的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 2015-10-13
  • 2022-01-21
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
相关资源
最近更新 更多