Haskell:
বেসিক অথেন্টিকেশন সহ HTTP রিকুয়েস্ট প্রেরণ
কিভাবে:
আপনার http-conduit
প্যাকেজের প্রয়োজন হবে HTTP কাজের জন্য এবং প্রমাণীকরণের জন্য base64-bytestring
। তাদের আমদানি করুন এবং আপনার অনুরোধে প্রমাণীকরণ যোগ করতে applyBasicAuth
ব্যবহার করুন।
import Network.HTTP.Simple
import Data.ByteString.Char8 (pack)
import Data.ByteString.Base64 (encode)
-- বেসিক অথ হেডার গঠন করুন
let username = "user"
let password = "pass"
let auth = encode $ pack (username ++ ":" ++ password)
-- আপনার অনুরোধ তৈরি করুন
request' = parseRequest_ "GET http://example.com/secret"
let request = setRequestHeader "Authorization" ["Basic " <> auth] request'
-- অনুরোধ সম্পাদন করুন
response <- httpLBS request
-- প্রতিক্রিয়া নিয়ন্ত্রণ করুন
print $ getResponseBody response
যদি আপনার প্রমাণীকরণ ঠিক থাকে, তবে এটি এপিআই প্রতিক্রিয়া আউটপুট দেবে।
গভীরভাবে দেখা
বেসিক অথ ওয়েব বছরে প্রাচীন, ৯০ এর দশকের প্রাথমিকে ডিজাইন করা হয়েছিল, এবং এটি এর সাধারণতার চেয়ে সহজ: একটি হেডারে বেস৬৪ এনকোডেড username:password
প্রেরিত হয়। এটি টোকেনের মেয়াদ শেষের মতো ফ্যান্সি বৈশিষ্ট্য অভাব এবং অবিচ্ছদ্য হওয়ায়, সবসময় HTTPS এর মাধ্যমে ব্যবহৃত হওয়া উচিৎ।
OAuth এর মতো বিকল্পগুলি আরও নিরাপদ, বিশিষ্ট নিয়ন্ত্রণ প্রদান করে। Haskell এর জন্য, http-client
এবং wreq
এর মতো লাইব্রেরিগুলি আপনার জন্য আরও বিকল্প এবং নমনীয়তা প্রদান করে।
বাস্তবায়নের বিষয়ে, প্রমাণীকরণ কখনো হার্ডকোড করবেন না! উৎপাদনে পরিবেশ ভেরিয়েবল ব্যবহার করুন অথবা একটি নিরাপদ ভল্ট ব্যবহার করুন। এবং যেহেতু base64
এনকোডিং এনক্রিপশন নয় (যে কেউ এটি ডিকোড করতে পারে), HTTP এর বিষয়ে ভালো ধারণা শুধু একটা ভালো ধারণা নয়, এটি একটি অপরিহার্য বিষয়।
আরও দেখুন
- Haskell
http-conduit
ডক্স: https://hackage.haskell.org/package/http-conduit - এনকোডিং এর জন্য
base64-bytestring
: https://hackage.haskell.org/package/base64-bytestring - কড়া নিরাপত্তার জন্য, Haskell এ OAuth2 সম্পর্কে জানুন: https://hackage.haskell.org/package/hoauth2
- গোপনীয়তা সংরক্ষণের সেরা অনুশীলন সম্পর্কে পড়ুন: https://www.yesodweb.com/book/security-considerations