簡體   English   中英

ldap身份驗證登錄僅適用於輸入哈希密碼

[英]ldap authentication login only works with typing in the hashed password

我有一個帶角度前端的nodejs應用程序。 當我想用用戶名登錄時,僅當我輸入ssha哈希密碼時才有效。 但是使用純文本密碼,我無法登錄。

ldap客戶端配置ist:

function auth(user, password, successFn){
  var opts ={
    scope: 'sub',
    filter: '(&(objectClass=inetOrgPerson)(uid=' + user + '))',
  };

  var callback = function (err, res){
    handleResult(collect, err, res);
  };

  var collect = {
    list: [],
    entry: function(entry){ this.list.push(entry); },
    done: function(){
      var correct = this.list.length == 1;
      if ( correct ){
        var pw = this.list[0].userPassword;
        correct = (pw == password);
      }
      if ( correct ){
        var role = this.list[0].employeeType;
        successFn(role[0]);
      }
      else{
        successFn(correct);
      }

    }
  }

router.post('/login', function(req, res, next) {
  var user = req.body.username;
  var pw = req.body.password;

  ldap.auth(user, pw, function(role){  
    if ( role ){
      req.session.user = user;
      req.session.userRole = role;

nodejs中的代碼是否有問題,或者這是ldap服務器的配置錯誤? 我該如何解決呢?

這似乎是一個主要的安全問題。 您的代碼未使用LDAP身份驗證(即LDAP綁定請求)。 它檢索用戶輸入並將密碼字段與用戶輸入進行比較。 但是大多數LDAP服務器都會對用戶密碼進行哈希處理以保護它。 我強烈建議更改auth方法以執行綁定以驗證密碼,然后收集角色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM