Azure信号器集线器授权来自.AddAzureADB2CBearer

Azure信号器集线器授权来自.AddAzureADB2CBearer,azure,asp.net-core,signalr,azure-ad-b2c,Azure,Asp.net Core,Signalr,Azure Ad B2c,几天来,我一直在互联网上寻找关于信号器集线器类[授权]的答案。我正在使用Azure B2C对用户进行身份验证。当类没有使用[Authorize]修饰时,一切都很好,但是我要求用户获得授权,以便访问声明。我的所有控制器都在正确验证 [Authorize] public class SignalRHub : Hub { My Signal服务正在Azure上运行,并在服务器上启动,如下所示: public void ConfigureServices(IServiceColle

几天来,我一直在互联网上寻找关于信号器集线器类[授权]的答案。我正在使用Azure B2C对用户进行身份验证。当类没有使用[Authorize]修饰时,一切都很好,但是我要求用户获得授权,以便访问声明。我的所有控制器都在正确验证

 [Authorize]
    public class SignalRHub : Hub
    {
My Signal服务正在Azure上运行,并在服务器上启动,如下所示:


public void ConfigureServices(IServiceCollection services)
{

 services.AddAuthentication(AzureADB2CDefaults.BearerAuthenticationScheme)
                .AddAzureADB2CBearer(options => Configuration.Bind("AzureAdB2C", options));

 .....

 services.AddSignalR().AddAzureSignalR(ConnectionString)

}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoint =>
            {
                .....

                endpoint.MapHub<AzureSignalRSevice.SignalRHub>("/rhub");

            });
}

 var connection = new HubConnectionBuilder().WithUrl("https://localhost:44301/rhub", options =>
            {
                options.AccessTokenProvider = () => Task.FromResult(token);
            }).Build();
我读过的所有文章都说令牌是作为参数传递的,但是在我的实例中,它是在授权头中正确发送的

 [Authorize]
    public class SignalRHub : Hub
    {
我已经尝试配置JWTBeareOptions并将令牌传递给context.token,但是我得到了相同的身份验证失败

services.Configure<JwtBearerOptions>(AzureADB2CDefaults.JwtBearerAuthenticationScheme, options =>
           {
}

services.Configure(AzureADB2CDefaults.JwtBearerAuthenticationScheme,选项=>
{
}
OnChallenge在上下文中使用无效的\u令牌失败时被命中

所有软件包都是在Core 3.1.2上运行的最新软件包

我看过很多文章,这是迄今为止最好的

不过它不使用B2C认证。

我已经让它工作了! 解决方案是包括身份验证方案

 [Authorize(AuthenticationSchemes = AzureADB2CDefaults.BearerAuthenticationScheme + ", " + AzureADB2CDefaults.JwtBearerAuthenticationScheme)]
public class SignalRHub : Hub
    {
}


这是认证Azure SignalR hub.的教程,也不使用AzureB2C认证。