RavenDB身份验证和授权

时间:2013-10-11 15:26:54

标签: security authentication authorization ravendb

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

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

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

此致 Venky

2 个答案:

答案 0 :(得分:2)

我认为你在谈论Authorization Bundle page within the RavenDB Documentation

你还没有谈过任何关于问题领域的问题,所以我想首先我应该提到我的偏好是根本不使用授权包。因为there is a difference between system users and application users,在大多数软件系统中,您应该允许系统用户100%对数据库进行读/写访问,并使用应用程序逻辑控制用户可以访问的应用程序。

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

您将根据业务规则自行定义的操作。我认为你已经明白了,因为你没有问你的问题会从哪里来。

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

从ASP.NET Web应用程序中,您可以在域环境中使用Windows身份验证来获取用户的Windows身份,也可以使用表单身份验证来获取存储在您自己的应用程序中的身份。然后,您可以通过ASP.NET的内容获取当前用户的身份。 (根据您是来自Web窗体,MVC,WebAPI等,访问它的最佳方式是不同的。)如何将当前用户转换为授权用户字符串(示例中的Authorization/Users/DrHowser来自文档由你决定。

答案 1 :(得分:0)

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