尝试更新Azure AD应用程序的清单文件时,收到以下错误:
“无法保存清单。错误详情:KeyValueMustBeNull”(see screen shot)
我正在尝试更新清单中keyCredentials的'Value'属性,但它不允许我这样做。它将允许我上传带有值集的清单,但随后将其擦除并将其重置为null。我在新的Azure门户和旧管理门户上都重复了这个问题。
谢谢! : - )
答案 0 :(得分:3)
虽然上面链接的说明与此类似,但我会尝试按照these说明操作,因为他们过去曾尝试将Certificated添加到我的应用程序中。
请注意,这使用旧的Azure管理门户,而不是您正在使用的新Azure门户。
步骤0 :(如果您还没有X.509证书)创建自发证书
您可以轻松生成自行颁发的证书 makecert.exe工具。
从命令行运行:makecert -r -pe -n“CN = MyCompanyName MyAppName Cert”-b 12/15/2014 -e 12/15/2016 -ss my -len 2048
- 醇>
打开“证书”MMC管理单元并连接到您的用户帐户。在“个人”文件夹中找到新证书并将其导出 到base64编码的CER文件。
注意:生成时,请确保密钥长度至少为2048 X.509证书。较短的密钥长度不被接受为有效密钥。
步骤1:从.cer获取base64编码的证书值和指纹 使用PowerShell的X509公共证书文件
注意:以下说明显示使用Windows PowerShell获取 x.509证书的属性。其他平台提供类似的 用于检索证书属性的工具。
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $cer.Import(“mycer.cer”) $bin = $cer.GetRawCertData() $base64Value = [System.Convert]::ToBase64String($bin) $bin = $cer.GetCertHash() $base64Thumbprint = [System.Convert]::ToBase64String($bin) $keyid = [System.Guid]::NewGuid().ToString()
存储$ base64Thumbprint,$ base64Value和$ keyid的值 用于下一步。
步骤2:通过清单文件上传证书
登录Azure管理门户(https://manage.windowsazure.com)
转到AAD管理单元,然后导航到要使用X.509证书配置的应用程序
- 下载应用程序清单文件
通过Azure管理门户
- 醇>
使用以下JSON替换空的“KeyCredentials”:[],属性。注意:KeyCredentials复杂类型已记录在案 在这里:http://msdn.microsoft.com/en-us/library/azure/dn151681.aspx
“keyCredentials“: [ { “customKeyIdentifier“: “$base64Thumbprint_from_above”, “keyId“: “$keyid_from_above“, “type”: “AsymmetricX509Cert”, “usage”: “Verify”, “value”: “$base64Value_from_above” } ],
e.g。
“keyCredentials“: [ { “customKeyIdentifier“: “ieF43L8nkyw/PEHjWvj+PkWebXk=”, “keyId“: “2d6d849e-3e9e-46cd-b5ed-0f9e30d078cc”, “type”: “AsymmetricX509Cert”, “usage”: “Verify”, “value”: “MIICWjCCAgSgAwIBA***omitted for brevity***qoD4dmgJqZmXDfFyQ” } ],
将更改保存到应用程序清单文件中。
通过Azure管理门户上传已编辑的应用程序清单文件。
- 醇>
可选:再次下载清单,并在应用程序中看到您的X.509证书。
如果您在执行这些步骤后仍然遇到相同的错误,请告诉我。
答案 1 :(得分:0)
这是一个旧线程,但我遇到了这个问题并且修复了我正在尝试更新customKeyIdentifier。显然Azure不喜欢这样,因为他们保存的密钥不匹配。
我刚刚将keyCredentials复制出来并使用keyCredentials保存清单,然后将值重新放入以确保更改keyID字段中的GUID。
你可能只是改变了GUID。
答案 2 :(得分:0)
我使用powershell上传了证书详细信息。它为我工作。打开powershell,然后尝试以下命令。
Install-Module AzureAD
Connect-AzureAD
最后一条命令将要求提供凭据。
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate
$cer.Import("Yourcertpath\cername.cer")
$binCert = $cer.GetRawCertData()
$credValue = [System.Convert]::ToBase64String($binCert)
New-AzureADApplicationKeyCredential -ObjectId 46xxx45e-xxxx-xxx-xxxx-xxxxxxxxxxx -Type AsymmetricX509Cert -Value $credValue -Usage Verify
请记住将对象ID替换为AD应用程序的对象ID。