Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OWIN流(从MVC 5)到类库_C#_Asp.net_Asp.net Mvc_Asp.net Identity_Owin - Fatal编程技术网

C# OWIN流(从MVC 5)到类库

C# OWIN流(从MVC 5)到类库,c#,asp.net,asp.net-mvc,asp.net-identity,owin,C#,Asp.net,Asp.net Mvc,Asp.net Identity,Owin,我有一个3层的网站 MVC5(表示层)与自定义OWIN一起存储cookie。它与服务层进行检查以验证用户,然后创建cookie 服务层(类库):表示层引用了该层,任何与数据库的通信都需要经过这些层 数据层(类库):包含SQL语句的数据层。该层负责与数据库的任何通信。服务层引用了这个 上述所有层位于同一台机器上,但位于不同的项目中。还有一种可能,我不得不将所有层移动到它自己的独立服务器(表示、服务、数据) 现在,一旦用户经过身份验证和授权,我希望基本上将身份传递给服务层和数据层,因为我不希望任何人

我有一个3层的网站

  • MVC5(表示层)与自定义OWIN一起存储cookie。它与服务层进行检查以验证用户,然后创建cookie
  • 服务层(类库):表示层引用了该层,任何与数据库的通信都需要经过这些层
  • 数据层(类库):包含SQL语句的数据层。该层负责与数据库的任何通信。服务层引用了这个
  • 上述所有层位于同一台机器上,但位于不同的项目中。还有一种可能,我不得不将所有层移动到它自己的独立服务器(表示、服务、数据)

    现在,一旦用户经过身份验证和授权,我希望基本上将身份传递给服务层和数据层,因为我不希望任何人直接调用服务层和数据层。但我不知道怎么做


    有人能给我点灯吗?

    Cookie
    /
    令牌只能在基于浏览器的环境中使用(这意味着它只能帮助保护您的
    演示层

    如果您想保护
    表示层
    的安全(正如您所提到的类库),快速而肮脏的方法是在Web项目中存储私钥,并且每次调用服务时,验证传入的私钥

    标准方法是使用StrongNameIdentityPermission防止其他人引用您的DLL。()


    <>额外注释:考虑使用<代码>混淆器工具防止他人反编译你的DLL代码。

    这是唯一的方式,还是存在另一个行业标准化的方法来保护类库(充当服务层和数据层)?@Johny:我更新了我的答案,标准的方法是使用StrongNameIdentityPermission来防止其他人引用我的DLL。但这需要额外的努力来设置。是否有任何在线可用的示例显示“在Web项目中存储私钥,并且每次调用服务时,验证私钥传入”。我会避免使用StrongNameIdentityPermission,因为有时我的批处理过程会直接引用我的服务层或数据层。而且有些服务是公开的,而大多数是不公开的。此外,除了上述两种方式之外,还有其他方式吗?@Johny:我现在想不出其他方式。对于私钥的事情,只要把它当作一个普通的参数,它将在方法签名中传递。根据项目的不同,您可以将密钥存储在
    web.config
    数据库中
    谢谢kienct89的帮助!