2014-05-06 13 views
6

'dan güvenli bir şekilde çağırarak İleti kuyruğunu izleyen, iletileri çeken ve iletileri işleyebilmek için eş Web Web Sitesinde bir Web API'si çağıran sürekli olarak planlanmış bir web işim var (bu durumda SignalR kullanarak) uygun kullanıcılara bildirim göndermek için).Bir WebSite tarafından barındırılan Web API'sini bir Azure WebJob

Bu durumda, web API'sini güvenli bir şekilde çağırmanın en iyi yolu ne olurdu? Web sitesinde barındırılan API, başka şekilde açıkça ortaya çıkar. Belki de Temel Kimlik Doğrulama'yı kullanarak veya bir güvenlik belirtecini yapılandırmada ve işten web API'sına aktarırken bir şey. Veya özel bir AuthorizeAttribute oluşturuluyor mu?

Web API çağrısını WebJob'dan güvenli hale getirme konusundaki düşünceleriniz çok takdir edilecektir. API sadece WebJob'dan kalınabilir olmalıdır.

GÜNCELLEME: Bunun gibi bir şey?

Önce bu sınıfı beyan ediyorum;

public class TokenAuthenticationHeaderValue : AuthenticationHeaderValue 
{ 
    public TokenAuthenticationHeaderValue(string token) 
     : base("Token", Convert.ToBase64String(Encoding.UTF8.GetBytes(token))) 
    { } 
} 

sonra arayan (WebJob) bir HTTP isteği yapan bir yetkilendirme başlığını ayarlamak için bu sınıfı kullanır; Biz yetkilendirme başlığındaki beklenen belirteci arayan isteğini kontrol Web API

using (var client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri(/* something */); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    client.DefaultRequestHeaders.Authorization = new TokenAuthenticationHeaderValue("TOKEN FROM CONFIG"); 
    // .... 

içinde, şu anda kod oldukça çirkin ama bu özel ayrıntı sokulabilirdi; Sitesi ve İş de bu belirteci erişebilir,

public HttpResponseMessage Post([FromBody]TheThing message) 
{ 
    var authenticationHeader = Request.Headers.Authorization; 
    var token = Encoding.UTF8.GetString(Convert.FromBase64String(authenticationHeader.Parameter)); 
    if (authenticationHeader.Scheme != "Token" || token != "TOKEN FROM CONFIG") 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "No, no, no. That's naughty!"); 
    } 
    // All OK, carry on. 

Yani bu şekilde WebJob akran web sitesindeki Web API çağrıları ve güvenlik güvenli Azure biçimde tutulan bir belirteç geçirerek elde edilir.

Daha iyi bir fikir?

+0

Daha iyi bir çözüm buldunuz mu? –

+0

Maalesef değil. –

cevap

1

Temel Kimlik Doğrulama gibi görünüyor, senaryo için iyi olur.

Harika eğitim burada: Basic Authentication

İlgili konular