API कुंजी प्रमाणीकरण
API कुंजी प्रमाणीकरण Drupal REST APIs को सुरक्षित करने के सबसे सरल तरीकों में से एक है। एक बार जब आप अपने सभी उपयोगकर्ताओं के लिए API कुंजियाँ उत्पन्न कर लेते हैं, तो आप इन कुंजियों का उपयोग अपनी Drupal REST APIs तक सुरक्षित पहुँच के लिए कर सकते हैं।
आप ऐसा कर सकते हैं प्रत्येक API अनुरोध के Authorization header में उपयोगकर्ता का Drupal उपयोगकर्ता नाम और API कुंजी भेजकर। Drupal API Authentication मॉड्यूल फिर अनुरोध को उपयोगकर्ता नाम और उससे जुड़ी API कुंजी के आधार पर प्रमाणित करता है। यह मॉड्यूल Drupal 7, Drupal 8, Drupal 9, Drupal 10, और Drupal 11 के साथ संगत है।
सेटअप वीडियो:
पूर्व आवश्यकताएँ: डाउनलोड और इंस्टॉलेशन:
- Drupal REST & JSON API Authentication मॉड्यूल डाउनलोड और इंस्टॉल करें।
- REST UI: यह मॉड्यूल REST मॉड्यूल को कॉन्फ़िगर करने के लिए UI प्रदान करता है।
- अपनी Drupal साइट के Extend अनुभाग (/admin/modules) से निम्नलिखित वेब सेवा मॉड्यूल सक्षम करें:
- REST UI
- RESTful Web Services
- Serialization
Drupal में API कुंजी आधारित प्रमाणीकरण सेटअप करने के चरण:
- बेहतर समझ के लिए हम Drupal में Create User API पर API Key आधारित प्रमाणीकरण जोड़ने का उदाहरण लेंगे।
- कृपया ध्यान दें कि Drupal में उपयोगकर्ता बनाने के लिए /entity/user API का उपयोग किया जाता है।
API को सक्षम करें और निम्नानुसार मेथड्स और ऑपरेशन्स असाइन करें:
- पहला चरण API को सक्षम करना और उस API पर अनुमत मेथड्स और ऑपरेशन्स असाइन करना है। यह REST UI मॉड्यूल के माध्यम से या कॉन्फ़िगरेशन संशोधित करके किया जा सकता है।
- REST UI मॉड्यूल का उपयोग करते हुए API को सक्षम करने के लिए, REST UI मॉड्यूल के Configure बटन पर क्लिक करें (नीचे चित्र में दिखाया गया है)।
- हमारे उदाहरण के अनुसार, हमें /entity/user API को सक्षम करना है। इसके सामने दिए गए Enable विकल्प का उपयोग करके इसे सक्षम करें।
- अब, क्योंकि हमारा उद्देश्य Drupal में उपयोगकर्ता बनाना है, निम्नलिखित कॉन्फ़िग्स चुनें:
- Method: POST
- Format: json
- Authentication provider: rest_api_authentication
- rest_api_authentication चुनने से miniOrange REST API Authentication मॉड्यूल आपके /entity/user API को प्रमाणित कर सकेगा। आगे बढ़ने के लिए Save Configuration बटन पर क्लिक करें।
Drupal में API Key उपयोगकर्ता फ़ील्ड बनाएँ:
नोट: यदि आप मॉड्यूल का निःशुल्क संस्करण उपयोग कर रहे हैं, तो आप इस चरण को छोड़ सकते हैं।
इस चरण में हम निर्धारित करेंगे कि API Key का उपयोग API कॉल को प्रमाणित करने के लिए कैसे किया जाएगा। इसके लिए हमें एक उपयोगकर्ता गुण फ़ील्ड बनानी होगी जिसमें API Key संग्रहीत हो सके।
- Drupal के /admin/config/people/accounts/fields पथ पर जाकर Manage 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 कुंजी उत्पन्न करेंगे। इसके लिए REST API Authentication मॉड्यूल के /admin/config/people/rest_api_authentication/auth_settings पथ पर जाएँ।
- Enable Authentication चेकबॉक्स को सेलेक्ट करें और Save Settings पर क्लिक करें।
- API Key रेडियो बटन सेलेक्ट करें।
- आप एक विशिष्ट उपयोगकर्ता के लिए या सभी उपयोगकर्ताओं के लिए एक साथ API कुंजी उत्पन्न कर सकते हैं।
- अभी हम केवल एक उपयोगकर्ता के लिए API कुंजी उत्पन्न करेंगे।
- Enter username फ़ील्ड में उपयोगकर्ता नाम दर्ज करें और Generate API key for this user बटन पर क्लिक करें।
- अब आप अपनी उपयोगकर्ता प्रोफ़ाइल के API Key फ़ील्ड से उत्पन्न कुंजी देख सकते हैं।
- API कुंजी को संभालकर रखें क्योंकि इसे आगे API प्रमाणीकरण के समय उपयोग किया जाएगा।
Drupal भूमिकाओं को उपयोगकर्ता बनाने की अनुमति दें:
- यदि आवश्यक हो, तो आप नॉन-एडमिन Drupal भूमिकाओं को Drupal में उपयोगकर्ता बनाने की अनुमति दे सकते हैं। ऐसा करने के लिए, अपनी Drupal साइट के permissions अनुभाग (/admin/people/permissions) में जाकर Administer users अनुमति को संबंधित भूमिका को असाइन करें।
बस इतना ही!!!
- अब आइए API कुंजी प्रमाणीकरण का उपयोग करते हुए एक API कॉल के माध्यम से Drupal में एक उपयोगकर्ता बनाने का प्रयास करें।
उदाहरण:
- Drupal में उपयोगकर्ता बनाने के लिए आपको POST अनुरोध करना होगा, जिसमें उपयोगकर्ता का नाम और API कुंजी शामिल हो जो कि miniOrange REST API Authentication मॉड्यूल द्वारा जारी की गई हो। उपयोगकर्ता नाम और API कुंजी को 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 | जब आप Authorization हेडर नहीं भेजते या सर्वर द्वारा इसे हटा दिया जाता है, तो यह त्रुटि आती है। उदाहरण: {
"status": "error",
"error": "MISSING_AUTHORIZATION_HEADER",
"error_description": "Authorization header not received."
} |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE | जब Authorization हेडर भेजा गया हो लेकिन उसका प्रकार अमान्य हो। उदाहरण: {
"status": "error",
"error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
"error_description": "Authorization header must be the type of Basic Authentication."
} |
USER_DOES_NOT_EXIST | जब भेजे गए उपयोगकर्ता नाम से कोई खाता नहीं मिलता। उदाहरण: {
"status": "error",
"error": "USER_DOES_NOT_EXIST",
"error_description": "The user does not exist."
} |
INVALID_API_KEY | जब API कॉल में भेजी गई API कुंजी अमान्य या गलत हो। उदाहरण: {
"status": "error",
"error": "INVALID_API_KEY",
"error_description": "The API Key sent in the Request seems to be invalid or incorrect using invalid API Key."
} |
USER_NAME_MISSING | जब API कॉल में उपयोगकर्ता नाम मौजूद नहीं हो। उदाहरण: {
"status": "error",
"error": "USER_NAME_MISSING",
"error_description": "The username is missing from the request"
} |
INVALID_AUTHORIZATION_HEADER | जब हेडर को डिकोड नहीं किया जा सके या हेडर में उपयोगकर्ता नाम और API कुंजी न मिलें। उदाहरण: {
"status": "error",
"error": "INVALID_AUTHORIZATION_HEADER",
"error_description": "The authorization header seems to be invalid"
} |
लेख स्रोत: Drupal दस्तावेज़ीकरण