Security RavenDB身份验证和授权

Security RavenDB身份验证和授权,security,authentication,authorization,ravendb,Security,Authentication,Authorization,Ravendb,我是一名SQL Server DBA,试图解除RavenDB安全性的工作。如果我想设计一个应用程序安全性,我将为每个实际用户使用一个系统用户和一个应用程序用户 我的问题是如何设置应用程序用户的上下文。我需要向SecureFor()提供应用程序用户名和操作。但是,我可以从何处获取应用程序用户(已登录的用户)信息,而无需在应用程序中对其进行硬编码 我在RavenDB站点中看到的示例是SecureFor中的硬编码用户,但在现实生活中,我会假设用户名将与实际用户相关,这将是动态的 问候,, 文基,我想你

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

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

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

问候,,
文基,我想你是在说这个

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

话虽如此,我不想对这一点争论太多。让我们假设您确实对授权包有可验证的需求

您将根据业务规则定义自己的操作。我想你已经理解了这一点,因为在你的问题中,你并没有问这将从何而来

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


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

您可能会发现以下有趣的内容。ASP.NET标识是ASP.NET的新成员身份。ASP.NET Identity允许您添加基本的登录/注销功能,并为在非SQL存储中持久化您的成员信息提供一流的支持。默认情况下,ASP.NET Identity使用EF,但您可以轻松地用RavenDb替换此层,而无需更改代码。 您可以在此处查看ASP.NET标识的RavenDb实现 它表明,如果您有一个MVC应用程序,您可以通过注册RavenDb存储区而不是EF,将您的成员信息存储从EF替换到RavenDb。
如果您想了解有关ASP.NET标识的更多信息,请访问

,感谢David的清晰解释。我有一个后续问题。谢谢大卫的解释。我确实有一个后续问题。我的印象是,应用程序用户(来自authroization捆绑包的用户)需要像SQL Server中的应用程序用户一样进行验证,但我现在了解到RavenDB只接收SecureFor()中提到的用户ID。是否正确?再次感谢VenkyYes,您仍然需要授权(验证)传入用户的凭据。这是身份验证和授权之间的根本区别。RavenDB捆绑包仅在假设您已验证用户身份的情况下进行授权。