【发布时间】:2018-09-30 00:49:57
【问题描述】:
我正在使用 ASP.NET core 2.0 MVC 构建一个 Intranet。所有用户都是活动目录的一部分。另外,我有一个包含以下表格的 MSSQL 数据库:
Users (Id, FirstName, UserNameAd (unique), ...)
Roles (Id, RoleName)
UserRoles (User_Id, Role_Id)
在我的 Web 应用程序中,我现在想要检索用户的角色并将它们存储在 Microsoft 的身份验证/身份类中,以便使用 [Authenticate(Roles="Admin")] 的东西。我不确定我应该把这个角色请求放在哪里,最好的做法是什么。用户可能会在白天获得新角色或角色在白天被删除,我实际上不希望用户单击特定内容或需要他重新启动浏览器以应用新角色 -这就是为什么我认为需要使用来自服务器的每个服务器操作(POST、GET)来请求角色。
非常感谢任何想法或指向好的教程的链接。
此外,如果您认为我的方法不是很好的做法,并且您有更好的想法,我很乐意知道。
【问题讨论】:
-
您应该避免在您的应用程序中硬编码授权和 RBAC。利用现有工具,例如从 LDAP 而不是本地数据库中读取您的角色,或使用 ABAC / XACML 之类的东西
-
这个 Intranet 将处理数百个用户和大约 80 个具有不同模块的不同系统。这就是我们不想拥有 Active-Directory 组的主要原因,因为我们认为这会完全淹没我们的 AD。你能解释一下为什么你认为我们不应该在这个应用程序中使用 RBAC 吗?我也不明白你所说的“硬编码”是什么意思。与将某物存储在数据库或 XACML 中的区别在哪里?
-
查看我对这个问题的回复:stackoverflow.com/questions/49917039/…
-
我现在更了解您的方法的优势。但是,在我看来,市场上有几种解决方案,您必须购买。这目前不是我们的方法,我仍然对如何从数据库中为每个请求检索用户的角色感兴趣......
-
好吧,我很高兴微软的身份解决方案在后期可能会变得混乱和受限,但是现在我认为只需向控制器添加 1 行以限制其访问权限非常方便一个特定的角色。但是我仍然无法在 asp.net core 2.0 中的身份和数据库之间建立联系,角色也是如此......
标签: c# asp.net-core-mvc authorization roles