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