【问题标题】:Certificate added via New-AzureADApplicationKeyCredential not appearing in Azure AD discovery endpoint通过 New-AzureADApplicationKeyCredential 添加的证书未出现在 Azure AD 发现端点中
【发布时间】:2020-08-20 09:30:00
【问题描述】:

我正在使用以下命令将新证书添加到 Azure AD 中的现有应用注册:

New-AzureADApplicationKeyCredential -ObjectId $AppObjectId -CustomKeyIdentifier $base64Thumbprint -Type AsymmetricX509Cert -Usage Verify -Value $base64Value -StartDate $cer.GetEffectiveDateString() -EndDate $validTo

这工作正常,我可以看到门户中添加的证书。

此证书是否也不能通过https://login.microsoftonline.com/{tenant}/discovery/keys 看到?appid={Application(client)ID}

我还尝试通过 Set-AzureADApplication 和直接通过门户添加证书信息。每次我都可以在“证书和机密”下以及应用程序清单中看到证书。无论我做什么,我都无法在 JWKS 端点中看到公共证书。

我对此的假设来自以下几点:

https://docs.microsoft.com/en-us/azure/active-directory/develop/access-tokens

"如果您的应用由于使用声明映射功能而具有自定义签名密钥,则您必须附加一个包含应用 ID 的 appid 查询参数,以获取指向您应用的签名密钥信息的 jwks_uri,这应该用于验证。例如:https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e 包含https://login.microsoftonline.com/{tenant}/discovery/keys 的 jwks_uri? appid=6731de76-14a6-49ae-97bc-6eba6914391e."

任何帮助将不胜感激。

【问题讨论】:

    标签: azure powershell oauth azure-active-directory client-certificates


    【解决方案1】:

    据我了解,您添加到应用程序的密钥仅用于向 Azure AD 验证您的应用程序。 因此,无需在公共端点中公布这些密钥,因为只有 Azure AD 本身需要使用这些公共密钥来验证应用程序发送的断言。

    【讨论】:

    • 感谢您的回复。总结的差不多了
    【解决方案2】:

    似乎您将 keyusage 设置为验证。如果您想使用它来签署令牌,您需要将其设置为 Sign 并使用对称密钥:

    New-AzureADApplicationKeyCredential -ObjectId $AppId -CustomKeyIdentifier "Test" -StartDate "11/7/2016" -Type "Symmetric" -Usage "Sign" -Value "123"
    

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      相关资源
      最近更新 更多