首页 > 解决方案 > 使用 Nodejs 和 IIS 进行 Windows 身份验证;获取用户名的问题

问题描述

我正在尝试使用 IIS 设置 NodeJS Web 应用程序以首先使用 Windows 身份验证,如果未找到,可以使用匿名身份验证来访问该网站。

在这篇文章https://github.com/tjanczuk/iisnode/issues/87之后,我将“ IIS 服务器变量提升为 X-iisnode-* HTTP 请求标头”,您可以在下面的配置文件中看到。

问题是这样的:当 IIS 中的匿名身份验证关闭时,所有域用户都得到了正确的身份验证,但匿名用户根本无法访问该网站。
当我打开匿名身份验证时,所有用户都匿名访问,并且变量 auth_user 总是返回为空。

有没有办法告诉 IIS,首先强制执行 Windows 身份验证,如果不是域用户然后使用匿名身份验证?

我在 Windows 2012 服务器、iisnode、IIS 8 中运行 NodeJS 应用程序

<configuration>
  <system.webServer>

    <handlers>
      <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
    </handlers>

    <rewrite>
      <rules>
        <rule name="app">
          <match url="^/*" />
          <action type="Rewrite" url="app.js" logRewrittenUrl="false" />
        </rule>
      </rules>
            <rewriteMaps>
                <rewriteMap name="http://website/">
                    <add key="http://website/" value="192.168.10.1/" />
                </rewriteMap>
            </rewriteMaps>
    </rewrite>

    <iisnode promoteServerVars="AUTH_USER,AUTH_TYPE" />

  </system.webServer>
</configuration>

我还尝试使用 node-sspi 来获取用户的信息,当我在独立模式下运行应用程序时它有效,当我尝试在 IIS 后面运行它时它失败了......有人试过这个吗?

标签: node.jsiishttp-headerssingle-sign-oniisnode

解决方案


推荐阅读