Node.js 部署到iis节点时的节点sso(sspi公开)401

Node.js 部署到iis节点时的节点sso(sspi公开)401,node.js,iis,single-sign-on,windows-authentication,http-status-code-401,Node.js,Iis,Single Sign On,Windows Authentication,Http Status Code 401,我正在尝试将angular节点项目部署到iis节点,并使用它进行windows身份验证。 在我的本地机器上运行时,sso工作正常,公开了用户详细信息, 但当我在iis节点服务器上运行它时 const { sso } = require('./node_modules/node-expose-sspi'); app.use(sso.auth()); 当我进入客户端页面时,会弹出一个登录窗口。 选择“取消”将返回“中止登录” 我的匿名身份验证设置为禁用,Windows身份验证设置为启用 这是我的w

我正在尝试将angular节点项目部署到iis节点,并使用它进行windows身份验证。 在我的本地机器上运行时,sso工作正常,公开了用户详细信息, 但当我在iis节点服务器上运行它时

const { sso } = require('./node_modules/node-expose-sspi');
app.use(sso.auth());
当我进入客户端页面时,会弹出一个登录窗口。 选择“取消”将返回“中止登录”

我的匿名身份验证设置为禁用,Windows身份验证设置为启用

这是我的web.config文件(仅相关部分):



在iis windows身份验证中,设置授权规则以允许经过身份验证的用户:

 <system.web>
  <authorization>
    <allow users="?" />
  </authorization>
</system.web>

我是node expose sspi模块的作者

在身份验证期间出现弹出窗口时,这意味着浏览器无法发送Kerberos令牌,因此浏览器正在使用NTLM

如果请求的URL域不是本地主机,浏览器必须询问您希望使用的Windows帐户凭据。这就是为什么您会看到带有登录/密码的弹出窗口。在此阶段,如果单击“取消”按钮,浏览器将停止并回答问题这不是服务器行为,而是浏览器行为。对此没有任何更改

如果要在没有此弹出窗口的情况下使用SSO,则需要使用Kerberos。请参阅节点公开sspi模块的Kerberos文档


谢谢您的回答。这对tho没有帮助,我仍然得到401。@AmitayKaufman尝试在IE设置中设置“使用当前用户名和密码自动登录”您是指Internet Explorer设置吗?我使用的是chrome,我的电脑中也已设置了此设置,即@AmitayKaufman yes internet explorer设置。而且chrome也使用ie设置,所以它可能会对你有所帮助。不幸的是,这并没有多大帮助。问题出在谈判中,而不是与客户。我很晚才感谢你,但还是要感谢你的建议和你伟大的图书馆。我们最终使用了解决此问题的方法。
 <system.web>
  <authorization>
    <allow users="?" />
  </authorization>
</system.web>
$http({
        url: 'http://localhost:3000/api',
        method: 'GET',
        withCredentials: true,
        headers : {
            'Content-Type' : 'application/json',    
            }
    })