我需要从我的Web中传输音频。在标准的HTML-5音频中,src属性设置为WebAPI音频的URI。
问题是:使用Asp.Net标识保护的Web需要在标头中传递承载令牌,但是HTML音频标记不允许我们这样做。最后,我被遗漏了两种选择:
方法1.使用XHR请求和本地播放下载HTML。 方法2.通过查询字符串传递标头。这样,我们就可以在请求处理的时间点将令牌注入OWIN管道。
第一种方法是不可行的,因为如果我们在本地下载音频,就会忽略Web提供的流特性。
请您协助方法-2,即在Web方面,我们可以从Asp.Net读取承载令牌&然后启动Asp.Net身份验证?
发布于 2016-11-16 20:07:20
创建此提供程序类
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()
});现在,它将从url“./?access_ token =xxxxxxx”获得令牌,并尝试验证它。
https://stackoverflow.com/questions/34473724
复制相似问题