我们将为“桌面/移动响应网站”和“移动应用”启动新的解决方案。这两个项目(网站和移动应用程序)都需要访问相同的业务/数据层。
网站的层级结构将类似于以下内容:
浏览器 - > ASP.NET MVC网站 - >业务层 - >数据层 - >数据库
移动应用程序的层结构如下:
智能设备 - > ASP.NET Web Api服务层 - >业务层 - >数据层 - >数据库
我们不希望网站使用web api。
我们也不需要在我们的场景中与任何社交身份集成。我听说ASP.NET MVC不鼓励使用令牌方法进行安全性(身份验证和授权),并鼓励使用cookie方法。但是,如果我们在REST服务中明显不鼓励使用令牌方法和cookie,那么使用Web Api会容易得多。
虽然我们可以从新的ASP.NET身份系统开始,但我们不太清楚如何在不重写和支持两种情况的代码的情况下处理这两种情况。
基于上述理由,我们如何设计适用于我们的两种场景的通用安全模式,即ASP.NET MVC Web站点和ASP.NET Web API。
答案 0 :(得分:3)
如果您使用OWIN进行自托管,则可以查看创建OWIN中间件。如果您使用IIS进行Web主机,则可以通过处理authenticate事件来创建Http模块以进行身份验证并建立身份。可以用这种方式编写Http模块来查找令牌,如果不存在,则回退到cookie。通过使用MVC的cookie方法,我相信你的意思是表单身份验证。有了它,FormsAuthenticationModule发挥作用。所以,你的模块只需要知道这一点并且很好地发挥作用。最终,在Http上下文中建立身份,您可以在MVC和API控制器中使用Authorize
属性。 Here是如何创建用于身份验证的Http模块的示例。这里实现了基本身份验证,但您可以为令牌修改它。