我有一个有 3 层的网站.....
- MVC 5(表示层)与自定义 OWIN 一起存储 cookie。它与服务层一起检查以验证用户,然后创建cookie。
- 服务层(类库):表示层引用了这一层,与数据库的任何通信都需要经过这些。
- 数据层(类库):具有 SQL 语句的数据层。该层负责与数据库的任何通信。服务层对此有参考。
上述所有层都驻留在同一台机器上,但位于不同的项目中。还有一种可能性是,我不得不将所有层移动到它自己的单独服务器(演示、服务、数据)。
现在,一旦用户经过身份验证和授权,我基本上希望将身份传递给服务和数据层,因为我不希望任何人直接调用服务和数据层。但我不知道该怎么做。
谁能给我看光?
Cookie
/Token
只能在基于浏览器的环境中使用(这意味着它只能帮助保护presentation
层。
如果要保护Presentation
层(如前所述,这是类库),快速而肮脏的方法是在 Web 项目中存储私钥,每次调用服务时,验证传入的私钥。
标准方法是使用 StrongNameIdentityPermission 来防止其他人引用您的 DLL。(https://msdn.microsoft.com/en-us/library/system.security.permissions.strongnameidentitypermission.aspx)
额外说明:考虑使用 obfuscator tool
来防止其他人反编译您的 DLL 代码。