API բանալու նույնականացում
API Key Authentication-ը Drupal REST API-ները պաշտպանելու ամենապարզ մեթոդներից մեկն է։ Երբ բոլոր օգտվողների համար գեներացվում են API բանալիներ (Key-եր), ապա դրանցով կարելի է ապահովել մուտքի անվտանգություն ձեր Drupal REST API-ների համար։
Դուք կարող եք դա անել՝ յուրաքանչյուր API հարցման Authorization վերնագրում փոխանցելով օգտվողի Drupal username-ը և API բանալին։ Drupal API Authentication մոդուլը կհավաստի հարցումը՝ օգտագործողի անունով և համապատասխան API key-ով։ Այս մոդուլը համատեղելի է Drupal 7, Drupal 8, Drupal 9, Drupal 10 և Drupal 11 տարբերակների հետ։
Կարգավորման տեսանյութ․
Նախադրյալներ՝ ներբեռնում և տեղադրում․
- Ներբեռնեք և տեղադրեք Drupal REST & JSON API Authentication մոդուլը։
- REST UI․ Այս մոդուլը տրամադրում է REST մոդուլի կարգավորման ինտերֆեյս։
- Ձեր Drupal կայքում (Extend բաժին /admin/modules) միացրեք հետևյալ Web Services մոդուլները․
- REST UI
- RESTful Web Services
- Serialization
API Key-ով նույնականացման կարգավորման քայլեր Drupal-ում․
- Լավ պատկերացման համար դիտարկենք օրինակ՝ ինչպես ավելացնել API Key-ով նույնականացում՝ օգտվող ստեղծելու API-ի համար Drupal-ում։
- Նշում․ Drupal-ի /entity/user API-ն օգտագործվում է օգտվող ստեղծելու համար։
Միացրեք API-ն և նշանակեք մեթոդներ և գործողություններ․
- Առաջին քայլը API-ն միացնելն ու անհրաժեշտ մեթոդներն ու գործողությունները ընտրելն է տվյալ API-ի համար։ Սա կարելի է անել REST UI մոդուլով կամ ուղղակի փոփոխել config-ը։
- REST UI մոդուլով API-ն միացնելու համար սեղմեք Configure կոճակը REST UI մոդուլի դիմաց (տես նկարում)։
- Մեր օրինակում պետք է միացնել /entity/user API-ն։ Enable կոճակով ակտիվացրեք այն։
- Քանի որ նպատակը Drupal-ում օգտվող ստեղծելն է, ընտրեք հետևյալ կարգավորումները․
- Մեթոդ՝ POST
- Ֆորմատ՝ json
- Նույնականացման մատակարար՝ rest_api_authentication.
- rest_api_authentication ընտրելով՝ հնարավորություն եք տալիս miniOrange REST API Authentication մոդուլին նույնականացնել /entity/user API-ն։ Սեղմեք Save Configuration՝ շարունակելու համար։
Ստեղծեք API Key դաշտ օգտվողների համար Drupal-ում․
Նշում. Եթե օգտագործում եք մոդուլի անվճար տարբերակը, կարող եք այս քայլը բաց թողնել։
Այս քայլում սահմանում ենք, թե ինչպես է օգտագործվում API key-ն API կանչերը նույնականացնելու համար։ Սկզբում անհրաժեշտ է ստեղծել օգտվողների դաշտ՝ API key պահելու համար։
- Անցեք Manage Fields (/admin/config/people/accounts/fields) բաժին։
- Դաշտ ավելացնելու համար սեղմեք Add field կոճակը։
- Այժմ Add a new field ցուցակից ընտրեք Text (Plain) և լեյբլի տեքստի դաշտում գրեք API Key։ Սեղմեք Save and continue՝ կարգավորումները պահպանելու համար։
- Համոզվեք, որ դաշտի մեքենայական անունը լինի field_api_key.
- Սեղմեք Save field settings, այնուհետև Save Settings՝ դաշտի ստեղծումն ավարտելու համար։
- Հիմա կարող եք տեսնել նոր API Key դաշտը ձեր օգտվողի պրոֆիլում։
Կարգավորեք API Key-ով նույնականացումը․
- Այս քայլում կգեներացնենք API Key. Անցեք REST API Authentication մոդուլի API Authentication բաժին՝ (/admin/config/people/rest_api_authentication/auth_settings)
- Նշեք Enable Authentication և սեղմեք Save Settings։
- API Key-ով նույնականացումը միացնելու համար ընտրեք API Key ռադիո կոճակը։
- Այս էջում կարող եք գեներացնել API key թե՛ որոշակի օգտվողի, թե՛ բոլոր օգտվողների համար միանգամից։
- Այս պահին գեներացնում ենք միայն մեկ օգտվողի համար։
- Enter username դաշտում նշեք այն օգտվողի անունը, ում համար ցանկանում եք գեներացնել API key, ապա սեղմեք Generate API key for this user կոճակը։
- Հիմա կարող եք տեսնել գեներացված API key-ը օգտվողի պրոֆիլի API Key դաշտում։
- Պահպանեք API key-ը, այն անհրաժեշտ կլինի API-հարցումները նույնականացնելիս։
Տվեք Drupal-ի դերերին օգտվող ստեղծելու իրավունք․
- Անհրաժեշտության դեպքում կարող եք ոչ ադմինիստրատոր դերերին օգտվող ստեղծելու իրավունք տալ։ Դա կարող եք անել նրանց Administer users թույլտվություն տալով (Permission բաժին՝ /admin/people/permissions)։
Ահա և վերջ!!!
- Այժմ կարող եք փորձել օգտվող ստեղծել Drupal-ում՝ օգտագործելով API key-ով նույնականացում API call-ի ժամանակ։
Օրինակ․
- Օգտվող ստեղծելու համար POST հարցում պետք է ուղարկել, որտեղ օգտագործվում են օգտվողի username-ը և API key-ը, որոնք տրամադրված են miniOrange REST API Authentication մոդուլի կողմից։ username-ը և API key-ը պետք է base64 կոդավորված լինեն։ Ստորև ներկայացված է հարցման ձևաչափը․
Հարցում․ POST <your_drupal_base_url>/entity/user?_format=json
Վերնագիր․ Authorization: Basic base64encoded <username:api_key>
Accept: application/json
Content-Type: application/jsonՄարմին․
{
"name": [
{"value": "<username>"}
],
"mail": [
{"value": "<email>"}
],
"pass":[
{"value": "<password>"}
],
"status":[
{"value": "1"}
]
}CURL հարցման ձևաչափ․
curl --location --request POST ‘<your_drupal_base_url>/entity/user?_format=json' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic base64encoded<username:API key>’ \
--data-raw '{
"name": [
{"value": "Username"}
],
"mail": [
{"value": "email"}
],
"pass":[
{"value": "Password"}
],
"status":[
{"value": "1"}
]
}'
- Կարող եք օգտվել նաև ներքևում ներկայացված Postman-ի հարցման պատկերից․
- Հաջող պատասխանը վերադարձնում է ստեղծված օգտվողի տվյալները (տես նկարը)։
- Եթե պատասխանում ստանում եք սխալ, կարող եք օգտվել ստորև ներկայացված աղյուսակից՝ սխալի նկարագրությամբ և հնարավոր լուծումներով։
Սխալի պատասխաններ․
Սխալ | Նկարագրություն |
MISSING_AUTHORIZATION_HEADER |
Այս սխալը կստանաք, եթե API հարցման մեջ Authorization Header չեք ուղարկել կամ այն սերվերի կողմից հեռացվել է։ Օրինակ: |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE | Այս սխալը կստանաք, եթե Authorization header-ը սխալ ձևաչափով է ուղարկվել։ Օրինակ: { "status": "error", "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE", "error_description": "Authorization header must be the type of Basic Authentication." } |
USER_DOES_NOT_EXIST |
Այս սխալը կստանաք, եթե հարցման մեջ նշված username-ով օգտվող գոյություն չունի։ Օրինակ: |
INVALID_API_KEY |
Այս սխալը կստանաք, եթե հարցման մեջ նշված API key-ը սխալ է։ Օրինակ: |
USER_NAME_MISSING |
Այս սխալը կստանաք, եթե հարցման մեջ username-ը բացակայում է։ Օրինակ: |
INVALID_AUTHORIZATION_HEADER |
Այս սխալը կստանաք, եթե վերնագիրը սխալ է կոդավորված կամ username և API key-ը վերնագրում չեն հայտնաբերվել։ Օրինակ: |
Հոդվածը վերցված է Drupal Documentation-ից։