मैं यहां बेसिक ऑथेंटिकेशन मान रहा हूं।
$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred
आप अन्य माध्यमों ( Import-Clixml
, आदि) के माध्यम से अपनी साख प्राप्त कर सकते हैं , लेकिन इसके लिए एक [PSCredential]
वस्तु होना आवश्यक है ।
टिप्पणियों के आधार पर संपादित करें:
GitHub RFC को तोड़ रहा है क्योंकि वे आपके द्वारा दिए गए लिंक में बताते हैं :
एपीआई RFC2617 में थोड़े बहुत अंतर के साथ बुनियादी प्रमाणीकरण का समर्थन करता है। मुख्य अंतर यह है कि आरएफसी को अनधिकृत अनुरोधों को 401 अनधिकृत प्रतिक्रियाओं के साथ जवाब देने की आवश्यकता है। कई स्थानों पर, यह उपयोगकर्ता डेटा के अस्तित्व का खुलासा करेगा। इसके बजाय, GitHub API 404 Not Found के साथ प्रतिक्रिया करता है। 401 अनधिकृत प्रतिक्रिया मानने वाले HTTP पुस्तकालयों के लिए यह समस्या हो सकती है। समाधान मैन्युअल रूप से प्राधिकरण हेडर को क्राफ्ट करना है।
Powershell Invoke-WebRequest
मेरे ज्ञान को साख भेजने से पहले 401 की प्रतिक्रिया की प्रतीक्षा करता है, और चूंकि GitHub कभी भी एक प्रदान नहीं करता है, इसलिए आपकी साख कभी नहीं भेजी जाएगी।
मैन्युअल रूप से हेडर का निर्माण करें
इसके बजाय आपको खुद ही आधारभूत हेडर बनाना होगा।
मूल प्रमाणीकरण में एक स्ट्रिंग होती है जिसमें एक उपनिवेश द्वारा अलग किए गए उपयोगकर्ता नाम और पासवर्ड शामिल होते हैं 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)"
स्वीकृत उत्तर की जांच करनी चाहिए । मैं ऊपर का उपयोग कर रहा था और इसने मुझे बहुत दर्द दिया