我正在尝试向现有 SOAP 服务器添加 Active Directory 单点登录支持。可以配置服务器以接受受信任的反向代理,并对经过身份验证的用户使用 X-Remote-User HTTP 标头。我想将 IIS 配置为该服务的受信任代理,以便它处理 SOAP 服务器的所有 Active Directory 身份验证。
基本上,IIS 必须接受端口 X 和 URL Y 上的 HTTP 连接,执行所有身份验证,然后将连接代理到不同的服务器(很可能是相同的 X 和 Y)。
不幸的是,我对 IIS 或 AD 一无所知(因此我正尽力学习足够的知识来构建此解决方案),所以请温柔一点。我认为这并不罕见,那么有没有什么简单的方法可以做到这一点?
这种功能是否内置于 IIS 中,还是我需要自己构建某种 IIS 代理程序?
除了要求 IIS 之外,是否有更好的选项来完成身份验证和 X-Remote-User HTTP 标头设置?
更新:
例如,我想创建的是:
[CLIENT] [IIS] [AD] [SOAP-SERVER]
1. |---------------->|
2. |<--------------->|<---------->|
3. |--------------------------->|
4. |<---------------------------|
5. |<----------------|
1. POST to http://example.com/foo/bar.cgi
2. Client is not authenticated, so do authentication
3. Once validated, send request to server (X-Remote-User: {userid})
4. Process request, send response
5. Forward response to client
我需要知道如何配置 IIS 以使用 AD 自动对用户进行身份验证,然后将请求代理到实际服务器,并在 X-Remote-User HTTP 标头中发送用户 ID。
答案1
最简单的解决方法是使用 ISA 服务器(或 Forefront TMG)作为网站的反向代理。您可以为网站配置 ISA 规则,以通过 AD 验证用户访问。
您还可以从网站操作主机标头,并且应该能够通过网站规则的 HTTP 策略选项实现您想要的操作。
我不相信您需要的功能在 IIS 中可用。
答案2
我建议你看一下运行 Active Directory 联合身份验证服务。它可以提供单点登录。
答案3
就像 Apache 可以使用模块做类似的事情一样,IIS 也可以这样做 - 但是,它本身并没有内置任何允许反向代理行为的东西。
您可以通过 URL 重写和应用程序请求路由模块获得一些类似反向代理的行为。我不知道您是否可以让它修改标头。有关更多信息,请参阅此博客文章:http://blogs.iis.net/wonyoo/archive/2008/07/09/application-request-routing-arr-as-a-reverse-proxy.aspx
您还可以部署功能类似的自定义代码。请参阅本文以获取示例实现,尽管您的结果可能并不完全符合您的预期 - 这实际上是一个比仅仅通过中间人在网上转移比特更难的问题:http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx
实际上,对于反向代理,您应该查看 ISA 服务器以坚持使用 MS 平台。