好了,大师们,我需要一些帮助/理解这里发生的事情。我正在利用passport和passport-saml为我的应用程序进行单点登录。我已经能够在我的开发机器上本地工作,但是当我部署到我们的临时服务器时,有些地方出了问题,并且没有利用我配置的entryPoint URL……
示例代码:
return new Strategy(
{
callbackUrl: "https://my.domain.com/staging/api/login/callback",
entryPoint: "https://my.idp.com/affwebservices/public/saml2sso",
issuer: "my.domain.com",
cert: "THE SECRET SAUCE"
},
function(profile, done) {
// .....
}
)
// ROUTES ----------------------------------------------------------------------
app.get('/api/login', passport.authenticate("saml", { successRedirect: '/', failureRedirect: '/login' }) );
app.post('/api/login/callback', passport.authenticate("saml", { failureRedirect: '/', failureFlash: true }), (request, response) => {
// .....
});如上所述,当我在本地运行它时,它可以工作,并且我看到发出了以下SAML请求:
https://my.idp.com/affwebservices/public/saml2sso?SAMLRequest=.....但是,部署后,entryPoint URL域将被分段域覆盖:
https://my.domain.com/affwebservices/public/saml2sso?SAMLRequest=.....我注意到生成的请求是对my.domain.com的授权,而不是使用my.idp.com:

我要说的是,开发服务器和暂存/生产服务器之间的唯一区别是,暂存/生产服务器利用IIS作为反向代理,根据URL字符串(即my.domain.com/production、my.domain.com/staging)来路由传入流量。我已经在节点服务器上启用了CORS,这就是我首先让它在开发服务器上工作的方式,并尝试配置IIS以允许它……
在这一点上被难住了。有什么想法吗?
发布于 2021-07-09 02:03:28
经过足够的努力,我找到了一个解决问题的方法。正如怀疑的那样,它是与IIS一起使用的,而我实现的解决方案是URL重定向:

我不知道这是否是最健壮的解决方案;因此,如果其他人偶然发现了这一点,请随时联系。无论哪种方式,这都是可行的。
https://stackoverflow.com/questions/68304042
复制相似问题