我可以使用 IIS 为另一个网站进行 ActiveDirectory 单点登录吗?

我可以使用 IIS 为另一个网站进行 ActiveDirectory 单点登录吗?

我正在尝试向现有 SOAP 服务器添加 Active Directory 单点登录支持。可以配置服务器以接受受信任的反向代理,并对经过身份验证的用户使用 X-Remote-User HTTP 标头。我想将 IIS 配置为该服务的受信任代理,以便它处理 SOAP 服务器的所有 Active Directory 身份验证。

基本上,IIS 必须接受端口 X 和 URL Y 上的 HTTP 连接,执行所有身份验证,然后将连接代理到不同的服务器(很可能是相同的 X 和 Y)。

不幸的是,我对 IIS 或 AD 一无所知(因此我正尽力学习足够的知识来构建此解决方案),所以请温柔一点。我认为这并不罕见,那么有没有什么简单的方法可以做到这一点?

  1. 这种功能是否内置于 IIS 中,还是我需要自己构建某种 IIS 代理程序?

  2. 除了要求 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 联合身份验证服务。它可以提供单点登录。

http://msdn.microsoft.com/en-us/magazine/cc163520.aspx

答案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 平台。

相关内容