Я реализую единый вход на основе SAML с nodejs, используя express и passport-saml для GSuite.Я могу настроить первую часть и получить passport-saml, чтобы перенаправить меня на страницу входа в Google.Но я застрял в отношении URL-адреса ACS и идентификатора, который gsuite попросил меня завершить настройку.Поэтому, когда я захожу на страницу входа в Google, я получаю 503 от Google.Я думаю, что вроде понимаю, как работает SAML, но я работаю с ним впервые, поэтому я могу быть совершенно неправ.
После долгих исследований я наткнулся на этот ответ , но я не уверен, что понимаю его хорошо.Он говорит, что я могу использовать те же URL-адреса, которые я установил для параметров 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
, я не сделалпреднамеренно положить его в паспорт.
Может кто-нибудь объяснить мне, что мне нужно установить для URL-адреса ACS и идентификатора сущности в Gsuite?Я думаю, что понял, что URL ACS должен возвращать XML с моей служебной информацией, но я не могу понять, как его сгенерировать.
Спасибо