【问题标题】:Implement Basic Auth in ASP.NET 5在 ASP.NET 5 中实现基本身份验证
【发布时间】:2015-03-30 02:50:46
【问题描述】:

我在 MVC6 应用程序中使用 ASP.NET Identity 和 Forms 身份验证,并尝试为 API 端点实现基本身份验证。

我原以为会有一个预先构建的中间件可以做到这一点,但一直找不到。我查看了过滤器测试网站https://github.com/aspnet/Mvc/tree/dev/test/WebSites/FiltersWebSite,但我似乎无法弄清楚它在做什么/哪些部分很重要。

我尝试使用 pre-5 方法在授权过滤器中手动进行基本身份验证,但 SuppressFormsAuthenticationRedirect 似乎消失了,并且 CookieAuthenticationHandler 不断重定向到登录页面。

【问题讨论】:

  • 回答“预建中间件”的问题,“基本身份验证不符合 [katana 团队的] 安全要求”-katanaproject.codeplex.com/workitem/381
  • 我怀疑我需要继承 CookieAuthenticationMiddlewareCookieAuthenticationHandler,并重现隐藏在 UseIdentity 中的所有逻辑,或者重写 UseIdentity 帮助器以使 Cookie 身份验证被动,并且在需要的地方手动重定向?
  • 您是否针对特定的 Web 主机(例如 IIS)
  • 目前它已部署在 IIS 中,但它通过绑定到特定主机而违背了构建 OWIN 应用程序的目的。

标签: asp.net-mvc basic-authentication asp.net-core


【解决方案1】:

基本身份验证并非设计使然。安全团队反对它。他们可能稍后会制作样品。

您可以在此处阅读有关该问题的讨论:https://github.com/aspnet/Security/issues/209

【讨论】:

  • 感谢@Bart 提出问题。我不能说我同意“让我们不要实现 HTTP 规范的这一部分,因为有人可能会用错”的态度,但我想他们必须做让他们开心的事情。
  • 讨论底部引用的第三方选项:github.com/Kukkimonsuta/Odachi/blob/master/src/…
【解决方案2】:

由于您的目标是 IIS,我建议利用 IIS 进行基本身份验证。您可以将 web.config 文件放到 wwwroot 文件夹中,其中包含用于配置基本身份验证选项的部分。


如果您想保持与主机无关,您将需要中间件。这是某人的实现:https://github.com/Kukkimonsuta/Odachi/tree/master/src/Odachi.Security.BasicAuthentication

【讨论】:

  • AFAIK IIS 仅支持针对 Windows 帐户的基本身份验证 - 我需要使用 ASP.NET 身份进行身份验证。无论如何,我看不到这解决了 OWIN 中间件内部发生的重定向?
  • 是的,我见过那个 - 看看我对巴特回答的评论。真正的问题不是基本身份验证(我通过过滤器 atm 进行此操作),它正在配置/修改 CookieAuthenticationHandler,因此它不会劫持请求/响应。
猜你喜欢
  • 2013-12-07
  • 2011-12-06
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 2019-09-29
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多