【问题标题】:Use WebAPI 2 without OWIN authentication middleware使用没有 OWIN 身份验证中间件的 WebAPI 2
【发布时间】:2015-01-14 20:59:10
【问题描述】:

我想使用 ASP.NET WebAPI 2,但使用我自己的身份验证机制。我试图删除 VS 2013 中 SPA 模板附带的所有代码,以及普通的 WebAPI 模板。如果我从项目中删除所有与身份验证相关的代码并且不在它的 Startup.Auth 中配置 OWIN,我总是会收到一个错误,即未设置 OWIN 中间件身份验证并且我无法执行任何控制器的操作。

在 WebAPI 2 中使用自己的代码实现基于令牌的身份验证的正确方法是什么,绕过 OWIN 主机 .dll 中的现有内容,包括它的配置要求?

【问题讨论】:

  • 您是从一个完全空白的 Web Api 2 模板开始的吗?我认为它没有任何 OWIN 要求,它仍然使用 Global.aspx 进行配置。也就是说,OWIN 是微软走向未来的道路。您应该能够使用自己的身份验证,即使它包括项目中的 dll。这个博客系列可能会有所帮助:bitoftech.net/2014/06/01/…
  • 我需要通过提供的 .net 服务类对用户进行身份验证。我们正在为其开发软件的客户不会乐于在他的纯面向企业的解决方案中看到 OAuth 或其中的任何部分,因此我的目标是尽可能干净和“受控制”的解决方案。隐藏大量代码且文档记录不完善(至少目前)不适合可能的软件项目。
  • 至于 WebAPI 2 模板 - 好吧,如果您创建 ASP.Net Web 应用程序模板项目并在向导中选择 WebAPI,那么不幸的是,您将获得 OWIN “负担”与生成的代码。跨度>
  • 如果你打算自己做,为什么不选择空的 asp.net 模板,然后添加 web api 2 nuget 包?
  • @John,我实际上做了相反的事情 - 采用了 web api 模板并通过 nuget 删除了所有 OWIN-stuff 并且从那时起就免费了。您应该将其发布为答案,我会将其标记为正确答案。

标签: asp.net asp.net-web-api token owin


【解决方案1】:

您可以只注释掉以下代码行:

Startup.cs:

//[assembly: OwinStartup(typeof(Yourpoject.Startup))]

public void Configuration(IAppBuilder app)
{
    //ConfigureAuth(app);
}

WebApiConfig.cs:

 //// Web API configuration and services
 //// Configure Web API to use only bearer token authentication.
 //config.SuppressDefaultHostAuthentication();
 //config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

【讨论】:

    【解决方案2】:

    类似于 John 的回答,但您可以在创建 WebAPI 时删除 OWIN。更清洁的方法。

    为此: 选择“更改身份验证”

    然后选择“无身份验证”

    现在你的项目不会有 OWIN 的东西了

    干杯 巧克力

    【讨论】:

      【解决方案3】:

      您可以使用空白的 Asp.Net 模板并将 Web Api 2 添加为 nuget 包,或从其他入门模板中删除未使用的内容。

      【讨论】:

      • 创建 Empty asp.net 并为 web api 添加文件夹和核心引用
      猜你喜欢
      • 1970-01-01
      • 2014-08-19
      • 2017-12-17
      • 2014-04-05
      • 2015-10-09
      • 2020-07-28
      • 2014-02-20
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多