C# ASP.NET MVC 4:身份验证和授权:Intranet应用程序

C# ASP.NET MVC 4:身份验证和授权:Intranet应用程序,c#,asp.net,.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 4,我是ASP.NETMVC世界的新手。我正在构建一个intranet web应用程序。在我的案例中,身份验证和授权的定义如下: 身份验证:如果HttpRequest包含一个带有“USER_ID”的头,则对用户进行身份验证。 授权:有一个内部WCF服务,它返回用户有权使用用户ID作为输入的角色列表。我将应用程序所需的角色保存在xml文件中。如果用户所需的角色在svc响应中,则允许她使用该应用程序 我正在考虑按如下方式实施它: 在Global.asax->Application\u Authentic

我是ASP.NETMVC世界的新手。我正在构建一个intranet web应用程序。在我的案例中,身份验证和授权的定义如下:

身份验证:如果HttpRequest包含一个带有“USER_ID”的头,则对用户进行身份验证。 授权:有一个内部WCF服务,它返回用户有权使用用户ID作为输入的角色列表。我将应用程序所需的角色保存在xml文件中。如果用户所需的角色在svc响应中,则允许她使用该应用程序

我正在考虑按如下方式实施它:

在Global.asax->Application\u AuthenticateRequest中,我将放置代码来检查http头。如果它不是空的,我会让用户通过这个阶段

在AuthorizeAttribute类的OnAuthorization方法中,我将放置代码来获取角色列表,并将其与xml文件中所需的角色进行匹配

是否有任何方法可以使用现有的身份验证、授权基础架构

我看到这样的代码

[Authorize(Roles = "admin")]
public string Index() {
return "only admins!";
}
如何将上述角色属性链接到某个Xml或表,而不是硬编码


请帮助我在asp.net mvc应用程序中实现此逻辑

> P>您应该检查Windows身份基础(WIF),特别是CLAM SaaReSursialMealStand和CalimsPrimalPalPixStury属性。后者允许您指定哪些操作和资源需要被保护,而在CalAppTraceZItMaskMeor中,您可以检查当前用户是否可以在资源上执行操作,并且可以从所需的任何源读取。

< P>您应该检查Windows身份基础(WIF),特别是ClaimsAuthorizationManager和ClaimsPrincipAppPermissionAttribute。后者允许您指定需要保护的操作和资源,而在ClaimsAuthorizationManager中,您可以检查当前用户是否可以对资源执行操作,并且可以从您想要的任何源读取操作。

要获得授权,我可以:

  • 在global.asax AuthorizeRequest事件处理程序中创建具有适当角色的GenericPrincipal,并将其分配给HttpContext.User和Thread.CurrentPrincipal

  • 或者(更好)编写一个自定义RoleProvider,从xml文件中获取用户角色。如果配置这样的RoleProvider,ASP.NET将为HttpContext.User和Thread.CurrentPrincipal分配合适的RolePrincipal


然后可以使用标准的
授权属性

要获得授权,我可以:

  • 在global.asax AuthorizeRequest事件处理程序中创建具有适当角色的GenericPrincipal,并将其分配给HttpContext.User和Thread.CurrentPrincipal

  • 或者(更好)编写一个自定义RoleProvider,从xml文件中获取用户角色。如果配置这样的RoleProvider,ASP.NET将为HttpContext.User和Thread.CurrentPrincipal分配合适的RolePrincipal


然后可以使用标准的
授权属性

你应该延长上课时间。您可以使用自定义实现重写AuthorizeCore方法。我将考虑创建您自己的成员资格/角色提供程序。您应该扩展类。您可以使用自定义实现覆盖AuthorizeCore方法。我将考虑创建您自己的成员资格/角色提供程序。