2013-04-16 23 views

risposta

3

Se l'host su IIS con iisnode https://github.com/auth0/passport-windowsauth funziona bene! tessera windowsauth è dotato di un'integrazione annuncio, ma se si desidera solo il nome utente al fine di attuare la propria logica authorzation si può fare in questo modo

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(); 
}); 

allora è possibile accedere al userid sull'oggetto richiesta nelle altre vie:

app.get("/api/testAuthentication", function(request, response){ 
    console.log(request.user.id + " is authenticated"); 
}); 

se si desidera implementare la propria logica di autorizzazione utilizzando l'ID utente è possibile definire una funzione middleware come questo:

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

dove hasRole assomiglia a questo:

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

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

Ma quando mettiamo il nodo dietro IIS, perdiamo molti vantaggi del nodo! – DaNeSh

+0

Sono in grado di ottenere la risposta '(request.user.id)' da Url nel browser. ma quando sto cercando di accedere allo stesso URL, ricevo errore Errore non autorizzato. So che questo post è vecchio ma, se possibile, puoi condividere qualche esempio in cui hai usato questo genere di cose? –