gpt4 book ai didi

c# - 在 ASP.NET 4 Web 应用程序中支持多种身份验证策略

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:33 25 4
gpt4 key购买 nike

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

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

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

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

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

问题是如何支持这两种情况。

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

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

  • 但是,如果我接到来自未经过身份验证的 Web 浏览器的调用,我无法在不向用户提供输入其凭据的可能性的情况下返回 401。

有没有人遇到过这个问题?

提前致谢。

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

最佳答案

我们将使用 HTTP header 实现多种身份验证方案,并且每种客户端类型都将响应其支持的质询。

例如:

  • 客户请求资源
  • 服务器返回 401 和 WWW-Authenticate:基本,自定义领域:安全区域
  • 浏览器可以根据基本访问认证(例如)以凭据响应
  • 来自已验证用户身份的其他应用程序内的调用将使用“自定义”身份验证方案提供 token 。

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

关于c# - 在 ASP.NET 4 Web 应用程序中支持多种身份验证策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4996780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com