2017-03-09 3 views
1

LDAP-authに使用されているpassport.js実装があります。とpassport.authenticateを呼び出す前に、サーバー側のサービスでPassportJS - 要求パラメータとしてpassport.authenticateに渡される前にペイロードデータを取得する

Client-side angular-js controller

$scope.authenticate = function() {  
    var auth = new login(); 
    auth.username = $scope.username; 
    auth.password = CryptoJS.AES.encrypt($scope.password); //// HERE 

    auth.$save(function (response){ 
    console.log(response); 
    },function(err){ 
    console.log(err); 
    }); 
} 

Server-side service

..... 
..... 
app.post('/login', passport.authenticate('ldapauth'), (req, res) => { 

    console.log("req.user: ",req.user); 
    req.session.username = req.user[ldap.username]; 
    req.session.userModel = req.user; 
    res.status(200).send({"success": 'success'}); 
}); 
..... 

を:今、次のステップは、次のようにCrypto-jsを使用して、クライアント側でパスワードを暗号化することです'req'を要求すると、暗号化されたパスワードを解読する必要があります。ここにどのように実装できますか? (質問は暗号化に関するものではなく、要求としてpassport.authenticateに渡される前にデータを取得する方法)

+1

私はあなたがここで何をしようとしているのかよく分かりませんが、SHA1は暗号化ではなくハッシュ関数です。それは '解読'することはできません。 – estus

+0

サーバクライアント間の通信を暗号化するのにHTTPS(SSL)を使用しないのはなぜですか? –

+0

@estus - 考えられるのは、あらゆる種類のブルートフォース攻撃を遅くすることで、コンピュータからパスワードを隠しておくことです。ネットワークはhttpsを通じて暗号化されているので、気にする必要はありません。私はちょうどクライアント側の肉眼からパスワードを遠ざけたいと思っています。 –

答えて

2

@Abhijay Ghildyal私はあなたの質問を理解したとは思わない。要求がpassport.authenticate()に渡される前に、要求を傍受することは本当に可能です。あなたがしたいと思うのは、このコードをexpress.jsに追加するか、エクスプレスサーバーの実装を行ったファイルを追加することです。また、req.userの代わりにrequest.bodyをここで解読しています。ユーザーはまだログインしていませんが、あなたのケースでそれが違うなら、req.userを同じ方法で解読できます。それをある

app.use(function(req, res, next) { 
    if(req.url === '/login'){ 
     //CryptoJS.AES.decrypt() is Assumed to be the decrypter function here. 
     req.body = CryptoJS.AES.decrypt(req.body); 
     console.log(req.body); //To view decrypted body 
    } 
    next(); 
}); 

;(ここ変数アプリは、サーバすなわちするvarアプリの名前=急行()です)。このミドルウェア機能は、最初にpassport.authenticate()関数の前に到達します。上記のコードの前にbodyParser(bodyParser = require( 'body-parser');)をインポートした後に、req.bodyにこれを適用する場合は、まずこれらのコード行を追加してください。

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 
関連する問題