2017-10-13 74 views
0

我正在开发一个asp.net MVC 5解决方案,我现在需要实现身份验证和授权。该解决方案有一个管理“繁重工作”的外部服务,该服务将在每个请求中使用用户名和密码,并且在成功验证时发回具有应与控制器中的属性匹配的用户权限(角色)的令牌。如何在无身份的asp.net MVC中实现自定义身份验证/授权?

对我的解决方案的每个请求都应该对外部服务发出请求。我如何在我的ex.NET asp.net MVC 5解决方案中以简单的方式实现它?我曾看过身份证和欧文,但他们对我试图达到的目标感到过分臃肿。我也发现了关于Forms auth的一些信息,但它似乎被弃用?

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

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

任何输入的赞赏,因为我很难找到关于如何实现自定义auth解决方案的可靠信息。有没有最佳做法?

谢谢!

+0

你试过[IdentityServer4(http://docs.identityserver.io/en/release/) ? – rmjoia

+0

基本上我们有一个完整的身份解决方案滚动作为服务,将执行繁重的举措和管理。但是现在我们有一个小型的mvc解决方案,需要使用它。所以我在寻找更多的方式来告诉MVC为每个请求询问我们的身份服务器的凭据,而不是建立在身份。 –

+0

我想你已经说过,是一个实施习惯的问题。关于最佳实践,这主要是一个基于意见的问题,所以你会得到很多,或者没有。[用身份定制ASP.NET身份验证](https://mva.microsoft.com/en-us/training-课程/定制-asp-net-authentication-with-identity-8647),[实现自定义认证(MVC5)](https://stackoverflow.com/questions/39612257/implementing-custom-authentication-mvc5),通常我去与身份服务器,对不起,帮不了多少:( – rmjoia

回答

2

MVC建立在ASP.NET的接口IPrincipalIIdentity上。如果实现这些接口,则可以使用MVC的现有[Authorize]/[AllowAnonymous]属性功能,并且只有在您需要用户/角色以外的其他功能时才能扩展它。

我不会在这里重复实现 - 有几篇关于如何正确实现这些接口的文章(应该在ASP.NET/MVC的Application_PostAuthenticateRequest事件中设置)。

+0

非常感谢您的信息,我会仔细看看! –