NodeJs com Active Directory 인증

Emambientescorporativos,é comum a criação de sistemas para uso interno, dessa forma, é interessante unificar login e senha, para comodidade dos usuários.

Neste artigo irei mostrar uma forma simples de autenticar-se utilizando login e senha da sua base de dados do active directory com NodeJs.

시작 프로젝트



Estrutura básica da nossa API:



./src/config vamos criar o arquivo activeDirectory.js, dentro dele configurar nosso acesso ao servidor ldap.

1.instalar pacote 활성 디렉토리
yarn add activedirectory
2.informações de seu servidor na variável de configuração, seu código deve ficar assim으로 biblioteca e insira를 가져옵니다.

 const ActiveDirectory = require('activedirectory');
 const dotenv = require('dotenv');

 dotenv.config();


 const config = {
     url: process.env.AD_URL, // IP e porta do servidor AD Ex: ldap://XXX.XXX.XXX.XXX:XXX
     baseDN: process.env.DOMAIN_CONTROLLER, //nome do domínio, exemplo: teste.local
     username: process.env.AD_USERNAME, // usuário do AD para configuração de acesso
     password: process.env.AD_PASSWORD, // senha do usuário
 }

 const ad = new ActiveDirectory(config);

 module.exports = ad;



*Lembre-se sempre de não expor dados sensíveis em seu código, utilize variáveis de ambiente, como no exemplo.



Autenticação



Em ./src/controllers, criaremos nosso arquivo contendo o método de autenticação de usuários.

A biblioteca activedirectory nos ofecere um método chamado authenticate, que ao receber nome de usuário, dominio e senha, chama uma função callback indicando sucesso ou erro.

 const ad = require("../config/activeDirectory");

 //Método para autenticar usuários
 exports.user_authenticate = async (req, res) => {
   const { user, pass, domain } = req.body;
   try {
     await ad.authenticate( domain + "\\" + user, pass,
      function (err, auth) {
        if (auth) {
          return res.status(200).json({
                message: "Authenticated!"
              });
          }
        else {
          return res.status(401).send({
              message: "Authentication failed!",
              error: err
          });
       }
      });
    }catch (err) {
    return res.status(500).send({ message: "ERROR " + err });
   }
 };


Agora vamos criar uma rota para testar nossa autenticação:




 const router = require('express')();
 const authController = require('../controllers/auth.controller');

 // => Definindo as rotas de autenticação

 router.post('/login', authController.user_authenticate); //{POST} localhost:3000/api/ad/login

 module.exports = router;


Partindo para o Insomnia, vamos testar nossa rota:



Sucesso em nossa autenticação!



*Neste teste foram utilizados dados fictícios, você deve preencher com um usuário e senha existente em seu servidor AD.

Pessoal, por enquanto é isso, nos próximos artigos vamos implementar JWT neste modelo de autenticação e middlewares.

Projeto completeto encontra-se no Github .

Obrigada, até à próxima!

좋은 웹페이지 즐겨찾기