IdentityServer、声明和角色

2024-01-22

我正在使用 Identity Server v4(但我认为与 v3 相同)和 .NET Core。

现在我有一个我不明白的奇怪问题。

在我的 MVC 应用程序中,我使用[授权(角色=“极客”)]保护我的控制器/操作。 从以下位置查看当前用户HttpContext所有角色都可以作为声明使用,而不是作为角色使用(事实上User.IsInRole("极客")返回假)。

此外,我不能将声明与授权属性因为所有角色都使用相同的键存储到声明集合中(当然是“角色”)。

有没有办法自动将所有具有关键“角色”的声明也作为当前委托人的角色?

我尝试使用“令牌验证事件”,但没有成功。

我正在尝试示例存储库,所以我的代码与此非常相似https://github.com/IdentityServer/IdentityServer4.Samples/tree/dev/MVC%20and%20API https://github.com/IdentityServer/IdentityServer4.Samples/tree/dev/MVC%20and%20API

有什么提示吗?


角色声明的“类型”属性值是否为“角色”,还是像“http://schemas.microsoft.com/ws/2008/06/identity/claims/role http://schemas.microsoft.com/ws/2008/06/identity/claims/role如果它是“角色”而不是 URI,您可能会将 InboundClaimTypeMap 设置为空字典,如文档中所述(请参阅声明转换部分here https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html)。如果启动代码中有以下行,请尝试将其删除:

JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

默认的 InboundClaimTypeMap 会将一些 JWT 声明映射到使用完整 URI 的 System.Security.Claims.ClaimTypes 中。映射的其中之一是角色。

ClaimsIdentity 的 IsInRole 方法将使用名为 RoleClaimType 的属性来确定与声明的 Type 属性相匹配的字符串值,以查找可用角色的列表。然后,您所需的角色文本将与匹配声明结果列表中的值进行匹配。默认的 ClaimsIdentity 将使用 System.Security.Claims.ClaimTypes.Role 来查找身份中的角色声明。

如果您希望应用程序继续使用 JWT 声明类型语法,则需要在 SecurityTokenValidated 通知事件中创建新的 ClaimsIdentity。 ClaimsIdentity 构造函数允许您指定匹配声明角色时要使用的文本。在这种情况下,文本只是“角色”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IdentityServer、声明和角色 的相关文章

随机推荐

  • 在 R 中绘制相关矩阵,如 Excel 示例所示

    我一直在尝试尽量减少对 Excel 的使用 转而使用 R 但在显示简单的数据单元格时仍然遇到困难 而这通常是分析的最后一步所需要的 以下示例是我想要破解的示例 因为它将帮助我切换到 R 来完成工作流程的这一关键部分 我想说明 R 中的以下相
  • Android 上的 WiFi Direct 无法正常工作

    我正在尝试在 android Jelly Bean 4 1 1 中直接使用 wifi 开发一个应用程序 如果启用了 p2p 我会立即致电 mManager discoverPeers mChannel actionListener 之后我会
  • Matplotlib:将颜色条添加到不可映射的对象

    我有一系列代表变量变化的线 每个都有独特的颜色 因此 我想在绘图旁边添加一个颜色条 所需的输出如下所示 问题是plot是不可映射的对象 即必须手动添加颜色条 我认为我当前的解决方案 如下 不是最佳的 因为它涉及我没有兴趣控制的尺寸参数 我更
  • 有没有一种简单的方法可以在 matplotlib 中为滚动垂直线设置动画?

    我想要一个我所描述的进度标记 它在音频播放实用程序中似乎很常见 我认为在 matplotlib 中这相当于左 右动画plt vlines 我的代码采用 2 秒的数据数组并创建音频时间序列可视化 我正在努力创建一条动画垂直线 该线会在绘图上从
  • Windows上使用R将本地repo推送到github

    我曾经问过一个很类似的问题 https stackoverflow com questions 14912161 repo from rstudio to github并得到了从命令行有效的响应 但我现在想使用 R 从 Windows 自动
  • ASP.NET MVC 中的 RSS 源

    您建议如何在 ASP NET MVC 中处理 RSS 源 使用第三方库 在 BCL 中使用 RSS 内容 只是制作一个呈现 XML 的 RSS 视图 或者完全不同的东西 NET 框架公开了处理聚合的类 SyndicateFeed 等 因此
  • 如何在 iPad 中使用图像选择器?

    我知道如何在 iPhone 中使用图像选择器 虽然知道需要在 iPad 中使用新类 UIPopoverController 但仍然无法找出一种在 iPad 中使用图像选择器的方法 有人有同样的问题吗 谢谢 UIImagePickerCont
  • 使用 Groovy MarkupBuilder 的 HTML,如何优雅地混合标签和文本?

    使用 Groovy 时MarkupBuilder 我有需要将文本输出到文档中的地方 或者调用将文本输出到文档中的函数 目前 我正在使用未定义的标签 text 进行输出 有更好的方法来编写这段代码吗 li text type getAlias
  • 自动续订订阅:一个月有多长?

    我对一些问题感到困惑 1 自动续费订阅的一个月期限是30天还是按照自然月 因为我只能在沙盒模式下测试 所以持续时间只有几分钟 也许苹果只是简单地这样计算 2013 01 15 gt 2013 02 15 gt 2013 03 15 如果是这
  • r 在 for 循环中创建并寻址变量

    我在一个文件夹中有多个 csv 文件 我想将此文件夹中的每个 csv 文件加载到一个单独的数据框中 接下来 我想从该数据框中提取某些元素到一个矩阵中 并计算所有这些矩阵的平均值 setwd D data group 1 lt list fi
  • CMDeviceMotion 用户加速度漂移

    我正在使用以下方法获取加速度数据 CMDeviceMotion userAcceleration 我注意到一件有趣的事情 Z 轴上总是有一个小偏差 约为 0 0155 方差为 0 002 而在其他轴上 平均值接近 0 我正在使用 iPod
  • 查看 IsEnabled 属性在 Xamarin Forms 上不起作用

    这是我的列表视图 Listview 内部按钮 IsEnabled 属性不起作用 IsEnabled False 不起作用 我遵循了此步骤 但仍然不起作用https forums xamarin com discussion 47857 se
  • 寻找一个Linux PDF库来从PDF中提取注释和图像[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个免费的库 Java Ruby 它可以在linux上运行 并且可以从PDF中提取图像和注释
  • 从文件流上传到 ADLS

    我正在 ADF 中进行自定义活动 其中涉及从 Azure 存储 Blob 读取多个文件 对它们进行一些处理 最后将生成的文件写入 Azure Data Lake Store 最后一步是我停止的地方 因为据我所知 NET SDK 只允许从本地
  • .NET 应用程序中的最大线程数?

    在 C 应用程序中可以创建的最大线程数是多少 当达到这个限制时会发生什么 是否抛出某种异常 没有固有的限制 最大线程数由可用物理资源量确定 看到这个文章作者 雷蒙德 陈 https devblogs microsoft com oldnew
  • 使用 JavaMail 创建带有附件的 EML 文件 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我将使用
  • 如何在发布模式下启用框架的可测试性?

    我有一个 iOS 应用程序项目 由 Swift 3 0 编写 该工作区包含我们团队构建的动态框架 用于在整个项目中共享可重用的代码和资源 We use Activate Compilation Conditions用于切换生产服务器 url
  • PhpMyAdmin |致命错误:第 0 行未知中允许的内存大小 134217728 字节已耗尽(尝试分配 xxxxxx 字节)

    我试图找到此错误的原因 但失败了 我已经在我的服务器上安装了 PhpMyAdmin 现在在每个页面的页脚上都收到此错误 致命错误 第 0 行未知中允许的内存大小 134217728 字节已耗尽 尝试分配 10934248 字节 正如您所看到
  • “命令”对象没有属性“has_permissions”

    client command commands has permissions administrator True async def kick ctx member discord Member reason None try awai
  • IdentityServer、声明和角色

    我正在使用 Identity Server v4 但我认为与 v3 相同 和 NET Core 现在我有一个我不明白的奇怪问题 在我的 MVC 应用程序中 我使用 授权 角色 极客 保护我的控制器 操作 从以下位置查看当前用户HttpCon