
Appauth pour JavaScript est un SDK client pour les clients publics pour communiquer avec les fournisseurs OAuth 2.0 et OpenID Connect en suivant les meilleures pratiques RFC 8252 - OAuth 2.0 pour les applications natives. La bibliothèque est conçue pour être utilisée dans Web Apps , les applications CLI Node.js , Chrome Apps qui utilisent des cadres Electron ou similaires.
Il s'efforce de cartographier directement les demandes et les réponses de ces spécifications, tout en suivant le style idiomatique de la langue de mise en œuvre.
La bibliothèque prend également en charge l'extension PKCE à OAuth qui a été créée pour sécuriser les codes d'autorisation chez les clients publics lorsque des redirectes de schéma URI personnalisés sont utilisés. La bibliothèque est conviviale avec d'autres extensions (standard ou autre) avec la possibilité de gérer des paramètres supplémentaires dans toutes les demandes et réponses du protocole.
Un exemple d'application utilisant la bibliothèque est inclus dans le dossier src/node_app et sur https://github.com/googles.
Appauth prend en charge l'interaction manuelle avec le serveur d'autorisation où vous devez effectuer vos propres échanges de jetons. Cet exemple effectue un échange manuel.
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
} ) ;Ce client a été écrit avec TypeScript.
Installez la dernière version de Node. NVM (Node Version Manager est fortement recommandé).
Utilisez nvm install pour installer la version Node.js recommandée.
Téléchargez la dernière version du code Visual Studio à partir d'ici.
Cette application utilise npm pour provisionner les dépendances informatiques.
git clone la bibliothèque AppAuthJS et accédez au dossier racine du fichier package.json contenant le projet.npm install pour installer toutes les dépendances du développement et du projet. C'est ça! Vous êtes maintenant prêt à commencer à travailler sur AppAuthJS .
Le projet utilise des scripts npm pour automatiser les workflows de développement. Ces scripts sont mis à disposition via le fichier package.json .
Les scripts suivants sont inclus:
npm run-script compile ou tsc compilera tous vos fichiers TypeScript. Tous les fichiers compilés vont dans le dossier built/ .
npm run-script watch ou tsc --watch compilera vos fichiers TypeScript en mode watch . Recommandé si vous souhaitez obtenir des commentaires continus.
npm run-script build-app génère le fichier de sortie bundle.js dans le répertoire built/ . Cela comprend la bibliothèque complète AppAuthJS , y compris toutes ses dépendances.
Dispositions npm test Le coureur de test Karma pour exécuter tous les tests unitaires. Tous les tests sont écrits en utilisant le jasmin. Pour déboguer vos tests, cliquez sur le bouton Debug du coureur de test Karma pour examiner la source réelle des tests. Vous pouvez attacher des points de rupture ici.
npm run-script app construit l'application de test sur un serveur Web local. Il s'agit d'une application de bout en bout qui utilise AppAuthJS et est une démonstration sur la façon d'utiliser la bibliothèque.
npm run-script node-app construit une application Node.js CLI Exemple. Il s'agit d'une application de bout en bout qui utilise AppAuthJS dans un contexte Node.js.