获取Azure jwks_uri中列出的对应公钥的私钥

问题描述 投票:0回答:1

我在 Azure 中注册了一个应用程序,在其端点中我有一个名为

OpenID Connect metadata document
的端点,其值类似于
https://login.microsoftonline.com/{tenant-id}/v2.0/.well-known/openid-configuration

访问上面的 URI 将返回具有以下键值对的 JSON:

{
  "jwks_uri": "https://login.microsoftonline.com/{tenant-id}/discovery/v2.0/keys"
}

接下来

jwks_uri
我看到一组公钥及其
kid
x5t
n
等,用于
assertion
的服务器端验证,并使用私钥在客户端签名。

这里我面临两个问题:

  1. 我不知道如何从Azure下载私钥以便稍后用于签名
  2. 即使我生成自己的一对私钥和公钥,然后使用
    App Registrations > my-app > Manage > Certificates and secrets > Certificates > Upload certificate
    链成功上传公钥,
    jwks_uir
    的内容仍然完好无损。因此,当我使用生成的私钥签署
    assertion
    时,它无法在 Azure 端进行验证,因为找不到我的
    kid
  3. 的密钥
azure oauth-2.0 azure-active-directory jwt
1个回答
0
投票

我想你误会了一些事情。

您无法下载这些私钥。 Microsoft 使用它们在所有 M365、Azure 等上签署令牌。

上传应用程序的证书凭据允许您的应用程序使用该私钥进行身份验证(生成具有特定格式的 JSON Web 令牌证明您拥有私钥的 Entra ID)。 然后,Entra ID 可以根据您请求的范围为您的应用程序生成令牌(如果您的应用程序允许)。

如果您使用 Entra ID,您就不是生成代币的人,Entra ID 才是身份提供者。 仅当您的应用程序收到该应用程序的令牌时,您才验证由 Entra ID 生成的令牌。 为了进行验证,您只需要公钥。

© www.soinside.com 2019 - 2024. All rights reserved.