无法在Azure应用程序清单中更新KeyCredential"值"

Tra*_*acy 6 azure azure-web-sites azure-active-directory azure-functions azure-app-api

尝试更新Azure AD应用程序的清单文件时,收到以下错误:

"无法保存清单.错误详情:KeyValueMustBeNull"(参见屏幕截图)

我试图更新清单中keyCredentials的'Value'属性,但它不允许我这样做.它将允许我上传带有值集的清单,但随后将其擦除并将其重置为null.我在新的Azure门户和旧管理门户上都重复了这个问题.

谢谢!:-)

Sha*_*izi 3

虽然您上面链接的说明看起来与此类似,但我会尝试遵循这些说明,因为它们过去在尝试将“认证”添加到我的应用程序时对我有用。

\n

请注意,这使用的是旧的 Azure 管理门户,而不是您看起来正在使用的新的 Azure 门户。

\n
\n

步骤 0:(如果您还没有 X.509 证书)创建自行颁发的证书

\n

您可以使用 makecert.exe 工具轻松生成自行颁发的证书。

\n
    \n
  1. 从命令行运行: makecert -r \xe2\x80\x93pe -n \xe2\x80\x9cCN=MyCompanyName MyAppName Cert\xe2\x80\x9d -b 12/15/2014 -e 12/15/2016 \xe2 \x80\x93ss 我的\n\xe2\x80\x93len 2048

    \n
  2. \n
  3. 打开证书 MMC 管理单元并连接到您的用户帐户。在“个人”文件夹中找到新证书并将其导出\n到 Base64 编码的 CER 文件。

    \n
  4. \n
\n

注意: 生成 X.509 证书时,请确保密钥长度至少为 2048。\n 较短的密钥长度不被接受为有效密钥。

\n

步骤 1:使用 PowerShell 从 .cer\nX509 公共证书文件获取 Base64 编码的证书值和指纹

\n

注意:下面的说明显示如何使用 Windows PowerShell 获取\nx.509 证书的属性。其他平台提供类似的\n工具来检索证书的属性。

\n
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2\n\n$cer.Import(\xe2\x80\x9cmycer.cer\xe2\x80\x9d)\n\n$bin = $cer.GetRawCertData()\n\n$base64Value = [System.Convert]::ToBase64String($bin)\n\n$bin = $cer.GetCertHash()\n\n$base64Thumbprint = [System.Convert]::ToBase64String($bin)\n\n$keyid = [System.Guid]::NewGuid().ToString()\n
Run Code Online (Sandbox Code Playgroud)\n

存储 $base64Thumbprint、$base64Value 和 $keyid 的值,\n以便在下一步中使用。

\n

步骤2:通过清单文件上传证书

\n
    \n
  1. 登录 Azure 管理门户 ( https://manage.windowsazure.com )

    \n
  2. \n
  3. 转到 AAD 管理单元,然后导航到要使用 X.509 证书配置的应用程序

    \n
  4. \n
  5. 通过 Azure 管理门户下载应用程序清单文件

    \n
  6. \n
  7. 将空的 \xe2\x80\x9cKeyCredentials\xe2\x80\x9d: [], 属性替换为以下 JSON。注意:KeyCredentials 复杂类型记录于\n此处:http://msdn.microsoft.com/en-us/library/azure/dn151681.aspx

    \n
     \xe2\x80\x9ckeyCredentials\xe2\x80\x9c: [\n\n {\n\n   \xe2\x80\x9ccustomKeyIdentifier\xe2\x80\x9c: \xe2\x80\x9c$base64Thumbprint_from_above\xe2\x80\x9d,\n\n   \xe2\x80\x9ckeyId\xe2\x80\x9c: \xe2\x80\x9c$keyid_from_above\xe2\x80\x9c,\n\n   \xe2\x80\x9ctype\xe2\x80\x9d: \xe2\x80\x9cAsymmetricX509Cert\xe2\x80\x9d,\n\n   \xe2\x80\x9cusage\xe2\x80\x9d: \xe2\x80\x9cVerify\xe2\x80\x9d,\n\n   \xe2\x80\x9cvalue\xe2\x80\x9d:  \xe2\x80\x9c$base64Value_from_above\xe2\x80\x9d\n\n  }\n\n  ],\n
    Run Code Online (Sandbox Code Playgroud)\n

    例如

    \n
     \xe2\x80\x9ckeyCredentials\xe2\x80\x9c: [\n\n {\n\n   \xe2\x80\x9ccustomKeyIdentifier\xe2\x80\x9c: \xe2\x80\x9cieF43L8nkyw/PEHjWvj+PkWebXk=\xe2\x80\x9d,\n\n   \xe2\x80\x9ckeyId\xe2\x80\x9c: \xe2\x80\x9c2d6d849e-3e9e-46cd-b5ed-0f9e30d078cc\xe2\x80\x9d,\n\n   \xe2\x80\x9ctype\xe2\x80\x9d: \xe2\x80\x9cAsymmetricX509Cert\xe2\x80\x9d,\n\n   \xe2\x80\x9cusage\xe2\x80\x9d: \xe2\x80\x9cVerify\xe2\x80\x9d,\n\n   \xe2\x80\x9cvalue\xe2\x80\x9d: \xe2\x80\x9cMIICWjCCAgSgAwIBA***omitted for brevity***qoD4dmgJqZmXDfFyQ\xe2\x80\x9d\n\n }\n\n ],\n
    Run Code Online (Sandbox Code Playgroud)\n
  8. \n
  9. 将更改保存到应用程序清单文件。

    \n
  10. \n
  11. 通过 Azure 管理门户上传编辑后的应用程序清单文件。

    \n
  12. \n
  13. 可选:再次下载清单,并查看您的 X.509 证书是否存在于应用程序中。

    \n
  14. \n
\n
\n

如果执行这些步骤后您仍然遇到相同的错误,请告诉我。

\n