gpt4 book ai didi

c# - Signalr Bearer token 认证

转载 作者:行者123 更新时间:2023-12-05 07:51:05 25 4
gpt4 key购买 nike

您好,我正在尝试使用承载身份验证设置信号器。当我调试 Requesttoken 方法时,不记名 token 已成功接收。但是,当我的信号器客户端使用不记名 token 调用 protected (授权)方法时,他未通过身份验证。我还尝试实现自定义 AuthorizeAttribute,但 AccessTokenFormat.Unprotect 始终返回 null。

错误信息:

Caller is not authorized to invoke the Send method on Hub. 

设置:

  • 网络 API 项目
    -Web Api 项目中的 Signalr Hub
    -signalr的启动配置

Signalr 启动配置:

app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
map.UseOAuthAuthorizationServer(OAuthOptions);
map.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
{
Provider = new SignalrOAuthProvider()
});

var configuration = new HubConfiguration(){
EnableDetailedErrors = true
};

map.RunSignalR(configuration);
});

还有一个自定义的 OAuthprovider,它从 cookie 或查询字符串中读取不记名 token

public class SignalrOAuthProvider : OAuthBearerAuthenticationProvider
{
public override Task RequestToken(OAuthRequestTokenContext context)
{
// var value = context.Request.Query.Get("bearer");
var value = context.OwinContext.Request.Cookies["BearerToken"];
if (!string.IsNullOrEmpty(value))
{
context.Token = value;
}

return Task.FromResult(null);
}
}

最佳答案

确保您在集线器上使用 [System.Web.Http.Authorize] 属性。然后在 header 中传递 Bearer token 。

授权:Bearer '你的 token '

关于c# - Signalr Bearer token 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483037/

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