【问题标题】:SQL Server row level security and Microsoft authenticationSQL Server 行级安全性和 Microsoft 身份验证
【发布时间】:2018-02-27 15:38:52
【问题描述】:

我知道 SQL Server 的 RLS 使用 Windows 身份验证,但是否可以使用外部身份验证?喜欢 Google 或 Microsoft 身份验证?

我正在使用 C# Web API 2 对其进行测试,但不知道如何。

提前致谢!

【问题讨论】:

    标签: sql-server asp.net-web-api2 row-level-security


    【解决方案1】:

    Row-Level-Security 功能不使用 Windows 身份验证。您正在创建自己的函数,用作过滤谓词。例如,您可以使用内置函数USER_NAME()(查看官方文档以获取完整的工作示例):

    CREATE SCHEMA Security;  
    GO  
    
    CREATE FUNCTION Security.fn_securitypredicate(@SalesRep AS sysname)  
        RETURNS TABLE  
    WITH SCHEMABINDING  
    AS  
        RETURN SELECT 1 AS fn_securitypredicate_result   
    WHERE @SalesRep = USER_NAME() OR USER_NAME() = 'Manager'; 
    

    SalesRep 列中的一行与执行查询的用户 (@SalesRep = USER_NAME()) 相同或执行查询的用户是 Manager 用户 (USER_NAME() = 'Manager') 时,此函数返回 1。

    您还可以使用sp_set_session_contextSESSION_CONTEXT 来构建更复杂的逻辑。例如,您可以在.net 代码和set session context 中为您正在打开的 SQL 会话计算安全访问权限。然后,使用SESSION_CONTEXT,您可以在过滤功能中检查访问权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-29
      • 2015-12-18
      • 2012-06-20
      • 1970-01-01
      • 2014-04-30
      • 2015-09-15
      相关资源
      最近更新 更多