
Appauth for JavaScript adalah SDK klien untuk klien publik untuk berkomunikasi dengan OAuth 2.0 dan penyedia OpenID Connect mengikuti praktik terbaik RFC 8252 - OAuth 2.0 untuk aplikasi asli. Perpustakaan dirancang untuk digunakan dalam Web Apps , aplikasi CLI Node.js , Chrome Apps dan aplikasi yang menggunakan kerangka Electron atau serupa.
Ini berusaha untuk secara langsung memetakan permintaan dan tanggapan dari spesifikasi tersebut, sambil mengikuti gaya idiomatik dari bahasa implementasi.
Perpustakaan juga mendukung ekstensi PKCE ke OAuth yang dibuat untuk mengamankan kode otorisasi pada klien umum ketika pengalihan skema URI khusus digunakan. Perpustakaan ramah dengan ekstensi lain (standar atau lainnya) dengan kemampuan untuk menangani parameter tambahan dalam semua permintaan dan tanggapan protokol.
Contoh aplikasi menggunakan pustaka termasuk dalam folder src/node_app dan di https://github.com/googlesamples/appauth-js-electron-sample.
AppAuth mendukung interaksi manual dengan server otorisasi di mana Anda perlu melakukan pertukaran token Anda sendiri. Contoh ini melakukan pertukaran 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
} ) ;Klien ini telah ditulis dengan naskah.
Instal versi node terbaru. NVM (Node Version Manager sangat disarankan).
Gunakan nvm install untuk menginstal versi Node.js yang disarankan.
Unduh versi terbaru dari Visual Studio Code dari sini.
Aplikasi ini menggunakan npm untuk menyediakan dependensi.
git clone perpustakaan AppAuthJS dan pergi ke folder root dari proyek yang berisi package.json file.npm install untuk menginstal semua dependensi DEV dan proyek. Itu saja! Anda sekarang siap untuk mulai mengerjakan AppAuthJS .
Proyek ini menggunakan skrip npm untuk mengotomatiskan alur kerja pengembangan. Script ini tersedia melalui file package.json .
Skrip berikut disertakan:
npm run-script compile atau tsc akan menyusun semua file TypeScript Anda. Semua file yang dikompilasi masuk ke folder built/ .
npm run-script watch atau tsc --watch akan mengkompilasi file TypeScript Anda dalam mode watch . Direkomendasikan jika Anda ingin mendapatkan umpan balik yang berkelanjutan.
npm run-script build-app menghasilkan file bundle.js output di direktori built/ . Ini termasuk perpustakaan AppAuthJS lengkap termasuk semua dependensinya.
Penyediaan npm test Pelari uji Karma untuk menjalankan semua tes unit. Semua tes ditulis menggunakan Jasmine. Untuk men -debug tes Anda, klik tombol Debug di runner uji karma untuk melihat sumber tes yang sebenarnya. Anda dapat memasang titik istirahat di sini.
npm run-script app Membangun Aplikasi Uji di server web lokal. Ini adalah aplikasi ujung ke ujung yang menggunakan Appauthjs dan merupakan demonstrasi tentang cara menggunakan perpustakaan.
npm run-script node-app membuat aplikasi sampel Node.js CLI. Ini adalah aplikasi end-to-end yang menggunakan AppAuthjs dalam konteks Node.js.