如何将IIS配置为仅接受来自网络上其他服务器和组的请求?

时间:2014-05-14 15:17:44

标签: asp.net iis iis-7 servicestack windows-authentication

我试图锁定内部网上的一些http网络服务。这些是在iis7上运行的servicestack 3服务。 iis7通过asp.net在外部(dmz)Web服务器上访问它们。

我唯一希望的是,只有选定的人/群组和某些机器才能访问它们。

我将IIS配置为使用Windows身份验证,该身份验证适用于用户和组。

我遇到的麻烦是我不想将用户/密码硬编码到外部网络服务器的代码或配置文件中。该机器不在公司域中。

有没有办法,使用Windows身份验证,让我们的外部服务器在没有硬编码的情况下对内部服务器进行身份验证?

对于外部服务器上的asp.net服务客户端,我使用以下代码尝试设置凭据:

var client = new JsvServiceClient(Settings.Default.API);
            client.LocalHttpWebRequestFilter += (request) =>
            {
                var setting = ServiceSettings.Settings.Services["PortalAPI"];
                request.Credentials = CredentialCache.DefaultCredentials;
            };
            return client;

如果我使用new NetworkCredentials(user,pass)并将其传递给有效帐户,这似乎有效。我想我不知道使用CredentialCache.DefaultCredentialsCredentialCache.DefaultNetworkCredentials传递了哪些凭据,因此我不知道要将哪些凭据放在该服务的web.config上以限制只能访问它们。

在服务方面,我尝试了各种设置以允许访问:

<authentication mode="Windows" />
<authorization>
  <allow users="NT AUTHORITY\NETWORK SERVICE"/>
  <deny users="*" />
</authorization>

<authorization>
  <allow roles="BUILTIN\Administrators"/>
  <deny users="*" />
</authorization>

我需要允许谁允许来自我的外部服务器的IIS有权访问,但除非另有说明,否则没有其他用户?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为我有以下需要:

<authorization>
  <allow roles="BUILTIN\\IIS_IUSRS"/>
  <deny users="*" />
</authorization>