如何使用证书凭据获取“x5t”的值进行应用程序身份验证

2023-11-23

我试图使用 Microsoft Azure Active Directory 获取 JWT 令牌用于应用程序身份验证的证书凭证.

我对“x5t”的值感到惊讶。

我尝试过

  • 公共证书中提供的 SHA-1 指纹值。
  • 使用 FVIC 的公共证书的 SHA-1 哈希值。

但将请求发送到 MSA 登录端点时,我不断收到以下错误

{
    "error": "invalid_client",
    "error_description": "AADSTS70002: Error validating credentials. AADSTS50012: Client assertion contains an invalid signature. [Reason - The key was not found., Thumbprint of key used by client: '6F67F76B96F6FBBDF9D3EE1DDF7F9A7B877EE9C75DEDBD3DE9C7FB', Configured keys: [Key0:Start=06/01/2018, End=12/31/2099, Thumbprint=6WGktXA64QmA9TPv;Key1:Start=06/01/2018, End=12/31/2099, Thumbprint=rD9Q10sR6Q6ZkDVw;]]\r\nTrace ID: d9e3e276-e878-4b8a-b08b-10c82a0b0600\r\nCorrelation ID: 48ec889d-2376-45a6-9bf0-01b22b0e0c17\r\nTimestamp: 2018-06-01 09:38:24Z",
    "error_codes": [
        70002,
        50012
    ],
    "timestamp": "2018-06-01 09:38:24Z",
    "trace_id": "d9e3e276-e878-4b8a-b08b-10c82a0b0600",
    "correlation_id": "48ec889d-2376-45a6-9bf0-01b22b0e0c17"
}

如何获取“x5t”的值?


我找到了这个site和这个one对于解决 x5t 问题非常有价值。最简单的方法是手动获取指纹:

echo $(openssl x509 -in your.cert.pem -fingerprint -noout) | sed 's/SHA1 Fingerprint=//g' | sed 's/://g' | xxd -r -ps | base64

上述命令中的值是您在 JWT 的 x5t 字段中输入的值。在此之前,我从天蓝色收到无效指纹错误。

如果你使用 Ruby,你可以按照这个answer to get:

p12 = OpenSSL::PKCS12.new(File.read(CERT_FILE), '')
x509_sha1_thumbprint = Base64.encode64(OpenSSL::Digest::SHA1.new(p12.certificate.to_der).digest).strip
jwt_token = JWT.encode payload, p12.key, 'RS256', { typ: 'JWT', x5t: x509_sha1_thumbprint }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用证书凭据获取“x5t”的值进行应用程序身份验证 的相关文章

随机推荐

  • 如何从 GitHub Actions 部署 AWS Amplify 应用程序?

    我想从 GitHub Actions 控制 Amplify 部署 因为 Amplify 自动构建 不提供GitHub环境 不观察 CI 的故障并无论如何都会进行部署 或者 要求我复制 CI 设置并在 Amplify 中重新运行它 不支持运行
  • ASP.NET 解析器错误无法加载后面的代码

    嘿我收到以下错误 解析器错误 描述 解析服务此请求所需的资源时发生错误 请查看以下特定解析错误详细信息并适当修改您的源文件 解析器错误消息 无法加载类型 AddToCart 来源错误 Line 1 Line 2 Line 3
  • 自动生成Java源代码

    我正在寻找一种方法 根据类中定义的字段 在现有 Java 源代码文件中自动生成新方法的源代码 本质上 我希望执行以下步骤 读取并解析SomeClass java 遍历源代码中定义的所有字段 添加源码方法someMethod Save Som
  • 什么是“程序类型已存在”?

    当我尝试构建我的项目时 我收到此错误 程序类型已存在 android support v4 accessibilityservice AccessibilityServiceInfoCompat Message kind ERROR tex
  • 角度反应形式:动态选择下拉值不具有约束力

    我有两个数据数组 AssociatedPrincipals 以前保存的数据 和 ReferencePrincipals 在下拉控件中填充的静态数据 我正在努力从 AssociatedPrincipals 获取先前的值以在 a 中显示 选择动
  • 如何转义 RMarkdown 块?

    我正在尝试将 RMarkdown 中的代码块的语法呈现为 pdf 最终输出应该是这样的 r some code 而不仅仅是 some code 可以在 RStudio 网站上找到解决此问题的最佳选项 请参阅有关将逐字 R 块放入 rmark
  • 将“if/else”与 OnClick 结合使用

    首先 是否可以直接在带有 onclick 属性的 html 中编写 if else 语句 如果是这样 为什么我的代码不起作用 所以这是一个按钮 Calc Input value 指的是文本输入 如果该字段为 0 或空白 我想显示错误消息 在
  • R:如何在没有辅助文件的情况下将光栅写入磁盘?

    我正在使用 R 中的 Raster 包以 ERMapper 格式 ers 编写数据集 但我对生成的 aux xml 辅助文件有问题 我实际上对此不感兴趣 简单的例子 rst lt raster ncols 15000 nrows 10000
  • cuda 中预取(通过 C 代码)

    我正在通过 C 代码在 CUDA Fermi GPU 中进行数据预取 Cuda 参考手册讨论了 ptx 级别代码的预取 而不是 C 级别代码的预取 任何人都可以向我提供一些有关通过 cuda 代码 cu 文件 预取的文档或内容吗 任何帮助
  • 使用 fputs() 将整数写入文件

    不可能做类似的事情fputs 4 fptOut 因为 fputs 不喜欢整数 我该如何解决这个问题 Doing fputs 4 fptOut 不是一个选项 因为我正在使用计数器值 关于什么 fprintf fptOut d yourCoun
  • 比较两个对象数组并检查它们是否具有共同元素

    如何在 MongoDB 中执行返回 id 的查询FirstArray and SecondArray 名称 字段中有共同的元素吗 这是集合结构 id ObjectId 58b8d9e3b2b4e07bff8feed5 FirstArray
  • 如何在 SwiftUI 中随时从子视图作为父视图访问数据?

    我是 SwiftUI 的新手 并且了解我可能需要以某种方式实现 EnvironmentObject 但我不确定在这种情况下如何实现 这是Trade class class Trade var teamsSelected Team init
  • 如何在Python中生成DOCX并将其保存在内存中?

    我的任务是从模板生成 DOCX 文件 然后通过 Flask 提供该文件 我用python docx 模板它只是 python docx 的包装器 允许使用 jinja 模板 最后他们建议使用 StringIO 仅将文件保存在内存中 所以我的
  • Google oauth 2.0 API 密码更改用户名和密码不被接受

    我有一个使用 nodemailer xoauth2 和 google APi oauth2 的表单 我上周更新了密码 从那时起我的应用程序就无法工作了 我得到 535 5 7 8 不接受用户名和密码 了解更多信息 n535 5 7 8 我尝
  • 如何在 ShareDenyWrite 模式下打开 StreamReader?

    我如何打开一个StreamReader with FILE SHARE READ FILE SHARE WRITE FILE SHARE DELETE 同样的问题 稍微扩展一下 我如何打开一个StreamReader这样我就可以读取编码的文
  • 如何根据日期对HashMap进行排序? [复制]

    这个问题在这里已经有答案了 我尝试根据键中的日期对这个 HashMap 进行排序 我的哈希图 Map
  • 在 Python 中使用正确的类型提示对序列进行子类化

    我正在尝试在 Python 中实现一种自定义序列类 from typing import Sequence TypeVar List T TypeVar T class MySequence Sequence T def init self
  • PHP CURL PUT 从文件路径

    我正在尝试对文件执行 CURL PUT 但遇到问题 这是我的代码 url path str http my url file path str my file path ch curl init curl setopt ch CURLOPT
  • UTF-8 足以支持所有常见语言吗?

    我只是想在 Django 项目中开发一个翻译应用程序 使具有一定权限的注册用户能够翻译最新版本中出现的每条消息 我的问题是 在此翻译应用程序中的数据库表应该使用什么字符集 看起来有些欧洲语言字符不能以 UTF 8 存储 看起来有些欧洲语言字
  • 如何使用证书凭据获取“x5t”的值进行应用程序身份验证

    我试图使用 Microsoft Azure Active Directory 获取 JWT 令牌用于应用程序身份验证的证书凭证 我对 x5t 的值感到惊讶 我尝试过 公共证书中提供的 SHA 1 指纹值 使用 FVIC 的公共证书的 SHA