SignalR核心JWT声明

时间:2019-02-25 10:03:26

标签: authentication jwt signalr token core

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索赔?

1 个答案:

答案 0 :(得分:0)

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

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)

与此:

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

由于某种原因,我不得不明确定义DefaultAuthenticateScheme。我仍然不知道为什么DefaultAuthenticateScheme并没有自动退回到DefaultScheme,根据文档。如果找出原因,我将更新答案。