从我的question here可以理解,我可以在Active Directory中设置应用程序注册,并且可以使用在应用程序注册中设置的应用程序ID和密钥进行身份验证。
这是一个如何做到这一点的例子?
应用程序ID(我理解也称为客户端ID)和我添加到键集合中的键与服务主体有什么结合?
[更新]
来自this link about service principals
如果我理解正确,我们将不再谈论“应用程序密钥”,而是在谈论“应用程序凭证”。我猜这是同一回事吗?
以下段落让我无可救药地混淆了“应用程序凭据”,“登录凭据”和“服务主体的凭据”之间的区别:
“要使用服务主体登录,请在Connect-AzureRmAccount cmdlet中使用-ServicePrincipal参数。您还将需要服务主体的应用程序ID,登录凭据以及与该服务主体相关联的租户ID。为了获取服务主体的凭据作为适当的对象,请使用Get-Credential cmdlet。此cmdlet将显示一个对话框,用于在其中输入服务主体用户ID和密码。“
[更新]
根据答案to my question here,我已经可以使用以下应用程序设置来运行HelloKeyVault:
VaultUrl,AuthClientId和AuthCertThumbprint
没有提及服务主体或“密钥”或“令牌”
现阶段我只是想了解https://docs.microsoft.com/en-gb/azure/key-vault/key-vault-get-started中的说明。
答案 0 :(得分:1)
您通常使用服务主体在CI / CD环境(如VSTS)或PowerShell脚本内部署/管理资源。选中Sign in with a service principal
答案 1 :(得分:0)
在修复Powershell脚本sample application here中的错误之后,从reported here
我能够运行HelloKeyVault源代码
class Program
{
static KeyVaultClient keyVaultClient;
static InputValidator inputValidator;
static void Main(string[] args)
{
KeyBundle keyBundle = null; // The key specification and attributes
SecretBundle secret = null;
CertificateBundle certificateBundle = null;
string keyName = string.Empty;
string secretName = string.Empty;
string certificateName = string.Empty;
string certificateCreateName = string.Empty;
inputValidator = new InputValidator(args);
ServiceClientTracing.AddTracingInterceptor(new ConsoleTracingInterceptor());
ServiceClientTracing.IsEnabled = inputValidator.GetTracingEnabled();
var clientId = ConfigurationManager.AppSettings["AuthClientId"];
var cerificateThumbprint = ConfigurationManager.AppSettings["AuthCertThumbprint"];
var certificate = FindCertificateByThumbprint(cerificateThumbprint);
var assertionCert = new ClientAssertionCertificate(clientId, certificate);
keyVaultClient = new KeyVaultClient((authority, resource, scope) => GetAccessToken(authority, resource, scope, assertionCert),
new InjectHostHeaderHttpMessageHandler());
// etc
这表明我们可以使用AuthClientId和AuthCertThumbprint获取令牌
在这种情况下,应由AuthClientId给出应用程序ID,由AuthCertThumbprint给出“验证密钥”
没有提到服务主体。