我正在使用 GSuite 的 express 和 passport-saml 使用 nodejs 实现基于 SAML 的 SSO。我可以配置第一部分并让 passport-saml 将我重定向到谷歌登录页面。但是我对 gsuite 要求我完成配置的 ACS url 和身份 ID 感到困惑。因此,当我在谷歌登录页面上登录时,我最终得到了来自谷歌的 503。我想我有点理解 SAML 的工作原理,但我是第一次使用它,所以我可能完全错了。
经过大量研究,我遇到了这个答案,但我不确定我是否理解得很好。它说我可以使用为护照path
和参数设置的相同网址callback
这是我的护照配置的样子:
passport.use(
new SamlStrategy(
{
protocol: "https://",
path: "/auth/saml/callback",
entryPoint: "https://accounts.google.com/o/saml2/idp?idpid=XXXXXX",
issuer: "https://accounts.google.com/o/saml2?idpid=XXXXXX",
cert: fs
.readFileSync("./cert.pem", "utf-8")
.replace("-----BEGIN CERTIFICATE-----", "")
.replace("-----END CERTIFICATE-----", "")
.replace(/\n$/, "")
},
function(profile, done) {
done(null, {
email: profile.email,
name: profile.name
});
}
)
);
在这里我的护照相关路线是如何配置的:
app.post(
"/auth/saml/callback",
passport.authenticate("saml", {
failureRedirect: "/error",
failureFlash: true
}),
function(req, res) {
res.redirect("/logged");
}
);
app.get(
"/login/saml",
passport.authenticate("saml", {
failureRedirect: "/login/saml"
}),
function(req, res) {
res.redirect("/");
}
);
/login/saml
是我用来调度我想与护照一起使用的配置的路线,因为我正在使用MultiSamlStrategy
,我没有故意把它放在护照中。
有人可以解释一下我需要为 Gsuite 中的 ACS url 和 Entity ID 设置什么吗?我认为了解 ACS url 必须返回带有我的服务信息的 XML,但我不明白如何生成它。
谢谢