2013-10-24 65 views
0

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

我在因特网中搜索到了,据说Active Directory身份验证在IIS中不可用,我们应该使用我们自己的自定义基本身份验证模块或UserNamePasswordValidator。 Link I used for coding Custom Authentication Module 我已经在本地IIS中使用SSL托管了WCF,现在它正在https下运行。

问题是,如果我实现这一个,我需要手动添加授权标题看起来。在浏览器中打开服务时显示的基本认证对话框中是否有其他方式可以获取用户名或密码?

或 可否请您提供一些建议,说明我需要做些什么来实施上述安全措施? 我很无奈,请求你的帮助!!!!。提前致谢。我也尝试了UserNamePasswordValidator,但它在应用程序级别执行,我能够查看wsdl文件(Web服务的元数据,甚至不提供证书),所以我没有使用自定义基本身份验证模块。

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

回答

0

基本认证的工作原理是网络服务器返回一个401.0状态代码和一个WWW-Authenticate响应头,其值为'Basic real =“xxx”',其中领域只是显示给用户的信息,以便他们了解什么是要求认证。当浏览器收到这种类型的响应时,它会向用户显示一个对话框,询问用户名/密码。然后浏览器重新提交最初请求的URL,但还包括一个'Authorization'头,其值是一个base64编码的字符串,其中包含用户名和密码。

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

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