安全体系结构 - 用于驱动UI和Priveledges的设置(权限) - 基于角色的每个用户帐户

大公司如何实施其集中的安全要求,用于驱动人们可以做的事情(允许呼叫某个网络服务,提交订单等)以及驱动UI(禁用按钮,菜单选项,个人)形式领域)? 我正在考虑RBAC架构:用户 - >角色,角色 - >权限。 具有基于许多单独的field-account-user-role-amountThreshhold的权限的复杂应用程序将具有许多“角色”,并且随着角色数量的增长,管理这变得复杂。 管理所有这些可能的选项似乎令人生畏,我之前的经验是在应用程序中对这种逻辑进行硬编码。 例如:
If (User.Roles("IsAccounting")) 
{
    btnEditOrder.enabled = false;
}
我的任务是设计/实现一个安全服务/体系结构,它将用作任何/所有应用程序的通用身份验证/授权点(所有.NET,但有些GUI和一些面向流程的)。 由于客户帐户周围的业务组织和基于财务金额的权限层,因此无法开箱即用。 例如:John是用户,他可以查看和提交帐户“Microsoft”和“Google”的请求。 Mike可以查看“Microsoft”和“Google”请求,但只能提交“Google”请求。 帐户/用户数量很大且可变。 如果我遵循RBAC,将有数百个“角色”来容纳所有必需的权利(特权)。这没有用,因为最终目标是提供易于管理的GUI工具,以便管理人员可以将他们的直接报告分配给适当的角色。 我正在考虑使用以下API(伪代码草案)实现此安全性文件:
UserContext securityContext = Security.GetContext(userID, userPwd);
应用程序中的用法如下:
if (securityContext.RequestManager.CanSubmitRequest("Google")) {...}
这样就会有成千上万的“Can(params)”方法来检查权限,这些方法无法管理或使用这种模式。 任何链接/想法/指针都表示赞赏。 这是一个.NET商店,但我从.NET(Membership / AzMan)中看到的任何东西都不会给我们所需的粒度和委托要求。 ActiveDirectory / Oracle LDAP集成会很好,但不是必需的。 旧(当前)系统使用LDAP对用户进行身份验证,但所有授权都在内部完成,并存储在经典的“用户,角色,权限”表中。     
已邀请:
我们有几乎相同的要求,我们在大型组织内部有多个应用程序,我们必须这样做 保护多个应用程序以进行身份​​验证和授权 从同一个中心位置管理所有这些应用程序,没有 这些应用程序是.net或非.net,基于GUI或进程 为导向, 运行应用程序可能基于Internet或基于Intranet 应用程序应支持AD用户或联盟用户 身份验证和autroroziation 应用大量“基于角色”或“基于许可”的安全性或 自定义。 恩。启用/禁用功能 - 如启用按钮,禁用按钮,隐藏某些菜单,更改控件的背景颜色,或更改.net组件的任何.net支持的属性等。 保护Web服务或wcf服务以进行身份​​验证和授权 通过组为多租户应用程序应用基于角色的安全性 和用户管理 管理组织的多个应用程序的用户 中心位置 跟踪用户的操作或审核。     

要回复问题请先登录注册