【问题标题】:How to get client_assertion for my certificate如何为我的证书获取 client_assertion
【发布时间】:2020-10-21 04:03:11
【问题描述】:

我正在尝试编写一个应用程序来从 Office 365 获取数据(使用 EWS 和图形 API)。我需要用 C++ 编写这个应用程序(为了平台兼容性),我需要使用基于证书的方法(我不想使用基于客户端密码的身份验证)。我正在使用客户端凭据授予流程,因此不涉及用户交互。

我无法弄清楚如何为我的证书获取 client_assertion。有什么标准方法可以得到这个字符串吗?

谢谢。

【问题讨论】:

  • 澄清一下,这里的认证方式是OAuth2。

标签: c++ oauth-2.0 azure-active-directory office365 exchangewebservices


【解决方案1】:

你需要生成一个 JWT Token

urn:ietf:params:oauth:client-assertion-type:jwt-bearer

使用您的证书https://curity.io/resources/tutorials/howtos/advanced/jwt-assertion/ 成为您的断言。使用证书身份验证确保您使用特定于租户的端点(而不是常见的),这应该是您断言的受众,例如

  "aud": "https://login.windows.net/$TenantId/oauth2/token"

【讨论】:

  • 谢谢。但不清楚如何获得断言。
  • 断言需要从证书生成。 AFAIK Microsoft 没有提供 C++ 中的任何内容来执行此操作(大量的 .net 库)。因此,您需要提出自己的方法来创建断言,或者查看其他一些 c++ 库,例如 github.com/arun11299/cpp-jwt,这可能会有所帮助。
  • 谢谢。我很难确定可以提供帮助的 C++ 库。让我试试你提供的 Github 链接。
猜你喜欢
  • 2018-01-02
  • 2020-09-05
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多