【问题标题】:How do I use an Application ID and one of its keys to authenticate?如何使用应用程序 ID 及其密钥之一进行身份验证?
【发布时间】:2018-06-22 08:00:04
【问题描述】:

通过我的question here,我了解到我可以在 Active Directory 中设置应用程序注册,并且可以使用在应用程序注册中设置的应用程序 ID 和密钥进行身份验证。

在哪里可以举例说明如何做到这一点?

应用程序 ID(我理解为也称为客户端 ID)和我添加到密钥集合的密钥的组合与服务主体有什么关系?

[更新]

来自this link about service principals

如果我理解正确,我们不再谈论“应用程序密钥”,而是谈论“应用程序凭据”。我猜这是同一件事?

以下段落让我对“应用程序凭据”、“登录凭据”和“服务主体凭据”之间的区别感到非常困惑:

“要使用服务主体登录,请将 -ServicePrincipal 参数与 Connect-AzureRmAccount cmdlet 结合使用。您还需要服务主体的应用程序 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 的说明。

【问题讨论】:

    标签: azure


    【解决方案1】:

    您通常使用服务主体在 VSTS 等 CI/CD 环境或 PowerShell 脚本中部署/管理您的资源。检查Sign in with a service principal

    【讨论】:

    • 您的链接对我来说已损坏。我更新了问题以表明我目前只是想了解 Microsoft Doc。
    • 我修复了链接。
    • 您是说服务主体是密钥吗?
    • 不,服务主体是服务/应用程序的帐户/主体,而用户主体是用户的帐户/主体。密钥就像服务主体的密码
    【解决方案2】:

    来自sample application here修复Powershell脚本中的bug后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 获取令牌

    在这种情况下,猜测应用程序 ID 由 AuthClientId 给出,“验证密钥”由 AuthCertThumbprint 给出

    没有提到服务主体是必要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2011-12-10
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多