
AppAuth für JavaScript ist ein Kunde SDK für öffentliche Kunden für die Kommunikation mit OAuth 2.0 und OpenID Connect -Anbietern, die nach dem Best Practice RFC 8252 - OAuth 2.0 für native Apps nach dem Best Practice. Die Bibliothek ist für die Verwendung in Web Apps , Node.js -CLI -Anwendungen, Chrome Apps und Anwendungen ausgelegt, die Electron oder ähnliche Frameworks verwenden.
Es ist bestrebt, die Anforderungen und Antworten dieser Spezifikationen direkt zu kartieren und gleichzeitig dem idiomatischen Stil der Implementierungssprache zu folgen.
Die Bibliothek unterstützt auch die PKCE -Erweiterung auf OAuth, die erstellt wurde, um Autorisierungscodes bei öffentlichen Kunden zu sichern, wenn benutzerdefinierte URI -Schema -Weiterleitungen verwendet werden. Die Bibliothek ist freundlich zu anderen Erweiterungen (Standard oder anderweitig) mit der Möglichkeit, zusätzliche Parameter in allen Protokollanforderungen und Antworten zu verarbeiten.
Eine Beispielanwendung, die die Bibliothek verwendet, ist im Ordner src/node_app und unter https://github.com/googlessamples/appauth-js-elektron-sprobe enthalten.
AppAuth unterstützt die manuelle Interaktion mit dem Autorisierungsserver, wo Sie Ihre eigenen Token -Börsen durchführen müssen. Dieses Beispiel führt einen manuellen Austausch durch.
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
} ) ;Dieser Client wurde mit TypeScript geschrieben.
Installieren Sie die neueste Version des Knotens. NVM (Node Version Manager wird sehr empfohlen).
Verwenden Sie nvm install , um die empfohlene Node.js -Version zu installieren.
Laden Sie hier die neueste Version von Visual Studio Code von.
Diese App verwendet npm , um IT -Abhängigkeiten bereitzustellen.
git clone die AppAuthJS -Bibliothek und wenden Sie sich zum Stammordner des Projekts mit package.json -Datei.npm install Sie alle Entwicklungs- und Projektabhängigkeiten. Das ist es! Sie sind jetzt bereit, an AppAuthJS zu arbeiten.
Das Projekt verwendet npm -Skripte, um Entwicklungsworkflows zu automatisieren. Diese Skripte werden über die package.json -Datei zur Verfügung gestellt.
Die folgenden Skripte sind enthalten:
npm run-script compile oder tsc werden alle Ihre Typscript-Dateien kompilieren. Alle kompilierten Dateien gehen in den built/ Ordner.
npm run-script watch oder tsc --watch kompiliert Ihre Typscript-Dateien im watch . Empfohlen, wenn Sie kontinuierliches Feedback erhalten möchten.
npm run-script build-app generiert die Ausgaberei-Datei bundle.js -Datei im built/ Verzeichnis. Dies beinhaltet die vollständige AppAuthJS -Bibliothek, einschließlich aller Abhängigkeiten.
npm test -Testbestimmungen Der Karma -Testläufer, um alle Unit -Tests auszuführen. Alle Tests werden mit Jasmine geschrieben. Um Ihre Tests zu debuggen , klicken Sie auf die Debug -Schaltfläche im Karma -Testläufer, um die tatsächliche Quelle der Tests zu betrachten. Sie können hier Bruchpunkte anbringen.
npm run-script app erstellt die Test-App auf einem lokalen Webserver. Dies ist eine End-to-End-App, die AppAuthjs verwendet und eine Demonstration zur Verwendung der Bibliothek ist.
npm run-script node-app erstellt eine Node.js CLI-Beispiel-App. Dies ist eine End-to-End-App, die AppAuthjs in einem Node.js-Kontext verwendet.