如果可能,我想在我的 .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;
}