我想在我的.NET MVC Web应用程序中回收AD安全性,并且如果可能的话,几乎没有本地安全表。
我可以使用Authorize
标记轻松实现此目的:
[Authorize(Roles="GoldDigger")]
public ActionResult Go(int companyKey)
{
var something = GetData(companyKey);
return something;
}
但是,我有可以访问多家公司(Acme,StoreCo等)的用户,并且GoldDigger
位于某些公司,但不是所有公司。假设我为每个公司创建了一个Active Directory OU容器,因此我有以下AD角色结构:
NTWRK\Acme\GoldDigger
NTWRK\StoreCo\GoldDigger
NTWRK\PetCo\GoldDigger
NTWRK\Megalomart\GoldDigger
据我所知,我不能再使用Authorize
标记,因为所需的AD角色由CompanyKey参数的值决定。
此时我最好的选择是避免在每个控制器方法的顶部添加以下内容?是否可以在会话开始时或之前强制授权的上下文到特定(非硬编码)组织单位?
if (!AuthenticateAdRoleByCompany(companyKey, "Role Name Here"))
{
Explode();
return;
}