
Appauth for JavaScript - это клиент SDK для публичных клиентов для общения с OAuth 2.0 и поставщиками OpenID Connect после лучшей практики RFC 8252 - OAuth 2.0 для местных приложений. Библиотека предназначена для использования в Web Apps , приложениях Node.js CLI, Chrome Apps и приложениях, которые используют Electron или аналогичные рамки.
Он стремится напрямую сопоставить запросы и ответы этих спецификаций, следуя идиоматическому стилю языка реализации.
Библиотека также поддерживает расширение PKCE на OAuth, который был создан для обеспечения кодов авторизации у общественных клиентов, когда используются пользовательские перенаправления схемы URI. Библиотека дружелюбна к другим расширениям (стандартным или иным образом) с возможностью обработки дополнительных параметров во всех запросах и ответах протокола.
Пример приложения с использованием библиотеки включен в папку src/node_app и по адресу https://github.com/googlesamples/appauth-js-electron-sample.
Appauth поддерживает ручное взаимодействие с сервером авторизации, где вам нужно выполнить свои собственные обмены токенами. Этот пример выполняет ручной обмен.
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
} ) ;Этот клиент был написан с помощью TypeScript.
Установите последнюю версию узла. NVM (Node Version Manager настоятельно рекомендуется).
Используйте nvm install для установки рекомендуемой версии Node.js.
Загрузите последнюю версию кода Visual Studio отсюда.
Это приложение использует npm для обеспечения ИТ -зависимостей.
git clone библиотеку AppAuthJS и перейдите в корневую папку проекта, содержащий файл package.json .npm install для установки всех зависимостей DEV и проекта. Вот и все! Теперь вы готовы начать работать над AppAuthJS .
Проект использует сценарии npm для автоматизации рабочих процессов разработки. Эти сценарии доступны через файл package.json .
Следующие сценарии включены:
npm run-script compile или tsc будет компилировать все ваши файлы TypeScript. Все скомпилированные файлы заходят в built/ папку.
npm run-script watch или tsc --watch будет компилировать ваши файлы TypeScript в режиме watch . Рекомендуется, если вы хотите получить непрерывную обратную связь.
npm run-script build-app генерирует выходной файл bundle.js в built/ каталоге. Это включает в себя полную библиотеку AppAuthJS , включая все ее зависимости.
npm test положения The Karma Test Runner для запуска всех модульных тестов. Все тесты написаны с использованием Жасмин. Чтобы отлаживать свои тесты, нажмите кнопку Debug в Test Runner Carma, чтобы посмотреть на фактический источник тестов. Вы можете прикрепить точки разрыва здесь.
npm run-script app создает тестовое приложение на локальном веб-сервере. Это сквозное приложение, которое использует appauthjs и является демонстрацией того, как использовать библиотеку.
npm run-script node-app строит приложение Node.js CLI. Это сквозное приложение, которое использует appauthjs в контексте node.js.