Yanıtlar:
http://curl.haxx.se/docs/httpscripting.html
Bkz. Bölüm 6. HTTP Kimlik Doğrulaması
HTTP Kimlik Doğrulaması
HTTP Kimlik Doğrulaması, sunucuya kullanıcı adınızı ve şifrenizi söyleme yeteneğidir, böylece yaptığınız isteği yapmanıza izin verildiğini doğrulayabilir. HTTP'de kullanılan temel kimlik doğrulaması (varsayılan olarak curl'un kullandığı türdür) düz metindir tabanlıdır, bu da kullanıcı adı ve parolayı sadece hafifçe gizlenmiş, ancak yine de sizinle uzak sunucu arasındaki ağda koklayan herkes tarafından tamamen okunabilir anlamına gelir.
Curl'a kimlik doğrulaması için bir kullanıcı ve parola kullanmasını söylemek için:
curl --user name:password http://www.example.com
Site farklı bir kimlik doğrulama yöntemi gerektirebilir (sunucu tarafından döndürülen başlıkları kontrol edin) ve ardından --ntlm, --digest, --negotiate veya even --anyauth size uygun seçenekler olabilir.
Bazen HTTP erişiminize yalnızca bir HTTP proxy kullanılarak erişilebilir. Bu özellikle çeşitli şirketlerde yaygındır. Bir HTTP proxy'si, istemcinin İnternet'e erişmesine izin vermek için kendi kullanıcı ve parolasını gerektirebilir. Kıvrımlı olanları belirtmek için aşağıdaki gibi bir şey çalıştırın:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Proxy'niz NTLM yöntemi kullanılarak kimlik doğrulamasının yapılmasını gerektiriyorsa, Digest kullanımı --proxy-digest gerektiriyorsa --proxy-ntlm kullanın.
Bu kullanıcı + şifre seçeneklerinden herhangi birini kullanır, ancak şifre bölümünü dışarıda bırakırsanız, curl şifreyi etkileşimli olarak sorar.
Bir program çalıştırıldığında, sistemin çalışan süreçlerini listelerken parametrelerinin görülebileceğini unutmayın. Böylece, diğer kullanıcılar parolalarınızı düz komut satırı seçenekleri olarak iletirseniz izleyebilirler. Bunu atlatmanın yolları var.
HTTP Kimlik Doğrulaması bu şekilde çalışırken, birçok web sitesinin oturum açma vb. Sağladığında bu kavramı kullanmayacağını belirtmek gerekir. Bununla ilgili daha fazla ayrıntı için aşağıdaki Web Girişi bölümüne bakın.
Tıklamak zorunda kalmamak için eklemeniz yeterlidir:
curl --user name:password http://www.example.com
veya OAuth 2 için kimlik doğrulaması göndermeye çalışıyorsanız:
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
Seçenek büyüktür.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
her zaman eksik yetkilendirme üstbilgisi hatası alıyorum ile bir yetkilendirme başlığı eklemeye çalışıyorum
<Base64EncodedCredentials>
Timothy-kansaki @ tarafından belirtildiği gibi, sen komutunu kullanarak kodlanmış kimlik alabilirsiniz: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Referans için bkz. Stackoverflow.com/questions/16918602/…
Taşıyıcı jetonları şöyle görünür:
curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
( php-curl cevabı arayanlar için )
$service_url = 'https://example.com/something/something.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);
var_dump($response);
Bu benim için çalıştı:
curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
HTTP Temel Yetkilendirme için:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
değiştirin _your_token_
ve URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
temel kimlik doğrulama jetonunu oluşturur.
-H "Authorization: Basic <_your_token_>"
ile aynı etkiyi yapar --user login:password
. Kontrol edebilirsinizcurl -v
Kullanırken dikkatli olun:
curl -H "Authorization: token_str" http://www.example.com
token_str
ve Authorization
boşlukla ayrılmalıdır, aksi takdirde sunucu tarafı HTTP_AUTHORIZATION
ortamı alamaz .
Görüşme sırasında jetonunuz yoksa, biri jetonu almak için diğeri ise jetonu yanıttan çıkarmak için iki arama yapmanız gerekir,
grep belirteci | kes -d, -f1 | kes -d \ "-f4
çünkü jetonun yanıttan çıkarılmasıyla ilgilenen kısımdır.
echo "Getting token response and extracting token"
def token = sh (returnStdout: true, script: """
curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4
""").split()
Jetonu çıkardıktan sonra, aşağıdaki çağrıları yapmak için jetonu kullanabilirsiniz.
echo "Token : ${token[-1]}"
echo "Making calls using token..."
curl -S -i -k -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources