2013-04-16 3 views
6

मैं NodeJS अनुप्रयोग में एक खिड़कियों उपयोगकर्ता को प्रमाणित करना चाहते हैं। क्या इसके लिए अभी तक कोई ऐड-ऑन है? node-krb5 है लेकिन यह अभी तक विंडोज का समर्थन नहीं करता है।NodeJS या ExpressJS विंडोज प्रमाणीकरण

उत्तर

0

मैंने इस के लिए एक ब्लॉग पोस्ट जोड़ा है http://hadenoughpi.wordpress.com/2013/04/16/node-js-windows-authentication-using-edgejs/ मुझे आशा है कि यह सही तरीकों में से एक है।

+1

यह विंडोज़ प्रमाणन जो एकल प्रवेश है के प्रयोजन को हरा दिया। आपके समाधान के लिए उपयोगकर्ता नाम, डोमेन और पासवर्ड गुजरना आवश्यक है। –

3

आप iisnode https://github.com/auth0/passport-windowsauth अच्छी तरह से काम करता है के साथ आईआईएस पर होस्ट करते हैं! पासपोर्ट windowsauth एक विज्ञापन एकीकरण के साथ आता है, लेकिन यदि आप केवल क्रम में उपयोगकर्ता नाम चाहते हैं अपने खुद के authorzation तर्क लागू करने के लिए आप इस

web.config है जैसे कि यह कर सकते हैं:

<system.webServer> 
    <iisnode promoteServerVars="LOGON_USER" /> 
</system.webServer> 

server.js:

var passport = require('passport'); 
var WindowsStrategy = require('passport-windowsauth'); 

app.use(passport.initialize()); 
app.use(passport.session()); 

passport.serializeUser(function(user, done) { 
    done(null, user); 
}); 

passport.deserializeUser(function(user, done) { 
    done(null, user); 
}); 

passport.use(new WindowsStrategy({ 
    integrated: true 
}, function(profile,done) { 
    var user = { 
     id: profile.id, 
    }; 
    done(null, user); 
})); 

app.all("*", passport.authenticate("WindowsAuthentication"), function (request,response,next){ 
    next(); 
}); 

तो आप अपने अन्य मार्गों में अनुरोध वस्तु पर उपयोगकर्ता आईडी का उपयोग कर सकते हैं:

app.get("/api/testAuthentication", function(request, response){ 
    console.log(request.user.id + " is authenticated"); 
}); 
app.get("/api/testAuthorization", hasRole("a role"), function(request, response, next){ 
    console.log(request.user.id " is authenticated and authorized"); 
}); 

जहां hasRole इस तरह दिखता है:

function hasRole(role) { 
    return function(request,response,next){ 
     //your own authorzation logic 

     if(role == "a role") 
      next(); 
     else 
      response.status(403).send(); 
    } 
} 
+0

लेकिन जब हम आईआईएस के पीछे नोड डालते हैं, तो हमने बहुत सारे नोड लाभ खो दिए! – DaNeSh

+0

मैं प्रतिक्रिया 'ब्राउज़र में यूआरएल से (request.user.id)' प्राप्त करने में सक्षम हूँ। लेकिन जब मैं एक ही यूआरएल तक पहुंचने की कोशिश कर रहा हूं, तो मुझे त्रुटि अनधिकृत त्रुटि मिल रही है। मुझे पता है कि यह पोस्ट पुराना है लेकिन यदि संभव हो, तो क्या आप कोई उदाहरण साझा कर सकते हैं जहां आपने इस तरह की चीज का उपयोग किया है? –

0

node-sspi:अगर आप उपयोगकर्ता आईडी का उपयोग कर अपनी खुद की प्राधिकरण तर्क लागू करना चाहते हैं तो आप इस तरह एक मिडलवेयर समारोह को परिभाषित कर सकते यह आसान और कुशल पाया उपयोग करने के लिए।

https://www.npmjs.com/package/node-sspi

संबंधित मुद्दे