
Appauth for JavaScript é um SDK do cliente para clientes públicos para se comunicar com os fornecedores OAuth 2.0 e OpenID Connect seguindo a melhor prática RFC 8252 - OAuth 2.0 para aplicativos nativos. A biblioteca foi projetada para uso em Web Apps , aplicativos Node.js CLI, Chrome Apps e aplicativos que usam Electron ou estruturas similares.
Ele se esforça para mapear diretamente as solicitações e respostas dessas especificações, seguindo o estilo idiomático do idioma de implementação.
A biblioteca também suporta a extensão PKCE para OAuth, criada para proteger códigos de autorização em clientes públicos quando são usados redirecionamentos de esquema de URI personalizados. A biblioteca é amigável a outras extensões (padrão ou não) com a capacidade de lidar com parâmetros adicionais em todas as solicitações e respostas de protocolo.
Um exemplo de aplicativo usando a biblioteca está incluído na pasta src/node_app e em https://github.com/googlesamples/appauth-js-electron-sample.
O Appauth suporta a interação manual com o servidor de autorização, onde você precisa executar suas próprias trocas de token. Este exemplo executa uma troca manual.
AuthorizationServiceConfiguration . fetchFromIssuer ( openIdConnectUrl )
. then ( response => {
log ( 'Fetched service configuration' , response ) ;
this . configuration = response ;
this . showMessage ( 'Completed fetching configuration' ) ;
} )
. catch ( error => {
log ( 'Something bad happened' , error ) ;
this . showMessage ( `Something bad happened ${ error } ` )
} ) ; this . notifier = new AuthorizationNotifier ( ) ;
// uses a redirect flow
this . authorizationHandler = new RedirectRequestHandler ( ) ;
// set notifier to deliver responses
this . authorizationHandler . setAuthorizationNotifier ( this . notifier ) ;
// set a listener to listen for authorization responses
this . notifier . setAuthorizationListener ( ( request , response , error ) => {
log ( 'Authorization request complete ' , request , response , error ) ;
if ( response ) {
this . code = response . code ;
this . showMessage ( `Authorization Code ${ response . code } ` ) ;
}
} ) ;
// create a request
let request = new AuthorizationRequest ( {
client_id : clientId ,
redirect_uri : redirectUri ,
scope : scope ,
response_type : AuthorizationRequest . RESPONSE_TYPE_CODE ,
state : undefined ,
extras : { 'prompt' : 'consent' , 'access_type' : 'offline' }
} ) ;
// make the authorization request
this . authorizationHandler . performAuthorizationRequest ( this . configuration , request ) ; this . tokenHandler = new BaseTokenRequestHandler ( ) ;
let request : TokenRequest | null = null ;
if ( this . code ) {
let extras : StringMap | undefined = undefined ;
if ( this . request && this . request . internal ) {
extras = { } ;
extras [ 'code_verifier' ] = this . request . internal [ 'code_verifier' ] ;
}
// use the code to make the token request.
request = new TokenRequest ( {
client_id : clientId ,
redirect_uri : redirectUri ,
grant_type : GRANT_TYPE_AUTHORIZATION_CODE ,
code : this . code ,
refresh_token : undefined ,
extras : extras
} ) ;
} else if ( this . tokenResponse ) {
// use the token response to make a request for an access token
request = new TokenRequest ( {
client_id : clientId ,
redirect_uri : redirectUri ,
grant_type : GRANT_TYPE_REFRESH_TOKEN ,
code : undefined ,
refresh_token : this . tokenResponse . refreshToken ,
extras : undefined
} ) ;
}
this . tokenHandler . performTokenRequest ( this . configuration , request )
. then ( response => {
// ... do something with token response
} ) ;Este cliente foi escrito com o TypeScript.
Instale a versão mais recente do nó. NVM (gerenciador de versão do nó é altamente recomendado).
Use nvm install para instalar a versão Node.js recomendada.
Baixe a versão mais recente do código do Visual Studio aqui.
Este aplicativo usa npm para provisionar dependências de TI.
git clone a biblioteca AppAuthJS e vá para a pasta raiz do projeto que contém o arquivo package.json .npm install para instalar todas as dependências de desenvolvimento e projeto. É isso! Agora você está pronto para começar a trabalhar no AppAuthJS .
O projeto usa scripts npm para automatizar fluxos de trabalho de desenvolvimento. Esses scripts são disponibilizados pelo arquivo package.json .
Os scripts a seguir estão incluídos:
npm run-script compile ou tsc compilará todos os seus arquivos do TypeScript. Todos os arquivos compilados entram na pasta built/ .
npm run-script watch ou tsc --watch compilará seus arquivos de texto digital no modo de watch . Recomendado se você deseja obter feedback contínuo.
npm run-script build-app gera o arquivo de saída bundle.js no diretório built/ . Isso inclui a biblioteca AppAuthJS completa, incluindo todas as suas dependências.
npm test O Karma Test Runner para executar todos os testes de unidade. Todos os testes são escritos usando jasmim. Para depurar seus testes, clique no botão Debug no Karma Test Runner para examinar a fonte real dos testes. Você pode anexar pontos de interrupção aqui.
npm run-script app cria o aplicativo de teste em um servidor da web local. Este é um aplicativo de ponta a ponta que usa Appauthjs e é uma demonstração sobre como usar a biblioteca.
npm run-script node-app cria um aplicativo de amostra node.js CLI. Este é um aplicativo de ponta a ponta que usa Appauthjs em um contexto Node.js.