【问题标题】:Supporting multiple authentication policies in ASP.NET 4 Web application支持 ASP.NET 4 Web 应用程序中的多种身份验证策略
【发布时间】:2011-06-27 04:13:06
【问题描述】:

考虑一个包含一组使用 ASP.NET 4 和本机 C++ IIS 模块构建的 ReST Web 服务的应用程序。

我们需要能够支持 2 个身份验证策略:

  • 内部用户可以直接从另一个客户端应用程序(比如在 Silverlight 或 Java 中实现)内部调用我们的 ReST 端点,他们已经针对内部单点登录提供程序进行身份验证,提供安全令牌作为 HTTP 调用的一部分。

  • 为了测试,我们希望允许用户使用浏览器访问 ReST 端点,因此我们需要允许他们通过输入用户名/密码来进行身份验证(我们将检查单点登录提供的网络服务器)。为此,我们正在考虑使用 ASP.NET Forms 或 Digest。

(所以在一种情况下,用户已经通过身份验证 - 但我们需要为每次调用验证这一点,在另一种情况下,我们需要质询他们以提供凭据)

问题是如何支持这两种场景。

我找不到适用于这两种情况的解决方案:

  • 如果我收到来自应用程序(非浏览器)的调用并且令牌丢失,我无法将它们重定向到 login.aspx,因为调用我们的应用程序不知道如何处理一堆HTML(登录表单)。我需要返回响应码 401。

  • 1234563

以前有人遇到过这个问题吗?

提前致谢。

附:一些 Web 服务将在 C++ 中实现这一事实使事情变得复杂,但如果我们使用表单身份验证,至少我可以使用集成管道并为原生模块使用表单。

【问题讨论】:

    标签: c# asp.net iis authentication


    【解决方案1】:

    我们将使用 HTTP 标头实现多种身份验证方案,每种客户端类型都会响应它支持的挑战。

    例如:

    • 客户端请求资源
    • 服务器响应 401 和 WWW-Authenticate: Basic, Custom Realm: secure area
    • 浏览器可以根据基本访问身份验证(例如)使用凭据进行响应
    • 来自其他应用程序中已对用户进行身份验证的调用将使用“自定义”身份验证方案提供令牌。

    我们还将在 .NET 中创建一个自定义身份验证 HttpModule 实现,它将用于整个网站(包括用 c++ 实现的应用程序)。

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2013-07-24
      • 2020-10-21
      • 2022-10-25
      相关资源
      最近更新 更多