REST API-ի նույնականացում՝ օգտագործելով արտաքին նույնականացման մատակարար
Եթե ցանկանում եք պաշտպանել կամ սահմանափակել մուտքը ձեր Drupal REST API-ներին՝ օգտագործելով ձեր ինքնության մատակարար (Identity Provider), ապա պետք է օգտվեք Արտաքին Ինքնության Մատակարարի նույնականացման մեթոդից։
Drupal API-ի նույնականացումը արտաքին ինքնության մատակարարի միջոցով ներառում է երրորդ կողմի մատակարարներից (օր.՝ Google, Azure AD, Keycloak, Okta, Gitlab և այլն) ստացված թոքենների օգտագործում՝ Drupal REST API-ներին անվտանգ մուտք գործելու համար։
Այս մեթոդով դուք պետք է մոդուլում կարգավորեք Ձեր ինքնության մատակարարի կողմից տրամադրված User Info Endpoint-ը և Ձեր մատակարարից փոխանցվող օգտագործողի անունի հատկությունը։ Այս կերպ Դուք կարող եք նույնականացնել բոլոր Drupal API հարցումները՝ օգտագործելով մատակարարի կողմից տրամադրված թոքենը։ Drupal REST API մոդուլը ստուգում է փոխանցված տվյալները ձեր Drupal օգտվողի հաշվին համապատասխան։ Այս մոդուլը համատեղելի է 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 Authentication-ի կարգավորման քայլեր արտաքին հավելվածի/ինքնության մատակարարի միջոցով․
- Ավելի լավ պատկերացման համար դիտարկենք օրինակ՝ ինչպես ավելացնել արտաքին ինքնության մատակարարով նույնականացում օգտվող ստեղծելու API-ին Drupal-ում։
- Նշենք, որ Drupal-ի /entity/user API-ն օգտագործվում է նոր օգտվող ստեղծելու համար։
Միացրեք API-ն և նշանակեք մեթոդներ և գործողություններ․
- Առաջին քայլը API-ն միացնելն է և համապատասխան մեթոդներն ու գործողությունները ընտրելը տվյալ API-ի համար։ Սա կարելի է անել REST UI մոդուլի միջոցով կամ պարզապես փոխել config-ը։
- REST UI մոդուլով API-ն միացնելու համար սեղմեք Configure կոճակը REST UI մոդուլի դիմաց (ինչպես նկարում)
- Մեր օրինակում անհրաժեշտ է միացնել /entity/user API-ն, որը գտնվում է User-ի տակ։ Սեղմեք Enable՝ API-ն ակտիվացնելու համար։
- Քանի որ մեր նպատակը Drupal-ում օգտվող ստեղծելն է, ընտրեք հետևյալ կարգավորումները․
- Մեթոդ՝ POST
- Ֆորմատ՝ json
- Նույնականացման մատակարար՝ rest_api_authentication.
- rest_api_authentication ընտրելով՝ հնարավորություն եք տալիս miniOrange REST API Authentication մոդուլին նույնականացնել ձեր API հարցումը։ Սեղմեք Save Configuration շարունակելու համար։
Drupal REST API Authentication մոդուլի կարգավորում․
- Այս քայլում մենք կկարգավորենք External Identity Provider տարբերակը որպես API Authentication մեթոդ։ Դրա համար անցեք REST API Authentication մոդուլի API Authentication ներդիր (/admin/config/people/rest_api_authentication/auth_settings) հասցեով։
- Նշեք Enable Authentication տուփը և սեղմեք Save Settings.
- Save Settings-ի ներքևում ընտրեք External Identity Provider տարբերակը։
- User Info Endpoint դաշտում մուտքագրեք Ձեր Ինքնության մատակարարի user info endpoint-ը, որպեսզի մոդուլը կարողանա թոքենով ստանալ օգտվողի տվյալները։
- Username Attribute դաշտում մուտքագրեք ձեր մատակարարի այն հատկության անունը, որով փոխանցվում է օգտվողի անունը։
Տվեք Drupal-ի դերերին օգտվող ստեղծելու իրավունք․
- Անհրաժեշտության դեպքում կարող եք թույլատրել ոչ ադմինիստրատոր դեր ունեցող օգտվողներին օգտվողներ ստեղծել Drupal-ում։ Դա կարող եք անել համապատասխան դերերին Administer users թույլտվություն տալով (/admin/people/permissions)։
Ահա և վերջ!!!
- Այժմ կարող ենք փորձել օգտվող ստեղծել Drupal-ում API-հարցմամբ՝ օգտագործելով արտաքին ինքնության մատակարարի նույնականացում։
Օրինակներ․
- Օգտվող ստեղծելու համար պետք է ուղարկեք POST հարցում՝ այն թոքենով, որը ստացել եք ինքնության մատակարարից։
Հարցում: POST <your_drupal_base_url>/entity/user?_format=json
Վերնագիր: Token: <Token_receievd_from_external_identity_provider>
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 'Token: <Token_receievd_from_external_identity_proider>' \
--data-raw '{
"name": [
{"value": "Username"}
],
"mail": [
{"value": "email"}
],
"pass":[
{"value": "Password"}
],
"status":[
{"value": "1"}
]
}'
- Կարող եք օգտվել նաև ներքևում ներկայացված Postman-ի հարցման պատկերից․
- Հաջող պատասխանը վերադարձնում է ստեղծված օգտվողի տվյալները (տես նկարում)։
- Եթե ստանում եք սխալ, կարող եք օգտվել ստորև ներկայացված աղյուսակից՝ սխալի նկարագրությամբ և հնարավոր լուծումներով։
Սխալի պատասխաններ․
Սխալ | Նկարագրություն |
INVALID_USER_INFO_ENDPOINT | Այս սխալը կստանաք, եթե մոդուլի կարգավորումներում User Info URL-ը սխալ է նշված։ |
INVALID_USERNAME_ATTRIBUTE | Այս սխալը կստանաք, եթե մոդուլի կարգավորումներում սխալ username attribute է նշված, կամ սխալ է տեղի ունենում username-ը ստանալու փորձի ժամանակ։ |
INVALID_TOKEN | Այս սխալը կստանաք, եթե ձեր տրամադրած թոքենը սխալ է կամ բացակայում է վերնագրում։ |
Հոդվածը վերցված է Drupal Documentation-ից։