SignalR 核心 JWT 声明

问题描述 投票:0回答:1
cfg.Events = new JwtBearerEvents
                    {
                        OnMessageReceived = context =>
                        {
                            var accessToken = context.Request.Query["access_token"];

                            // If the request is for our hub...
                            var path = context.HttpContext.Request.Path;
                            if (!string.IsNullOrEmpty(accessToken) &&
                                (path.StartsWithSegments("/sas")))
                            {
                                // Read the token out of the query string
                                context.Token = accessToken;
                            }

                            return Task.CompletedTask;
                        }
                    };

在我的中心,我试图得到这样的索赔:

Context.User.Claims

但它们是空的。

是否有任何选项可以在我的信号中心获取我的 JWT 声明?

authentication jwt signalr asp.net-core-signalr
1个回答
0
投票

我有一个类似的问题,我通过替换这个解决了它:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)

这样:

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})

出于某种原因,我必须明确定义

DefaultAuthenticateScheme
。我仍然不知道为什么
DefaultAuthenticateScheme
没有按照文档自动回退到
DefaultScheme
。如果我找到原因,我会更新答案。

© www.soinside.com 2019 - 2024. All rights reserved.