首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AccessToken不得超过4K

AccessToken不得超过4K
EN

Stack Overflow用户
提问于 2019-06-26 09:29:17
回答 3查看 1.4K关注 0票数 2

我使用过Azure SignalR服务。它可以很好的测试项目,但当我嵌入到我的真实项目。它抛出错误(访问令牌不能超过4K)。

访问令牌不得超过4K。413请求实体太大

我们在我们的项目中使用SignalR,现在我们转向Azure SignalR服务。我做了一个测试项目,在这里我使用了Azure SignalR服务,它在那里工作得很好,但是我将它嵌入到我的实际项目中,它会引发错误(访问令牌不能超过4K)。我在IIS和web.config级别尝试过不同的解决方案,增加消息的大小,但是没有效果。我已经检查过我的饼干尺寸小于1k了。无法完成Azure SignalR服务连接的制作。为什么它能在测试项目中工作。意思是它包括曲奇和声明,从页面存在于我的网页上,以防止真实的项目。

我得到了这个东西,但是它在Asp.net中不起作用,因为它的核心例子。

代码语言:javascript
复制
services.AddSignalR()
        .AddAzureSignalR(options =>
            {
                options.ClaimsProvider = context => context.User.Claims;
            });

我尝试过在web.config中绑定,但是增加消息的大小不起作用,因为它的标题级别。

代码语言:javascript
复制
<bindings>
      <basicHttpBinding>
        <binding name="basicHttpBinding" maxReceivedMessageSize="524288000"/>
        <binding name="mexHttpBinding" maxReceivedMessageSize="524288000" />
      </basicHttpBinding>
</bindings>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-27 06:57:46

对于ASP.NET,如果集线器没有高级身份验证(例如基于角色的身份验证),您可以使用以下方法简单地通过一个空的声明。

代码语言:javascript
复制
app.MapAzureSignalR(GetType().FullName
                    , options => options.ClaimsProvider = context => new Claim[] {});
票数 3
EN

Stack Overflow用户

发布于 2019-06-26 15:51:28

我知道原因了。它的索赔问题。我有很多关于我的真实项目的索赔,因为它们的大小,我的要求超过了4k的限制。我使用了压缩,一切都很好。谢谢

票数 3
EN

Stack Overflow用户

发布于 2022-02-14 14:57:43

在将角色声明添加到我的应用程序( .NET 6,使用Azure SignalR)之后,我遇到了这个问题。

如果您的应用程序确实使用了基于策略/索赔的授权,那么AFAIK您有两个选项可以修复这个问题:

选项1: 确保您只加载所需的索赔。,并且您只包含每个声明一次。在我的项目中,我使用了RoleClaims。当两个角色具有相同的声明,并且用户同时分配了两个角色时,声明将再次添加到访问令牌中。在我的项目中,当我只对所有索赔进行筛选,只包含不同的索赔(按价值计算)时,问题就得到了解决:

我的例子:在Startup.cs中

代码语言:javascript
复制
services.AddSignalR()
        .AddAzureSignalR(options =>
            {
                // include only necessary claims
                  options.ClaimsProvider = context => context.User.Claims.ToList().DistinctBy(d => d.Value);
            });

备选方案2:

如果您的访问令牌在过滤后仍然太长(选项1) --相反,您可以使用每个请求加载和检查声明(但是--在我的经验中,这要比选项1慢,正如在这个答案中解释的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56769490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档