npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@wizsolucoes/vanilla-wiz-sso

v1.1.6

Published

Lib js para autenticação e renovação de token para o SSO.

Downloads

318

Readme

Vanilla Wiz SSO

Lib js feita em Vanilla JS para facilitar o processo de autenticação e renovação de token no SSO da Wiz.

Preparação da ambiente local

Está api faz uso de node, para configurar localmente o projeto é necessário executar o seguinte comando, na raiz do projeto:

> npm install

Organização do projeto

├── src
    ├── index.js
    ├── lib
        ├── sso-conector.js

index.js -> Arquivo padrão de exportação da lib. sso-conector.js -> arquivo aonde estão as principais classes do projeto:

  • HttpConnector: Classe auxiliar que encapsula a complexidade de uma chamada http em modo js puro.
  • SSOConector: Classe que contém a regra negocial do funcionamento de conexão e renovação de token para o SSO.

Utilização da lib

Essa lib foi preparada para uso via empacotamento logo ela poderá ser utilizada via importação. Para fazer a instalação do package via npm basta executar o comando:

> npm install 'git+https://github.com/wizsolucoes/vanilla-wiz-sso.git' --save

Para utilizá-la basta importar a classe utilizando o código a seguir:

import SSOConector from 'vanilla-wiz-sso';

Documentação da Classe SSOConector

Instanciando a classe:

Para utilizar os recursos da classe é necessário criar uma instância da classe. Para isso é obrigatório passar um objeto config conforme o exemplo a seguir:

import SSOConector from 'vanilla-wiz-sso';

var sso = new SSOConector(config);

Objeto Config:

O objeto config deve possuir as seguintes propriedades

  • apiPath: url principal do SSO, exemplo: http://wiz-sso.com.br
  • client_id: cliente id para o SSO
  • grant_type: tipo de login a ser executado, exemplo: passowrd
  • client_secret: chave secreta da api, exemplo: @#%WESEWqwert==
  • scope: o scope de acesso para qual será utilizado o token gerado
  • options: configurações opcionais que podem ou não ser passadas, este campo não é obrigatório.

No campo options existem os seguintes campos:

  • autoRefreshToken: valor booleano que indentifica se o token deve ser renovado quando expirado, por padrão seu valor é true
  • ssoTimeout: valor, em millesegundos, que identifica quanto tempo a requisição de login ou renovação de token deve aguardar até considerar que houve um timeout. Por padrão esse valor é 60000 (um minuto).

Propriedades e metódos da classe:

  • static onAutoRefreshFail propriédade estática que dispara erro caso a renovação automática de token falhe.

  • static getToken(); método estático que retorna o token do usuário logado, caso o login ainda não tenha sido efetuado retorna null.

  • isLogged(); método da classe que retorna um objeto Promise, no caso do usuário estar logado o retorno do promise será um objeto token.

  • loginWithCredentials(username, password) método que efetua o login do usuário baseado em seu usuário e senha. Retorna um objeto Promise, no caso do usuário estar logado o retorno do promise será um objeto token.

  • refreshToken() método que efetua a renovação do token atual. Retorna um objeto Promise, no caso do usuário estar logado o retorno do promise será um objeto token.

  • logOut() método que remove o token logado do usuário e suspende o controle de renovação de token.

Objeto Token

O objeto token é composto das seguintes propriedades:

  • tokenType: tipo do token retornado pelo SSO, normalmente um token do tipo Bearer
  • hash: propriamente a cifra do token retornado
  • expiresIn: numero em formato timestamp que representa o tempo de validade do token.
  • refreshToken: hash utilizado para renovar o token.

Exemplo completo

import SSOConector from 'vanilla-wiz-sso';

// instanciar a classe com os parametros necessários
var sso = new SSOConector({
    apiPath: 'http://wiz-sso.com.br',
    client_id: 'wiz_key',
    grant_type: 'password',
    client_secret: 'af324589+++===',
    scope: 'wiz-corp',
    options: {
        autoRefreshToken: true,
        ssoTimeout: 60000
    }
});

// callback para monitorar o erro ao renovar um token.
SSOConector.onAutoRefreshFail = () => { console.log('vixi...') }

SSOConector.getToken(); // recuperar token caso ele exista.

// verificar se o usuário está logado
sso.isLogged()
    .then({
        token => {
            //logar usuário
        }, error => {
            //erro ao recuperar usuário ou não há usuário logado
        }
    });


// logand usuário
sso.loginWithCredentials('[email protected]', 'senha')
    .then(
        token => {
            //usuário logou
        }, error => {
            // erro ao logar usuário
        }
    );


// renovação de token após logado.

sso.refreshToken()
    .then(
        token => {
            // usuário logado
        }, error => {
            // erro ao renovar token do usuário
        }
    );

// deslogar usuário da sessão

sso.logOut();