
Appauth for JavaScript هي عميل SDK للعملاء العامين للتواصل مع Oauth 2.0 ومقدمي Connect OpenID بعد أفضل الممارسات 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-samed.
تدعم 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).
استخدم nvm install لتثبيت إصدار Node.js الموصى به.
قم بتنزيل أحدث إصدار من رمز Visual Studio من هنا.
يستخدم هذا التطبيق npm لتوفير التبعيات.
git clone مكتبة AppAuthJS وانتقل إلى المجلد الجذري لمشروع package.json .npm install لتثبيت جميع تبعيات DEV و Project. هذا كل شيء! أنت الآن مستعد لبدء العمل على 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 Karma Test Runner لتشغيل جميع اختبارات الوحدة. تتم كتابة جميع الاختبارات باستخدام الياسمين. لتصحيح الاختبارات الخاصة بك ، انقر على زر Debug في عداء Karma Test للنظر في المصدر الفعلي للاختبارات. يمكنك إرفاق نقاط الاستراحة هنا.
يقوم npm run-script app بإنشاء تطبيق الاختبار على خادم ويب محلي. هذا تطبيق شامل إلى طرف يستخدم AppAuthJS وهو عرض توضيحي حول كيفية استخدام المكتبة.
npm run-script node-app يبني تطبيق عينة CLI NODE.JS. هذا تطبيق شامل إلى طرف يستخدم appauthjs في سياق node.js.