基于HTTPS的WCF基本身份验证与LDAP

时间:2013-10-24 10:00:15

标签: https ldap http-basic-authentication

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

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

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

OR 能否请您就实施上述安全措施需要做些什么提供建议? 我很无奈,请求你的帮助!!!!在此先感谢。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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