0

我目前正在构建 WCF Web 服务,我被要求通过 HTTPS 使用基本身份验证,并验证用户是否存在于 LDAP 组中以进行授权。

我在互联网上搜索,据说 IIS 中没有 Active Directory 身份验证,我们应该使用我们自己的自定义基本身份验证模块或 UserNamePasswordValidator。 我用于编码自定义身份验证模块的链接 我已经在本地 IIS 中使用 SSL 托管了 WCF,现在它在 https 下运行。

问题是,如果我实现这个,我似乎需要手动添加 Authorization 标头。有没有其他方法可以让我们在浏览器中打开服务时显示的基本身份验证对话框中输入用户名或密码?

或者您能否就实施上述安全性需要做些什么提供建议?我很无奈,请求你的帮助!!!!提前致谢。

背景:我也尝试了 UserNamePasswordValidator,但它是在应用程序级别执行的,我能够查看 wsdl 文件(甚至不提供凭据的 Web 服务的元数据),所以我确实使用了自定义基本身份验证模块。

使用自定义基本身份验证模块,它会在浏览器中打开 svc 之前要求提供凭据。所以我认为这将是最好的套件。请提出您宝贵的建议。

4

1 回答 1

0

基本身份验证由 Web 服务器返回 401.0 状态代码和值为 'Basic real="xxx"' 的 WWW-Authenticate 响应标头工作,其中领域只是向用户显示的简单信息,以便他们了解要求进行身份验证的内容. 当浏览器收到这种类型的响应时,它会向用户显示一个对话框,要求用户输入用户名/密码。然后浏览器重新提交最初请求的 URL,但还包括一个“授权”标头,其值是包含用户名和密码的 base64 编码字符串。

IIS 的自定义身份验证模块基本上必须处理这种交互。对于每个传入的请求,它需要查看是否有“授权”标头,如果有,它会提取用户名/密码,以它喜欢的任何方式对其进行身份验证,如果成功则设置 Context.User。如果没有 'Authorization' 标头,或者用户名/密码无效,则模块必须将响应代码设置为 401.0,并确保有 WWW-Authenticate 标头(如上所述)。

为了使用该模块,必须禁用 IIS 中的所有其他身份验证模块(尽管似乎在某些情况下应该启用匿名身份验证模块)。由于 IIS 中的缓存,如果不是所有请求都传递到您的身份验证模块,请不要感到惊讶。

于 2013-11-06T05:57:16.080 回答