我想驗證一個Windows用戶在NodeJS
應用程序。 有沒有附加組件?有node-krb5
,但它不支持Windows。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");
});
,如果你想使用用戶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();
}
}
但是,當我們把節點放在IIS後面時,我們就失去了很多節點的好處! – DaNeSh
我能夠在瀏覽器中從Url獲得響應'(request.user.id)'。但是當我嘗試訪問相同的URL時,出現錯誤未授權錯誤。我知道這個帖子很老,但如果可能的話,你可以分享你使用過這種東西的任何例子嗎? –
node-sspi
:發現很容易和高效使用。
- 1. Expressjs身份驗證
- 2. ExpressJs + Passport.js + MySQL身份驗證
- 3. SQL Server身份驗證或Windows身份驗證
- 4. Nodejs多重身份驗證
- 5. Google身份驗證與nodejs
- 6. Express,NodeJS身份驗證
- 7. ASP.NET Windows身份驗證
- 8. Asp.net和Windows身份驗證
- 9. windows身份驗證和iOS7
- 10. Windows身份驗證IIS7
- 11. Firefox不顯示身份驗證提示和Windows身份驗證
- 12. Windows身份驗證不驗證角色
- 13. CORS與Windows身份驗證
- 14. IIS/Windows身份驗證
- 15. SQL Windows身份驗證
- 16. ASP.NET MVC Windows身份驗證
- 17. WCF - IIS Windows身份驗證
- 18. 手動Windows身份驗證
- 19. Watin Windows身份驗證
- 20. wcf和windows身份驗證
- 21. IdentityServer4&Windows身份驗證
- 22. Android Windows身份驗證
- 23. Windows Azure iOS身份驗證
- 24. geckodriver windows身份驗證
- 25. adfs windows身份驗證
- 26. Silverlight Windows身份驗證
- 27. Windows身份驗證問題
- 28. Windows身份驗證C#MVC3
- 29. NancyFx和Windows身份驗證
- 30. Azure Windows 8身份驗證
這打破了單點登錄的Windows認證的目的。您的解決方案需要傳遞用戶名,域名和密碼。 –