Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信号承载令牌认证_C#_Asp.net_Authentication_Signalr_Asp.net Identity - Fatal编程技术网

C# 信号承载令牌认证

C# 信号承载令牌认证,c#,asp.net,authentication,signalr,asp.net-identity,C#,Asp.net,Authentication,Signalr,Asp.net Identity,嗨,我正在尝试设置带有承载身份验证的信号器。当我调试Requesttoken方法时,承载令牌被成功接收。但是,当我的signar客户端使用承载令牌调用受保护(authorize)方法时,他就没有经过身份验证。我还尝试实现自定义AuthorizeAttribute,但AccessTokenFormat.Unprotect始终返回null 错误消息: Caller is not authorized to invoke the Send method on Hub. 设置: Web Api项目

嗨,我正在尝试设置带有承载身份验证的信号器。当我调试Requesttoken方法时,承载令牌被成功接收。但是,当我的signar客户端使用承载令牌调用受保护(authorize)方法时,他就没有经过身份验证。我还尝试实现自定义AuthorizeAttribute,但AccessTokenFormat.Unprotect始终返回null

错误消息:

Caller is not authorized to invoke the Send method on Hub. 
设置:

  • Web Api项目
    -Web Api项目中的信号器中心
    -信号机的启动配置
信号机启动配置:

app.Map("/signalr", map =>
{
    map.UseCors(CorsOptions.AllowAll);
    map.UseOAuthAuthorizationServer(OAuthOptions);
    map.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
    {
        Provider = new SignalrOAuthProvider()
    });

    var configuration = new HubConfiguration(){
        EnableDetailedErrors = true
    };

    map.RunSignalR(configuration);
});
以及一个自定义OAuthprovider,它从cookie或querystring读取承载令牌

public class SignalrOAuthProvider : OAuthBearerAuthenticationProvider
{
    public override Task RequestToken(OAuthRequestTokenContext context)
    {
        // var value = context.Request.Query.Get("bearer");
        var value = context.OwinContext.Request.Cookies["BearerToken"];
        if (!string.IsNullOrEmpty(value))
        {
            context.Token = value;
         }

         return Task.FromResult(null);
     }
}

确保在集线器上使用[System.Web.Http.Authorize]属性。然后在报头中传递承载令牌


授权:持票人“您的代币”

您好,您知道这件事吗?