2015-07-01 9 views
5

Ok, więc mam usługę uwierzytelniania WebAPI, która jest używana dla żądania tokena i zwraca token nośnika do klienta, dodałem identyfikator AppId i Api do właściwości, więc dostać z powrotemKorzystanie z wielu schematów autoryzacji (HMAC i OATH)

{ 
"access_token": "...", 
"token_type": "bearer", 
"expires_in": 86399, 
"dm:appid": "1", 
"dm:apikey": "...", 
".issued": "Wed, 01 Jul 2015 20:46:45 GMT", 
".expires": "Thu, 02 Jul 2015 20:46:45 GMT" 
} 

AppID i Klucz API powinny być używane przez klienta do wygenerowania HMAC SHA256 podpisu dla każdego żądania.

Na moim kontroler Użyłem atrybut autoryzować i stworzył atrybut HmacAuthentication które realizują IAuthenticationFilter

[RoutePrefix("api/account")] 
[Authorize] 
[HmacAuthentication] 
public class AccountController : ApiController 
{ 
    // rest of controller here 
} 

Problem mam jest to, że każdy wniosek do tego kontrolera będzie oczekiwać nagłówek Authorization: Bearer ... i atrybut HmacAuthentication oczekuje także nagłówek Authorization: amx.

Teraz wiem, że można mieć tylko jeden nagłówek Authorization więc moja quandry to w jaki sposób można realizować zarówno nagłówki autoryzacji bez zerwania HTTP, ma ktoś osiąga zastosowanie zarówno OWIN OAuth i uwierzytelniania HMAC

Śledziłem te przykłady od Taiseer Joudeh

Token Based Authentication using ASP.NET Web API 2, Owin, and Identity Secure ASP.NET Web API using API Key Authentication – HMAC Authentication

+0

jestem w obliczu podobnej sytuacji. Zastanawiam się po prostu używać niestandardowego nagłówka zamiast próbować zrobić dwa nagłówki Authorization. Czy wymyśliłeś coś lepszego? – Glaucus

Odpowiedz

0

To był długi czas bez odpowiedzi, a ponieważ mam problem rozwiązany mój oryginalny Pomyślałem powinienem zakładać rozwiązanie tu więc inni mogą skorzystać tego.

Ostatecznie rozwiązaniem było dodanie niestandardowego nagłówka, takiego jak @Glaucus zasugerowanego w komentarzu. W przypadku standardowej autoryzacji OAuth dodałem atrybut nagłówka Authorize. Aby zaspokoić moje zapotrzebowanie na HMAC, po prostu dodałem do nagłówka atrybut X-Authorize i zmodyfikowałem mój kod tak, aby używał tego nagłówka.

Teraz mogę mieć usługę WebAPI zabezpieczone tokenu OAuth i wdrażając zezwolenia HMAC sprawie wniosków

Powiązane problemy