如何解决如何将自定义 JWT 令牌身份验证添加到 .NET Framework SignalR 服务器?
我使用 .NET Framework(不是 .NET Core)创建了一个 SignalR 服务器。它工作正常。现在,我想为其添加自定义 JWT 身份验证。
聊天中心:
public class ChatHub : Hub
{
[Authorize]
public void Send(string name,string message)
{
Clients.All.broadcastMessage(name,message);
}
}
Startup.cs:
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Microsoft.Owin.Security.OAuth;
using Owin;
using Signalrserver.Authorization;
using Signalrserver.Providers;
[assembly: OwinStartup(typeof(Signalrserver.Startup))]
namespace Signalrserver
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/signalr",map =>
{
map.UseCors(CorsOptions.AllowAll);
map.USEOAuthBearerAuthentication(new OAuthBearerAuthenticationoptions()
{
Provider = new QueryStringOAuthBearerProvider()
});
map.RunSignalR();
});
}
}
}
QueryStringOAuthBearerProvider:
using System;
using System.Threading.Tasks;
using Microsoft.Owin.Security.OAuth;
namespace Signalrserver.Providers
{
public class QueryStringOAuthBearerProvider : OAuthBearerAuthenticationProvider
{
public override Task RequestToken(OAuthRequestTokenContext context)
{
var value = context.Request.Query.Get("token");
if (!string.IsNullOrEmpty(value))
{
context.Token = value;
}
return Task.Fromresult<object>(null);
}
}
}
我想做什么?
我希望所有 SignalR 客户端在查询字符串中发送 JWT 令牌。我将在 QueryStringOAuthBearerProvider 的 RequestToken 方法中自定义验证此令牌。如果验证成功,则应调用受 Authorize 属性保护的 Hub 方法,否则请求将被拒绝。
请告知如何实现这一点以及我在这里缺少什么。
PS:我想做与 here 完全相同的事情,但使用 .NET Framework(不是 .NET Core)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。