【问题标题】:Access to azure web-app using passport-azure-ad-oauth2使用 passport-azure-ad-oauth2 访问 azure web-app
【发布时间】: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


    【解决方案1】:

    您代码中的回调 URL 与 Azure 上设置的不同。

    这就是为什么它说:

    请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:“***appID”。

    在 Azure 上设置正确的 URL 以解决此问题。

    对于无限重定向问题,清除浏览器中的缓存和cookie,它应该可以工作。

    但是,如果您不更正回调 URL,它将再次发生。

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 1970-01-01
      • 2020-05-10
      • 2023-03-19
      • 1970-01-01
      • 2021-12-13
      • 2020-11-29
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多