1

我是一名 SQL Server DBA,试图理解 RavenDB Security 的工作。如果我想设计一个应用程序安全性,我将为每个实际用户使用一个系统用户和一个应用程序用户。

我的问题是我将如何设置应用程序用户的上下文。我需要向 SecureFor() 提供应用程序用户名和操作。但是,我可以从哪里获取应用程序用户(已登录的用户)信息,而无需在应用程序中对其进行硬编码。

我在 RavenDB 站点中看到的示例是 SecureFor 中的硬编码用户,但在现实生活中,我假设用户名将与实际用户相关,这将是动态的。

问候,文奇

4

2 回答 2

2

我想您说的是 RavenDB 文档中的 Authorization Bundle 页面

您还没有谈到问题域,所以我想首先我应该提到我的偏好是根本不使用授权包。因为系统用户和应用程序用户之间存在差异,所以在大多数软件系统中,您应该允许系统用户 100% 对数据库进行读/写访问,并使用应用程序逻辑控制哪些应用程序用户可以访问。

话虽如此,我不想过多争论这一点。假设您确实需要授权捆绑包。

您将根据自己的业务规则定义自己的操作。我想你已经明白了,因为你没有在你的问题中问这将来自哪里。

用户必须从代码运行的上下文中定义。基本上,身份验证是一个单独的问题。

在 ASP.NET Web 应用程序中,您可以在域环境中使用 Windows 身份验证来获取用户的 Windows 身份,或者可能使用表单身份验证来获取存储在您自己的应用程序中的身份。然后您可以通过 ASP.NET 的胆量获取当前用户的身份。(访问它的最佳方式会有所不同,具体取决于您是否来自 Web 表单、MVC、WebAPI 等。)如何将当前用户转换为授权用户字符串(Authorization/Users/DrHowser在文档中的示例中)取决于您.

于 2013-10-11T16:34:31.190 回答
0

您可能会发现以下内容很有趣。ASP.NET Identity 是 ASP.NET 的新成员。ASP.NET Identity 允许您添加基本的登录/注销功能,并且还为将您的成员信息保存在非 SQL 存储中提供一流的支持。默认情况下,ASP.NET Identity 使用 EF,但您可以轻松地用 RavenDb 替换此层,而无需更改代码。您可以在此处查看 ASP.NET Identity 的 RavenDb 实现https://github.com/tugberkugurlu/AspNet.Identity.RavenDB 它表明,如果您有 MVC 应用程序,则可以从 EF 替换您的会员信息的存储只需注册 RavenDb 存储而不是 EF 即可访问 RavenDb。如果您想了解更多关于 ASP.NET Identity 的信息,请访问http://asp.net/identity

于 2013-11-17T02:49:01.273 回答