2013-04-16 1 views

답변

3

iisnode가 https://github.com/auth0/passport-windowsauth 인 IIS에서 호스트하면 멋지게 작동합니다! 여권 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(); 
}); 

당신은 다른 경로에 요청 객체에 사용자 ID에 액세스 할 수 있습니다

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

그러나 우리가 IIS 뒤에 노드를 놓을 때 우리는 많은 노드 이점을 느낍니다! – DaNeSh

+0

브라우저의 URL에서'(request.user.id)'응답을받을 수 있습니다. 하지만 동일한 URL에 액세스하려고 할 때 권한이 부여되지 않은 오류가 발생합니다. 나는이 게시물이 오래되었음을 알고 있지만 가능하다면, 당신이 이런 종류의 것을 사용했던 어떤 예를 나눌 수 있습니까? –

0

node-sspi : hasRole은 다음과 같습니다

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

: 사용자 ID를 사용하여 자신의 인증 로직을 구현하려는 경우이 같은 미들웨어 기능을 정의 할 수 있습니다 쉽고 효율적으로 발견 사용.

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