我在使用 ACS 管理 API 和对称密钥时遇到了一些问题。当我通过 API 向 ACS 添加服务身份并设置对称密钥时,似乎 ACS 正在更改我发送的密钥。
如果我将“xyz123”作为对称密钥的值传递...当我转到 ACS 管理门户并查看该值时,它是一个不同的字符串;让我们说“AHDyDG6236 =”。
如果我向 API 询问它返回给我的值“xyz123”(ServiceIdentityKey.Value)。
您需要登录的值是“AHDyDG6236=”,但如果不访问 ACS 门户并单击“显示密钥”按钮,就无法获取此值?
无论如何,无需进入 ACS 管理门户即可获得对称密钥的可用值?
这是一些示例代码,说明了我在说什么。它基于此处找到的示例:http: //msdn.microsoft.com/en-us/library/hh135148.aspx
var svc = ManagementServiceHelper.CreateManagementServiceClient();
var password = Encoding.UTF8.GetBytes("password");
var serviceIdentity = svc.CreateServiceIdentity("testSI", password, ServiceIdentityKeyType.Symmetric, ServiceIdentityKeyUsage.Password);
serviceIdentity.Description = "service identity for testing";
svc.SaveChangesBatch();
var svc2 = ManagementServiceHelper.CreateManagementServiceClient();
var si = svc2.GetServiceIdentityByName("testSI");
Console.WriteLine(Encoding.UTF8.GetChars(si.ServiceIdentityKeys[0].Value)); //prints out "password"
运行此代码后,转到 ACS 门户并单击对称密钥,然后单击“显示密钥”,它会显示生成/散列值...这是您进行身份验证所需的值...但没有从 API 中获取该值的方法是什么?