Kotlin के लिए OAuth क्लाइंट: Ktor OAuth लाइब्रेरी
\n\nKtor OAuth लाइब्रेरी Ktor HTTP क्लाइंट के लिए एक आधिकारिक एक्सटेंशन है, जो Kotlin अनुप्रयोगों में OAuth 2.0 प्रोटोकॉल को लागू करने के लिए डिज़ाइन किया गया है। यह लोकप्रिय OAuth प्रदाताओं (Google, GitHub, Facebook, VK आदि) के साथ एकीकरण का एक लचीला और टाइप-सुरक्षित तरीका प्रदान करता है, साथ ही कस्टम एंडपॉइंट का भी समर्थन करता है। यह लाइब्रेरी Ktor इकोसिस्टम का हिस्सा है और इसका उपयोग सर्वर और क्लाइंट दोनों Kotlin अनुप्रयोगों में किया जा सकता है।
\n\nमुख्य उपयोग परिदृश्य सुरक्षित REST API के साथ काम करने के लिए एक्सेस टोकन प्राप्त करना है। लाइब्रेरी टोकन के लिए प्राधिकरण कोड के आदान-प्रदान, टोकन को रिफ्रेश करने (refresh token) और सत्र स्थिति प्रबंधन की प्रक्रिया को स्वचालित करती है।
\n\nमुख्य विशेषताएं
\n\n- \n
- OAuth 2.0 फ़्लो का समर्थन: Authorization Code Grant, Implicit Grant, Client Credentials, Resource Owner Password Credentials. \n
- लोकप्रिय प्रदाताओं के लिए अंतर्निहित समर्थन: Google, GitHub, Facebook, Twitter, VK, Yandex, Microsoft और अन्य। \n
- कस्टम प्रदाता: प्राधिकरण, टोकन और रीडायरेक्ट एंडपॉइंट को मैन्युअल रूप से सेट करने की क्षमता। \n
- स्वचालित टोकन रिफ्रेश: एक्सेस टोकन समाप्त होने पर स्वचालित कॉल के साथ रिफ्रेश टोकन का समर्थन। \n
- सत्रों के साथ कार्य: मेमोरी, फ़ाइलों, डेटाबेस या कस्टम स्टोरेज में टोकन संग्रहीत करना। \n
- Ktor क्लाइंट के साथ एकीकरण: प्लगइन के माध्यम से एकीकृत कॉन्फ़िगरेशन, सभी ट्रांसपोर्ट (CIO, Apache, OkHttp) का समर्थन। \n
- सुरक्षा: CSRF हमलों से बचाव के लिए PKCE (Proof Key for Code Exchange) का समर्थन। \n
स्थापना
\n\nलाइब्रेरी को शामिल करने के लिए, build.gradle.kts में निर्भरता जोड़ें:
dependencies {\n // मुख्य Ktor क्लाइंट\n implementation("io.ktor:ktor-client-core:2.3.7")\n // OAuth प्लगइन\n implementation("io.ktor:ktor-client-auth:2.3.7")\n // विशिष्ट इंजन (उदाहरण के लिए, CIO)\n implementation("io.ktor:ktor-client-cio:2.3.7")\n}\n\n\nMaven के लिए:
\n\n<dependency>\n <groupId>io.ktor</groupId>\n <artifactId>ktor-client-auth</artifactId>\n <version>2.3.7</version>\n</dependency>\n\n\nउदाहरण: Google OAuth के माध्यम से प्रमाणीकरण
\n\nGoogle पर कॉन्फ़िगर किए गए OAuth प्लगइन के साथ एक HTTP क्लाइंट बनाएं:
\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.auth.*\nimport io.ktor.client.plugins.auth.providers.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\n\nsuspend fun main() {\n val client = HttpClient {\n install(Auth) {\n oauth {\n clientId = System.getenv("GOOGLE_CLIENT_ID")\n clientSecret = System.getenv("GOOGLE_CLIENT_SECRET")\n providerLookup = {\n OAuthServerSettings.OAuthAuthorizationCodeServerSettings(\n authorizeUrl = "https://accounts.google.com/o/oauth2/auth",\n tokenUrl = "https://oauth2.googleapis.com/token",\n clientId = clientId,\n clientSecret = clientSecret,\n redirectUrl = "http://localhost:8080/callback"\n )\n }\n urlProvider = { request ->\n // उपयोगकर्ता को रीडायरेक्ट करने के लिए URL जनरेट करें\n "http://localhost:8080/login"\n }\n }\n }\n }\n\n // Google Sheets API के लिए अनुरोध का उदाहरण\n val response: HttpResponse = client.get("https://sheets.googleapis.com/v4/spreadsheets/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/values/Sheet1!A1:D5")\n println(response.bodyAsText())\n}\n\n\nउदाहरण: PKCE के साथ कस्टम प्रदाता
\n\nसुरक्षा बढ़ाने के लिए, PKCE (P