Single sing on pada Node js





Selamat Sore 😊
Untuk mengingat kembali keamanan mendasar yang harus ada pada sebuah aplikasi yang terkoneksi dengan REST API, mungkin single sign on adalah pembahasan yang pas untuk kali ini. Single sign on secara sederhana memiliki pengertian hanya satu perangkat yang diijinkan untuk masuk, jika diperluas memiliki pengertian hanya satu perangkat dengan kode unique tertentu yang hanya di miliki atau di generate oleh sang perangkat, dimana kode uniqe tersebut dinyatakan valid dari sisi backend, sehingga sang perangkat dapat masuk dan dapat melakukan aktivitas seperti mengambil dan mengirim data.

JWT (jsonwebtoken) adalah library yang banyak digunakan oleh para enginner untuk membantu membuat single sign on. Pada kali ini kita akan menerapkan jwt dengan express js, langkah pertama yang dilakukan adalah menginstall jwt dengan perintah : 
 
 npm install --save jsonwebtoken

Setelah berhasil di install maka akan muncul jsonwebtoken beserta versinya di dependencies pada file package.json. Kemudian kita menginstall juga bcrypt library  untuk proses hashing kata sandinya.

 npm install --save bcrypt

Dan jika berhasil menginstall maka akan muncul bcrypt beserta versinya di dependencies pada file package.json.  Kemudian kita membuat function sign on nya.

const colab = "askingalexandria"+"bringmethehorizon"
bcrypt.hash(colab, 10, function(err, hash){
    if(err){
        console.log("error hashing :"+err);
    }
    bcrypt.compare(colab, has, function(err, result){
        if(err){
             console.log("error auth :"+err); 
        }
        if(result){
             const token = jwt.sign({
                   id_token: "1"
                   name_token: colab
             }, "Hardcode", {
                 expiresIn: "30s"
             });
             console.log ("Bearer "+token);
        }
    })
})

Jika function diatas kita masukkan dalam suatu module.exports, maka seperti berikut :

exports.generateToken = function async (req, res, next){
    try{
        const colab = "askingalexandria"+"bringmethehorizon"
        bcrypt.hash(colab, 10, function(err, hash){
        if(err){
             console.log("error hashing :"+err);
        }
        bcrypt.compare(colab, has, function(err, result){
            if(err){
                console.log("error auth :"+err); 
            }
            if(result){
                 const token = jwt.sign({
                     id_token: "1"
                     name_token: colab
                 },"Hardcode007", {
                    expiresIn: "30s"
                 });
             res.json({"token": token});
        }
    })
})
    catch(err){
        res.json({"err": err});
    }
}

Setelah itu kita membuat file baru dengan nama check_auth.js, dimana file ini digunakan untuk Menvalidation token yang dimasukkan

module.exports = (req, res, next) => {
    try{
         const token = req.headers.authorization.split(" ")[1];
         const decode = jwt.verify(token, "Hardcode007");
         req.userData = decode;
         next();
    }catch(err){
         return res.status(400).json({
              message: err
         })
    }
}

Kemudian tinggal menambahkan di router yang mau kita beri verify token untuk bisa masuk,  jangan lupa untuk import file check_authnya. Misalnya seperti pada proses login kita melakukan proses check auth terlebih dahulu sebelum login, berikut contohnya : 

router.post('/login', check_auth, loginuser);


 Seperti itulah cara pembuatan single Sign On, anda dapat mengkreasikan sesuai dengan keinginan anda sendiri. Terima kasih 😊



Single sing on pada Node js Single sing on pada Node js Reviewed by sdiik on May 13, 2020 Rating: 5

No comments:

Powered by Blogger.