gpt4 book ai didi

来自 .AddAzureADB2CBearer 的 Azure SignalR Hub 授权

转载 作者:行者123 更新时间:2023-12-03 02:42:13 26 4
gpt4 key购买 nike

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

 [Authorize]
public class SignalRHub : Hub
{

我的 SignalR 服务正在 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");

});
}

调试器指示客户端何时尝试连接:

Microsoft.AspNetCore.Hosting.Diagnostics:信息:请求开始 HTTP/1.1 POST https://localhost:44301/rhub/negotiate?negotiateVersion=1 0

Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler:信息:AzureADB2CJwtBearer 未经过身份验证。失败消息:没有可用于 token 的 SecurityTokenValidator:{Token}Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息:授权失败。Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler:信息:AuthenticationScheme:AzureADB2CJwtBearer 受到质询。

客户端代码如下:

 var connection = new HubConnectionBuilder().WithUrl("https://localhost:44301/rhub", options =>
{
options.AccessTokenProvider = () => Task.FromResult(token);
}).Build();

我读过的所有文章都说 token 是作为参数传递的,但在我的实例中,它是在授权 header 中正确发送的。

我尝试配置 JwtBearerOptions 并将 token 传递给 context.Token,但是我遇到了相同的身份验证失败。

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

当 OnChallenge 因上下文中的 invalid_token 失败时,就会触发 OnChallenge。

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

我看过很多文章,这是迄今为止最好的 https://github.com/dotnet/aspnetcore/issues/10582

但它不使用 B2C 身份验证。

最佳答案

我已经可以使用了!解决方案是包含身份验证方案

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

关于来自 .AddAzureADB2CBearer 的 Azure SignalR Hub 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60545395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com