HTTP-anrop med Basic Authentication i c# och php

2014-11-30

För det dåliga minnets skull lägger jag ut hur man anropar ett API som är skyddat med Basic HTTP Authentication i php och c#.

Jag håller på att uppgradera en webbapplikation från ASP.NET MVC 4 till verision 5.2. Samtidigt byter jag autentiseringslösning från Windows till Forms. HTML-delarna var enkla, men för att säkra Web API-delarna krävdes det en del jobb. Jag valde en autentiseringslösning som bygger på Basic HTTP Authentication.

Bara för det dåliga minnets skull lägger jag ut hur man anropar ett API som är skyddat med Basic HTTP Authentication i php och c#.

c#

[TestMethod]
public void TestMethodBasicHttpAuth()
{
  const string targeturl = "URLENDPOINT";
  HttpClient client = new HttpClient();
  var byteArray = Encoding.ASCII.GetBytes("USERNAME:PASSWORD");
  client.DefaultRequestHeaders.Authorization 
    = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
  var response = client.GetAsync(targeturl).Result;
  HttpContent content = response.Content;
  string result = content.ReadAsStringAsync().Result;
  Assert.IsTrue(result.Length > 500);
}
Gist

php

<?PHP
$remote_url = 'URLENDPOINT';
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header' => "Authorization: Basic " . base64_encode("USERNAME:PASSWORD")                 
  )
);
$context = stream_context_create($opts);
$file = file_get_contents($remote_url, false, $context);
print($file);
?>
Gist

php-varianten kommer från Stack Overflow

/Bibliotekarien - The Librarian