我们有一个api(.net核心2.2),它对所有工作正常的控制器都使用null
。
我们现在决定为会议服务添加SignalR Hub。
仅当我们删除授权属性IdentityServerAuthenticationDefaults.AuthenticationScheme
我们确实尝试使用以下两种方法(TokenRetriever或JwrBearerEvents)处理查询中的令牌:
:[Authorize(AuthenticationSchemes = IdentityServerAuthenticationDefaults.AuthenticationScheme)]
出于某种原因,这些问题仅在我们调用控制器时触发,而忽略从客户端调用的所有方法。
请注意,我们有一个提供令牌和API的AuthServer。 我们在客户端使用的是带有aspnet / signalr模块的angular 7。
答案 0 :(得分:0)
我发现了问题...
为身份验证添加默认方案,并删除onmessagereceive->
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
})
.AddIdentityServerAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme, options =>
{
options.Authority = AuthURL;
options.SupportedTokens = SupportedTokens.Jwt;
options.RequireHttpsMetadata = HttpsSetting;
options.ApiName = APIs.API_Commerce;
options.TokenRetriever = new Func<HttpRequest, string>(req =>
{
var fromHeader = TokenRetrieval.FromAuthorizationHeader();
var fromQuery = TokenRetrieval.FromQueryString();
return fromHeader(req) ?? fromQuery(req);
});
});
.net core 2.2仅需提及,您必须指定一个原点( withOrigins ),并且不能使用Any ..