我正在重构一个工作的 ASP.NET Web 应用程序,以使用 ASP.NET Web 服务公开 Web 服务接口(interface)。根据Web Services authentication - best practices ,通过 https 进行基本身份验证是可行的方法。让我们假设是这样,而不是进行 WS-Security、X509 等。
在 .NET 3.5/VS 2008 上,实现自定义 http 基本身份验证(非 Windows 帐户)的最简单方法是什么,例如,仅在用户名是“foo”且密码是“bar”时接受。最终,我想要设置Thread.CurrentPrincipal
。
我应该编写自己的 HttpModule
还是可以更简单地完成?
最佳答案
可能使用 Custom Basic Authentication for IIS ,作者 Dominick Baier是要走的路。 As he points out尽管我的问题是关于 ASP.NET Web 服务而不是 WCF,但 WCF 3.5 的传输安全性用户名不能在 IIS 托管服务上使用。
HTTP 模块的另一个实现称为 Basic authentication in ASP.NET against custom datasource通过 Santosh Sahoo .
虽然不是我想要的,但我找到了QuickStart Tutorial's SOAP Headers sample提供信息丰富的解决方法。通过 http 以纯文本形式发送密码显然是不安全的,但可以扩展此示例以增加更多安全性,例如在 https 上运行或发送“密码 + 一次性 GUID + 时间戳”的哈希值。
关于asp.net - .NET 3.5/VS 2008 上 ASP.NET Web 服务的自定义 HTTP 基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/490627/