NodeJS
app에 windows 사용자를 인증하고 싶습니다. 아직 어떤 추가 기능이 있습니까? node-krb5
이 있지만 아직 창을 지원하지 않습니다.Nodejs 또는 ExpressJS Windows 인증
답변
여기에 블로그 게시물을 추가했습니다. http://hadenoughpi.wordpress.com/2013/04/16/node-js-windows-authentication-using-edgejs/ 올바른 방법이기를 바랍니다.
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();
}
}
그러나 우리가 IIS 뒤에 노드를 놓을 때 우리는 많은 노드 이점을 느낍니다! – DaNeSh
브라우저의 URL에서'(request.user.id)'응답을받을 수 있습니다. 하지만 동일한 URL에 액세스하려고 할 때 권한이 부여되지 않은 오류가 발생합니다. 나는이 게시물이 오래되었음을 알고 있지만 가능하다면, 당신이 이런 종류의 것을 사용했던 어떤 예를 나눌 수 있습니까? –
node-sspi
: hasRole은 다음과 같습니다
app.get("/api/testAuthorization", hasRole("a role"), function(request, response, next){
console.log(request.user.id " is authenticated and authorized");
});
: 사용자 ID를 사용하여 자신의 인증 로직을 구현하려는 경우이 같은 미들웨어 기능을 정의 할 수 있습니다 쉽고 효율적으로 발견 사용.
이것은 단일 사인온입니다 윈도우 인증의 목적을 패배. 솔루션에는 사용자 이름, 도메인 및 암호를 전달해야합니다. –