2015-12-26 5 views
8

मुझे अपने वेब एपीआई से ऑडियो स्ट्रीम करने की आवश्यकता है। मानक HTML-5 ऑडियो स्रोत विशेषता में WebAPI से ऑडियो के यूआरआई पर सेट किया गया है।वेब एपीआई/Asp.Net पहचान के विरुद्ध एचटीएमएल -5 ऑडियो डाउनलोड अनुरोध को प्रमाणित कैसे करें?

समस्या यह है: एएसपीनेट पहचान के साथ सुरक्षित वेब एपीआई के लिए हेडर में पारित होने वाले भालू टोकन की आवश्यकता होती है, हालांकि HTML ऑडियो टैग हमें करने की अनुमति नहीं देता है। अंततः मुझे दो विकल्पों के साथ छोड़ दिया गया है:

दृष्टिकोण 1. एक्सएचआर अनुरोध & का उपयोग कर HTML डाउनलोड करें स्थानीय रूप से खेलें।

दृष्टिकोण 2. क्वेरी स्ट्रिंग के माध्यम से पास हेडर। ताकि हम अनुरोध प्रक्रिया के दौरान समय पर ओडब्ल्यूआईएन पाइपलाइन में टोकन इंजेक्ट कर सकें।

ऊपर वर्णित पहला दृष्टिकोण व्यवहार्य नहीं है, क्योंकि अगर हम स्थानीय रूप से ऑडियो डाउनलोड करते हैं तो हम वेब एपीआई द्वारा प्रदान की जाने वाली स्ट्रीमिंग सुविधाओं को याद करेंगे।

क्या आप दृष्टिकोण -2 के साथ सहायता कर सकते हैं ताकि वेब एपीआई पक्ष पर हम यूआरएल & से बीयरर टोकन पढ़ सकें और फिर Asp.Net पहचान प्रमाणीकरण शुरू करें?

उत्तर

4

इस प्रदाता वर्ग

public class QueryStringOAuthBearerProvider : OAuthBearerAuthenticationProvider 
{ 
    public override Task RequestToken(OAuthRequestTokenContext context) 
    { 
     var value = context.Request.Query.Get("access_token"); 

     if (!string.IsNullOrEmpty(value)) 
     { 
      context.Token = value; 
     } 

     return Task.FromResult<object>(null); 
    } 
} 

Startup.cs में इसका इस्तेमाल बनाएं

OAuthOptions = new OAuthAuthorizationServerOptions 
{ 
    TokenEndpointPath = new PathString("/Token"), 
    Provider = new ApplicationOAuthProvider(PublicClientId), 
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), 
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
    // In production mode set AllowInsecureHttp = false 
    AllowInsecureHttp = true     
}; 

// Enable the application to use bearer tokens to authenticate users 

//app.UseOAuthBearerTokens(OAuthOptions); // old line 

app.UseOAuthAuthorizationServer(OAuthOptions); // new line 

// Enable the application to retrieve tokens from query string to authenticate users 
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions() 
{ 
    Provider = new QueryStringOAuthBearerProvider() 
}); 

अब यह यूआरएल से टोकन प्राप्त होगा ".... /? ACCESS_TOKEN = xxxxxxx" इस तरह और इसे सत्यापित करने का प्रयास करें।

+0

धन्यवाद। क्या कोई भी तरीका केवल एक क्रिया के लिए अनुकूलित कर सकता है। आपके दृष्टिकोण में 'QueryStringOAuthBearerProvider' पर प्रदाता बदलने के लिए हमें अन्य एपिस के साथ-साथ URL में टोकन में बीयरर पास करने के लिए लागू किया जाएगा। – Abhijeet

+0

आप अपने एपीआई को दो टुकड़ों में विभाजित कर सकते हैं उनमें से एक केवल एक क्रिया के लिए इस दृष्टिकोण का उपयोग करता है, दूसरा क्लासिक दृष्टिकोण का उपयोग करता है। –

संबंधित मुद्दे