मैं एक्सप्रेस का उपयोग कर नोड जे एस में पासपोर्ट-नीला-विज्ञापन-oauth2 के साथ अपने Azure वेब अनुप्रयोग प्रमाणित करने के लिए कोशिश कर रहा हूँ

मैंने यहां मिले दस्तावेज़ों का पालन करने की कोशिश की है: https://github.com/ auth0/passport-azure-ad-oauth2. मेरा मानना ​​​​है कि मुझे क्लाइंट आईडी, गुप्त और कॉलबैक यूआरआई सही मिल गया है ...

जब मैं लोकलहोस्ट: 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");
  });
0
b.b.89 12 जिंदा 2021, 14:33

1 उत्तर

सबसे बढ़िया उत्तर

आपके कोड में कॉलबैक URL Azure पर एक सेट के समान नहीं है।

इसलिए कहते हैं:

अनुरोध में निर्दिष्ट उत्तर URL एप्लिकेशन के लिए कॉन्फ़िगर किए गए उत्तर URL से मेल नहीं खाता: '***appID'।

इसे ठीक करने के लिए Azure पर सही URL सेट करें।

अनंत पुनर्निर्देशन समस्या के लिए, अपने ब्राउज़र में कैश और कुकी साफ़ करें और इसे काम करना चाहिए।

हालांकि, अगर आप कॉलबैक यूआरएल को सही नहीं करते हैं, तो यह फिर से होने वाला है।

1
Aviv Lo 12 जिंदा 2021, 14:37