Azure API 管理:验证 jwt 令牌范围

2024-01-12

我们希望使用 validate-jwt 策略保护 API 操作调用,但当我使用 required-claims 检查范围时遇到问题。 示例:我有一个令牌,其范围包括多个值,例如“xxx.READ xxx.WRITE yyy.READ yyy.WRITE ...” 对于特定操作,我想使用 validate-jwt 策略来检查令牌是否包含链接的范围,例如:

    <required-claims>
            <claim name="scp" match="any">
                <value>xxx.READ</value>
            </claim>
    </required-claims>

但由于 scp 中的多个值,验证总是失败...我如何检查此声明?我是否必须先提取 scp 值,如果是,我该怎么做?

提前致谢


多值声明应表示为 JWT 令牌内的数组:

"scp": ["xxx.READ", "xxx.WRITE", "yyy.READ", "yyy.WRITE"]

您发布的策略配置完全支持这种情况。

但是,如果您将它们表示为单个字符串(“xxx.READ xxx.WRITE yyy.READ yyy.WRITE”),那么您必须使用手动表达式来验证此类令牌,​​大致如下:

<choose>
    <when condition="@(context.Request.Headers.ContainsKey("Authorization"))">
        <set-variable name="token" value="@(context.Request.Headers.GetValueOrDefault("Authorization", string.Empty).AsJwt())" />
        <choose>
            <when condition="@{
if (context.Variables["token"] == null) {
    return false;
}

var scp = ((Jwt)context.Variables["token"]).Claims.GetValueOrDefault("scp", (string[])null);
if (scp == null || scp.Length == 0) {
    return false;
}

return scp.Any(c => c.Contains("xxx.READ"));
            }">
                <return-response response-variable-name="existing response variable">
                    <set-status code="401" reason="Unauthorized" />
                </return-response>
            </when>
        </choose>
    </when>
    <otherwise>
        <return-response response-variable-name="existing response variable">
            <set-status code="401" reason="Unauthorized" />
        </return-response>
    </otherwise>
</choose>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure API 管理:验证 jwt 令牌范围 的相关文章

  • 在运行时用Dagger添加Retrofit RequestInterceptor

    我正在使用匕首和改装 我用 Dagger 注入我的 Retrofit 服务 现在我想做一个授权请求来获取 accessToken 之后 我想使用请求拦截器来增强我的 api 模块 以便将此访问令牌用于将来的请求 我的想法是在收到访问令牌后使
  • org.springframework.security.oauth2.common.exceptions.InvalidGrantException:凭据错误

    我正在开发Spring Boot 授权服务器 OAuth 资源服务器 在这个例子中 我可以通过邮递员轻松查询spring microservices oauth 服务器并获取受保护的数据 我创建了客户端来访问邮递员正在执行的数据 但我遇到了
  • 如何在 PHP 中使用 RS256 签署 X.509 证书?无法获取有效指纹...x5t

    我已经实现了 JWT 令牌生成器库Here https github com F21 jwt blob master JWT JWT php 并且我能够获得 RS256 令牌 有效负载 但我对标题数据有疑问 我需要一个标头值 x5t 该标头
  • OAuth2 隐式流程 - IFrame 刷新身份

    我正在为隐式流开发 OAuth2 客户端 并正在实现基于 IFrame 的刷新 因为隐式流中没有刷新令牌 我所坚持的是试图找出将访问令牌传递回服务器的 标准 我是否通过 access token 查询字符串参数传回 或者在设置 IFrame
  • Google Sheets API v4 和 valueInputOption

    我的电子表格中有三列 第一个是日期 第二个和第三个是简单字符串 当我批量上传数据时valueInputOption RAW 我的日期列得到错误的结果 所有日期前面都有一个看不见的撇号 字符串列没问题 当我使用valueInputOption
  • 寻找Android源代码

    Android API 是开源的吗 如果是这样 我想看看他们如何实现 ListView 对象的 smoothscroll 方法 这是在 API 级别 8 中实现的 但我想针对早期的 API 级别进行构建 我该如何找到这个 是的 它是开源的
  • Spotify Apps API:库类不会返回用户播放列表

    我试图获取一个包含用户库中所有播放列表的数组 http developer spotify com download spotify apps api reference dcdebc652c html 其他类属性 专辑 艺术家 加星标的播
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • webm视频转换API

    有谁知道用于将视频转换为谷歌新的 WebM 视频格式的 原型 c API 谷歌快速搜索显示 不 但是编码器示例 http www webmproject org tools vp8 sdk example simple encoder ht
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • 端点按资源 swagger 注释分组?

    我正在使用 Spring 进行 REST API 开发 我有一些 API 其中有很多端点 当我打开 swagger ui 时 它看起来很拥挤 我刚刚读过this https swagger io docs specification gro
  • Jwt 签名和前端登录身份验证

    我有这个特殊的 jwt sign 函数 Backend const token jwt sign id user id process env TOKEN SECRET expiresIn 1m res header auth token
  • 为 NFL api 生成访问令牌

    NFL 有一个 API 服务 link https api nfl com docs getting started index html https api nfl com docs getting started index html
  • 雅虎 OAuth2 隐式授予流程不适用于新的雅虎应用程序

    我有现有的网络应用程序和专用雅虎应用程序 https developer yahoo com apps 在职的 它用OAuth2 隐式授权流程 https developer yahoo com oauth2 guide flows imp
  • Microsoft Graph API 不返回刷新令牌

    我创建了一个应用程序https apps dev microsoft com https apps dev microsoft com 具有以下应用程序权限 Calendars Read Admin Only Calendars ReadW
  • laravel - 使用请求类或输入类

    在宁静的控制器中 我应该使用哪个类来获取传递的变量 member gt email Input get email or member gt email Request get email 两种选择都适合我 但有什么区别 Input get
  • 没有 OAuth 的 Spring Security JWT

    最近我开始学习如何使用oauth 2 0 jwt配置spring boot 我有一个问题 是否可以使用spring boot security jwt避免oauth 2 0 是的 可以使用JWT无需使用标准化的功能OAuth 2 0 flo
  • Spring OAuth2 - JWT 令牌在服务器上工作但不在本地主机上工作?

    我看到了myapp能够在服务器上正确处理 OAuth2 JWT 令牌 但在本地主机上给出令牌转换错误 我的流程如下 在服务器上 the myapp就在我们的后面custom api gateway 获取访问令牌 通过邮递员 我点击了 api
  • musicbrainz api 获取所有发行组和发行日期

    如何使用 musicbrainz api 在一次调用中获取艺术家的所有发行组和发行日期 我最接近做到这一点的是使用 http musicbrainz org ws 2 release group query arid 494e8d09 f8
  • HTTP 基本身份验证 + 访问令牌?

    我正在开发一个 REST API 计划将其与 Web 和 IOS 应用程序一起使用 我打算让这个 API 在一段时间内保持私有 私有意味着我只希望我的 Web 应用程序和 ios 应用程序访问该 API 我已经阅读了许多不同的身份验证方法

随机推荐

  • 自动热键如何检测您所在的虚拟桌面?

    您好 我是自动热键 以及一般编程 的新手 我想编写一个脚本 让我可以方便地切换到特定的桌面 例如 在我的脚本中 Capslock 3 切换到桌面 3 正如您所看到的或者如果您尝试一下 它并不是很强大 该脚本只知道与真实桌面号码不同的桌面号码
  • 调整 RMarkdown 文档中使用 kable() 制作的表格的宽度

    使用knitr中的kable 函数制作表格时是否可以调整列的宽度 对于具有两列的表来说 这样的块会生成一个占据文档整个宽度的表 我想让列更窄 这可以用 kable 完成还是需要另一个包 这个 rmarkdown 块 r df lt data
  • Windows Phone 8 中的自动深色/浅色图标支持

    我认为这是一个很常见的问题 但我找不到适合我的解决方案 众所周知 WP 支持深色和浅色主题 用户可以更改主题 并且有多种方法可以覆盖他的决定并以您选择的颜色主题显示所有内容 但是 我只是想对这两种主题类型做出反应 并且我想以正确的颜色显示图
  • 删除字符串中的逗号,用逗号和双引号括起来 / Python

    我在 stackoverflow 上发现了一些类似的主题 但我是 Python 和 Reg Exps 的新手 我有一根绳子 2 星级宜必思柏林高级酒店于 2009 年进行了全面翻修 Messe 拥有 168 间空调客房 毗邻 柏林的 ICC
  • forEach 和 for (objs 中的 var o) 之间的性能差异

    以下之间的执行速度和 或内存消耗是否有任何差异 for var o in objs and objs forEach o 对于列表和队列 在我的机器上 使用 Dart VM 后者的速度往往要快 2 到 2 5 倍 这是有道理的 因为forE
  • 在express js路由中调用异步函数的正确方法

    我现在就是这样做的 但试图看看是否有正确的或其他的方法可以做到这一点 async function getmanual vars req res ajax var return data let db await mongo client
  • vim:添加注释宏

    Vim 对我来说几乎是完美的 但我仍然想要行注释和块注释功能 我想知道如何编写 vimrc 来在 python 和 javascript 中执行此操作 没有插件 http www vim org scripts script php scr
  • 为什么苹果的闭包声明缺少参数标签

    当我读完UIKit 大多数时候我看到的是闭包 作为函数参数 缺少这样的参数标签 func fooClosure fooClosure Bool gt Swift Void 在某些情况下我可以猜出它代表什么 而在其他情况下我不能 Exampl
  • 从数据文件 VB 脚本中读取下一行

    我正在尝试获取数据标记文件的下一行 但是因为有多行具有相同的标记 所以它正在经历并获取最后一行 但我需要第一行 下面的示例标记文件 Summary SA2100 7775555 Summary SUM100 9674555 Summary
  • 使用 Jquery 附加多个 html 元素

    我对 jQuery 很陌生 想知道是否有人可以建议我最佳实践 我希望将一个 div 元素附加到页面 其中包含大量 html 并且不确定实现此目的的最佳方法是什么 或者是否建议使用 jquery 例如 如果我想使用 jquery 将以下代码附
  • 函数模板的多个定义

    假设头文件定义了一个函数模板 现在假设有两个实现文件 include这个头 并且每个都调用了函数模板 在两个实现文件中 函数模板都使用相同的类型进行实例化 header hh template
  • 加载页面时显示加载动画微调器

    我想在 JQueryMobile 页面中显示加载动画微调器 该页面是通过 ajax 关闭加载的 页面已加载data ajax false or rel external 我试穿了pagebeforecreate and pageshow事件
  • Javascript样式对象将复杂的颜色名称转换为rgb

    当将复杂的 CSS 颜色名称应用于 DOM 元素时 有没有一种方法可以覆盖 javascript 将复杂的 CSS 颜色名称转换为 RGB 值的方式document getElementById xxx style object 例如 设置
  • php imagemagick 创建平铺金字塔 TIFF

    好吧 正如标题所说 我遇到了一个问题 我的测试函数是这样的 imagePath tmp 511a3874a0da1 pngName imagePath png tifName imagePath tif tempImg new Imagic
  • 具有多个子类型的 Scala 泛型(元组)类型

    我正在 Scala 中编写一个数据结构 基本上是一个哈希图 它将采用一个元组 每次可能有不同数量的参数 并用它做一些事情 为了一般地实现这一点 我定义了一个类型 type T lt Tuple1 with Tuple2 with Tuple
  • 更改应用程序中的 Cocoa 显示名称?

    如何更改 OS X 上 Dock 中应用程序上方显示的名称 我尝试过重命名目标并重命名我的项目 而且 我已经用 Google 搜索过它 经过进一步谷歌搜索后 我发现了这一点 项目 gt 编辑活动目标 gt 打包 gt 产品名称 虽然我第一次
  • Paytm sdk ios集成打开Paytm付款表格?

    在 iOS Xcode 7 中集成 Paytm sdk 2 1 并配置为进行支付 我有一个表格 其中需要填写金额和其他字段 然后有一个 Payment 按钮 这是我正在使用的代码 Step 1 Create a default mercha
  • jqGrid 卡在加载中?

    我正在尝试使用 JQuery 插件jqGrid http www trirand com blog 使用 asp net mvc 应用程序 我在下面向网格传递一个 JSON 对象format http www secondpersonplu
  • 创建 UIImageView 时上下文无效

    当我尝试创建 UIImageView 时出现错误 看看这段代码 UIImage backgroundPanel UIImage imageNamed loginPanelBackground png resizableImageWithCa
  • Azure API 管理:验证 jwt 令牌范围

    我们希望使用 validate jwt 策略保护 API 操作调用 但当我使用 required claims 检查范围时遇到问题 示例 我有一个令牌 其范围包括多个值 例如 xxx READ xxx WRITE yyy READ yyy