【问题标题】:WCF over HTTPS Basic Authentication with LDAPWCF over HTTPS 使用 LDAP 的基本身份验证
【发布时间】:2013-10-24 10:00:15
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: https ldap basic-authentication


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2012-01-03
      • 2012-01-30
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      相关资源
      最近更新 更多