gpt4 book ai didi

c# - 使用引用 token 的 ASPNETCore SignalR 身份验证

转载 作者:行者123 更新时间:2023-12-04 10:55:46 24 4
gpt4 key购买 nike

我们在 Web API (netcoreapp2.2) 中使用 ASPNETCore.SignalR 1.1.0。

身份验证:我们为我们的项目使用 IdentityServer4 身份验证。

启动文件

 services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{
options.Authority = "http://IdentityServerDomainURL:8081/";
options.RequireHttpsMetadata = false;

options.ApiName = "name";
options.ApiSecret = "secret";

});

在 WebAPI 应用程序中,我们添加了 SignalR Hub。
JavaScript 客户端连接到此集线器。
以下是连接集线器的JS客户端代码。
var connection = new signalR.HubConnectionBuilder()
.withUrl("http://localhost:52177/SignalRHub/",
{
accessTokenFactory: () => "referencetokenValue"
}).build();

JS 客户端在连接到 Hub 时正在传递 Reference token 。
我们需要在 WebAPI 项目中对 SignalR 使用 Reference token 身份验证。

在 Microsoft 的站点中,仅提供了 SignalR 的 JWT token 身份验证文档。没有在任何地方找到任何关于引用 token 的文件。

需要帮助在 startup.cs 文件中添加引用 token 身份验证的配置。

最佳答案

找到解决方案 here .

查询字符串中的任何 token 都可以添加到请求 header 中,如下所示:-

app.Use(async (context, next) =>
{
if (context.Request.Path.Value.StartsWith("/SignalRHub/"))
{
var bearerToken = context.Request.Query["access_token"].ToString();

if (!String.IsNullOrEmpty(bearerToken))
context.Request.Headers.Add("Authorization", new string[] { "bearer " + bearerToken });
}

await next();
});

以上代码需要在启动类的Configure函数中添加。

关于c# - 使用引用 token 的 ASPNETCore SignalR 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59210696/

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