【发布时间】:2021-01-12 19:37:47
【问题描述】:
我正在尝试使用 express 在 Node JS 中使用 passport-azure-ad-oauth2 对我的 Azure Web 应用程序进行身份验证
我已尝试遵循此处找到的文档:https://github.com/auth0/passport-azure-ad-oauth2。我相信我已经得到了正确的客户端 ID、秘密和回调 URI...
当我去localhost:3000时,它成功重定向到Office365登录。当我选择预先选择的帐户时,它只是不断循环回到“选择帐户”
当尝试在 Chrome 中使用隐身窗口登录时,它给了我错误:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:'***appID'。
我的代码显然是错误的,希望有人能够帮助我正确设置它。
提前致谢!!
我的代码在这里
const express = require("express");
const bodyParser = require("body-parser")
const session = require('express-session');
const passport = require("passport");
const ejs = require("ejs");
const jwt = require("jwt-simple")
const AzureAdOAuth2Strategy = require('passport-azure-ad-oauth2').Strategy;
const app = express();
app.use(express.static("public"));
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(passport.initialize());
app.use(bodyParser.urlencoded({ extended: false }));
passport.use(new AzureAdOAuth2Strategy({
clientID: 'azure client ID',
clientSecret: 'secret',
callbackURL: 'http://localhost:3000/auth/aad/callback',
// resource: '00000002-0000-0000-c000-000000000000',
// tenant: 'contoso.onmicrosoft.com'
},
function (accessToken, refresh_token, params, profile, done) {
var waadProfile = profile || jwt.decode(params.id_token, '', true);
console.log(waadProfile);
User.findOrCreate({ id: waadProfile.upn }, function (err, user) {
done(err, user);
});
}));
app.get("/",passport.authenticate('azure_ad_oauth2'));
app.get('/auth/aad/callback',
passport.authenticate('azure_ad_oauth2', { failureRedirect: '/login' }),
function (req, res) {
console.log(req);
console.log(res);
res.render('index');
});
app.listen(process.env.PORT || 3000, function() {
console.log("Server started on Port 3000");
});
【问题讨论】:
标签: node.js azure express oauth-2.0 passport.js