アプリで Windows ユーザーを認証したいと思いますNodeJS
。これに対するアドオンはまだありますか? ありますがnode-krb5
、まだ Windows をサポートしていません。
15860 次
4 に答える
6
iisnode を使用して IIS でホストしている場合、https://github.com/auth0/passport-windowsauthはうまく機能します。Passport-windowsauth には広告統合が付属していますが、独自の承認ロジックを実装するためにユーザー名のみが必要な場合は、次のように実行できます
web.config:
<system.webServer>
<iisnode promoteServerVars="LOGON_USER" />
</system.webServer>
サーバー.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");
});
ユーザー ID を使用して独自の承認ロジックを実装する場合は、次のようなミドルウェア関数を定義できます。
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();
}
}
于 2016-04-08T14:55:58.620 に答える
-1
ここにブログ投稿を追加しましたhttp://hadenoughpi.wordpress.com/2013/04/16/node-js-windows-authentication-using-edgejs/ これが正しい方法の1つであることを願っています.
于 2013-04-16T17:01:08.453 に答える