我正在使用passport-saml
进行身份验证。为此我安装了
npm install passport passport-saml --save
我已使用此博客Auth0创建了我的IDP。
初始化护照和定义的saml策略
app.use(passport.initialize());
passport.use(new passportSaml.Strategy(
{
path: "/login/callback",
entryPoint: "https://qpp1.auth0.com/samlp/bZVOM5KQmhyir5xEYhLHGRAQglks2AIp",
issuer: "passport-saml",
// Identity Provider's public key
cert: fs.readFileSync("./src/cert/idp_cert.pem", "utf8"),
},
(profile, done) => {
console.log("Profile : ",profile);
let user = new Profile({ id: profile["nameID"], userName: profile["http://schemas.auth0.com/nickname"] });
return done(null, user);
}
));
以下是路线
app.get("/login",
passport.authenticate("saml", (err, profile) => {
// control will not come here ????
console.log("Profile : ", profile);
})
);
app.post("/login/callback",
(req, res, next) => {
passport.authenticate("saml", { session: false }, (err, user) => {
req.user = user;
next();
})(req, res, next);
},
RouteHandler.sendResponse
);
现在这个工作正常,但我有一些问题
1)issuer
在saml策略中的含义
2)为什么我需要在两个URL映射中使用passport.authenticate
。我不明白为什么在/login/callback
请求中需要它。甚至控制也不会来/login
请求我在passport.authenticate
方法中传递的函数?
这背后的逻辑是什么?这在任何情况下都有用吗?
答案 0 :(得分:3)
我们正在完成多租户的护照saml实施。通过我们的研究,测试和开发周期,我们发现了以下内容:
要了解如何与我们的应用程序集成,我们首先使用IdP启动的ACS回调流程。我们与之整合的第一个客户取得了成功。但是,他们提出的第一个问题是,对于SP发起的流程,我们应该使用哪个URL? :-)之后,我能够使SP启动的流程正常工作。
我已经使用Salesforce开发人员和SSO Circle作为测试IDP对其进行了测试。
希望这会有所帮助。