【问题标题】:How to design and develop common asp.net identity for both asp.net mvc and asp.net web.api如何为 asp.net mvc 和 asp.net web.api 设计和开发通用 asp.net 身份
【发布时间】:2013-11-15 22:05:34
【问题描述】:

我们将为“桌面/移动响应式网站”和“移动应用程序”启动一个新的解决方案。两个项目(网站和移动应用)都需要访问相同的业务/数据层。

网站的层级结构如下所示:

浏览器 -> ASP.NET MVC 网站 -> 业务层 -> 数据层 -> 数据库

移动应用的层级结构如下:

智能设备 -> ASP.NET Web Api 服务层 -> 业务层 -> 数据层 -> 数据库

我们不希望网站使用 web api。

我们也不需要在我们的场景中集成任何社会身份。我听说 ASP.NET MVC 不鼓励使用令牌方法来提高安全性(身份验证和授权)并鼓励使用 cookie 方法。但是,如果我们采用令牌方法,并且在 REST 服务中显然不鼓励使用 cookie,那么使用 Web Api 会容易得多。

虽然我们可以从新的 ASP.NET 身份系统开始,但我们不太确定如何在不为这两种情况重写和支持代码的情况下处理这两种情况。

基于上述理由,我们如何设计一种通用的安全模式,适用于我们的两种场景,即 ASP.NET MVC 网站和 ASP.NET Web API。

【问题讨论】:

  • 您是否考虑过创建一个自定义授权过滤器来查看帖子/网址以检查令牌以检查访问权限?

标签: asp.net-mvc asp.net-web-api


【解决方案1】:

如果您使用 OWIN 自托管,您可以考虑创建一个 OWIN 中间件。如果您使用 IIS 进行 Web 托管,您可以创建一个 Http 模块来进行身份验证并通过处理身份验证事件来建立身份。可以编写 Http 模块以查找令牌,如果不存在,则回退到 cookie。通过使用 MVC 的 cookie 方法,我相信您的意思是表单身份验证。这样,FormsAuthenticationModule 就开始发挥作用了。因此,您的模块只需要意识到这一点并很好地发挥作用。最终,身份建立在 Http 上下文中,您可以在 MVC 和 API 控制器中使用 Authorize 属性。 Here 是一个如何创建用于身份验证的 Http 模块的示例。此处实现了基本身份验证,但您可以针对令牌对其进行修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2010-12-30
    • 2015-05-05
    • 2014-01-21
    相关资源
    最近更新 更多