Windows kullanıcı kimliğini NodeJS
uygulamasında doğrulamak istiyorum. Bunun için herhangi bir eklenti var mı? node-krb5
var, ancak henüz pencereleri desteklemiyor.Nodejs veya ExpressJS Windows Kimlik Doğrulaması
cevap
Bunun için bir blog yazısı ekledim http://hadenoughpi.wordpress.com/2013/04/16/node-js-windows-authentication-using-edgejs/ Umarım bu doğru yollardan biridir.
Iisnode https://github.com/auth0/passport-windowsauth ile IIS üzerinde barındırıyorsanız güzel çalışır! Pasaport-windowsauth bir reklam entegrasyonu ile geliyor ancak amacıyla yalnızca kendi authorzation mantığı uygulamak adını isterseniz bu
web.config gibi yapabilirsiniz:
<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();
});
o zaman diğer yolları istek nesne üzerinde kimliği erişebilir:
app.get("/api/testAuthentication", function(request, response){
console.log(request.user.id + " is authenticated");
});
function hasRole(role) {
return function(request,response,next){
//your own authorzation logic
if(role == "a role")
next();
else
response.status(403).send();
}
}
Ancak, IIS'nin arkasında düğümü belirlediğimizde, birçok Node avantajı kaybederiz! – DaNeSh
Tarayıcıdaki URL'den '(request.user.id)' yanıtını alabiliyorum. ancak aynı URL’ye erişmeye çalıştığımda hata alıyorum Yetkisiz hata. Bu yazının eski olduğunu biliyorum ama mümkünse, bu tür bir şeyi kullandığınız herhangi bir örneği paylaşabilir misiniz? –
node-sspi
: hasRole şöyle
app.get("/api/testAuthorization", hasRole("a role"), function(request, response, next){
console.log(request.user.id " is authenticated and authorized");
});
: Eğer kullanıcı kimliği kullanarak kendi yetkilendirme mantığı uygulamak istiyorsanızBöyle bir katman işlevi tanımlayabilirsiniz kolay ve verimli buldum kullanmak.
Bu tek işaretidir pencereler auth amacı yendi. Çözümünüz kullanıcı adı, alan adı ve şifreyi gerektiriyor. –