मैं एक्सप्रेस का उपयोग कर नोड जे एस में पासपोर्ट-नीला-विज्ञापन-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");
});
1 उत्तर
आपके कोड में कॉलबैक URL Azure पर एक सेट के समान नहीं है।
इसलिए कहते हैं:
अनुरोध में निर्दिष्ट उत्तर URL एप्लिकेशन के लिए कॉन्फ़िगर किए गए उत्तर URL से मेल नहीं खाता: '***appID'।
इसे ठीक करने के लिए Azure पर सही URL सेट करें।
अनंत पुनर्निर्देशन समस्या के लिए, अपने ब्राउज़र में कैश और कुकी साफ़ करें और इसे काम करना चाहिए।
हालांकि, अगर आप कॉलबैक यूआरएल को सही नहीं करते हैं, तो यह फिर से होने वाला है।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।