MVC .NET-cookie authentifiziert system acessing eine Web-Api mit token-Authentifizierung

Habe ich ein Mvc 5 client, der eine Ownin cookie-Authentifizierung.
Ich habe auch eine Web-Api, die geschützt werden mit Owin Bearer-token (ich habe VS2013 Web-Api-Vorlage, die den Token-Endpunkt)

Ok, jetzt ist mein Mvc 5 client verwenden müssen, meine WebApi.
Ich schuf eine Methode, um die bearer-token:

internal async Task<string> GetBearerToken(string siteUrl, string Username, string Password)
{
     HttpClient client = new HttpClient();

     client.BaseAddress = new Uri(siteUrl);
     client.DefaultRequestHeaders.Accept.Clear();

     HttpContent requestContent = new StringContent("grant_type=password&username=" + Username + "&password=" + Password, Encoding.UTF8, "application/x-www-form-urlencoded");

     HttpResponseMessage responseMessage = await client.PostAsync("Token", requestContent);

     if (responseMessage.IsSuccessStatusCode)
     {
         TokenResponseModel response = await responseMessage.Content.ReadAsAsync<TokenResponseModel>();
         return response.AccessToken;
     }

     return "";
}

Und in meiner Mvc action ich rief:

public async Task<ActionResult> Index()
{
     var token = await GetBearerToken("http://localhost:6144/", "teste", "123456");

     using (var client = new HttpClient())
     {
         client.DefaultRequestHeaders.Add("Authorization", "Bearer "+ token);

         var response = await client.GetAsync("http://localhost:6144/api/values");

         if (response.IsSuccessStatusCode)
         {
             var data = response.Content.ReadAsAsync<IEnumerable<string>>();

             return Json(data.Result, JsonRequestBehavior.AllowGet);
         }
     }   
}

Dass alles Prima funktioniert... Aber ich muss an die Web-Api in allen meinen Taten...
Also, wie kann ich halten, dass der token (trotz immer ein neues token für jeden request) und wie stellen Sie sicher, wenn es abgelaufen ist ... Ist es möglich zu halten, zusammen mit der Authentifizierung cookie irgendwie?
Best pratices zu befassen sich mit, Szenario?

Dank

InformationsquelleAutor der Frage Paul | 2014-03-21

Schreibe einen Kommentar