我正在重构一个有效的ASP.NET Web应用程序,以使用ASP.NET Web Service公开Web服务接口.根据Web服务身份验证 - 最佳实践,基本身份验证通过https是可行的方法.让我们假设它是,而不是做WS-Security,X509等.
在.NET 3.5/VS 2008上,实现自定义http基本身份验证(非Windows帐户)的最简单方法是什么,例如,只接受用户名为"foo"且密码为"bar"的情况.最终,我想要Thread.CurrentPrincipal
设定.
我是自己编写HttpModule
还是可以更简单?
可能使用IIS的自定义基本身份验证,由Dominick Baier编写是要走的路.正如他指出 WCF 3.5的运输安全上的用户名不能用于IIS托管的服务,尽管我的问题是关于ASP.NET Web服务而不是WCF.
有一个称为HTTP模块的另一种实现方式在ASP.NET基本身份验证对自定义数据源的桑托斯Sahoo.
虽然这不是我想要的,但我发现QuickStart Tutorial的SOAP Headers示例是信息丰富的解决方法.通过http以纯文本发送密码显然不安全,但是可以扩展此示例以增加更多安全性,例如在https上运行或发送"密码+一次性GUID +时间戳"的散列.