আমি এখানে বেসিক প্রমাণীকরণটি ধরে নিচ্ছি।
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred
আপনি অন্যান্য উপায়ে ( Import-Clixml
ইত্যাদি) এর মাধ্যমে আপনার শংসাপত্র পেতে পারেন , তবে এটি কোনও [PSCredential]
অবজেক্ট হতে হবে ।
মন্তব্যের ভিত্তিতে সম্পাদনা করুন:
আপনার প্রদত্ত লিঙ্কটিতে তারা ব্যাখ্যা করার সাথে সাথে গিটহাব আরএফসি ভঙ্গ করছে :
কিছু সামান্য পার্থক্য নিয়ে আরএফসি 2617 এ সংজ্ঞায়িত করা হিসাবে এপিআই বেসিক প্রমাণীকরণ সমর্থন করে। মূল পার্থক্যটি হ'ল আরএফসি-র 401 অননুমোদিত প্রতিক্রিয়াগুলির সাথে অনাক্ষরিত অনুরোধগুলির উত্তর দেওয়া দরকার। অনেক জায়গায়, এটি ব্যবহারকারীর ডেটার অস্তিত্ব প্রকাশ করবে। পরিবর্তে, গিটহাব এপিআই 404 পাওয়া যায় নি বলে সাড়া দেয়। এটি HTTP লাইব্রেরিগুলির জন্য সমস্যা তৈরি করতে পারে যা একটি 401 অননুমোদিত প্রতিক্রিয়া অনুমান করে। সমাধানটি হ'ল ম্যানুয়ালি অনুমোদনের শিরোনামটি তৈরি করা।
পাওয়ারশেলগুলি Invoke-WebRequest
আমার জ্ঞানের সাথে শংসাপত্রগুলি প্রেরণের আগে 401 জবাবের জন্য অপেক্ষা করে, এবং যেহেতু গিটহাব কখনই একটি সরবরাহ করে না, আপনার শংসাপত্রগুলি কখনই প্রেরণ করা হবে না।
ম্যানুয়ালি হেডারগুলি তৈরি করুন build
পরিবর্তে আপনাকে নিজেরাই বুনিয়াদি লেখকের শিরোনাম তৈরি করতে হবে।
বেসিক প্রমাণীকরণ একটি স্ট্রিং নেয় যা ব্যবহারকারীর নাম এবং পাসওয়ার্ড একটি কোলন দ্বারা পৃথক করা হয় user:pass
এবং এর পরে বেস 64 এনকোডযুক্ত ফলাফলটি প্রেরণ করে।
এই জাতীয় কোড কাজ করা উচিত:
$user = 'user'
$pass = 'pass'
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
Authorization = $basicAuthValue
}
Invoke-WebRequest -Uri 'https://whatever' -Headers $Headers
আপনি কিছু স্ট্রিং কনটেনটেশন একত্রিত করতে পারেন তবে আমি এটি স্পষ্ট করে তুলতে চাই।
$pair = "$($user):$($pass)"
অনুমোদিত উত্তরটি চেক করুন। আমি