使用主题名称 + 颁发者身份验证访问 KeyVault

Access KeyVault with Subject Name + Issuer Auth

我正在将我的 AAD 应用程序切换到主题名称 + 颁发者身份验证,我相信我做对了,因为我可以通过我的测试应用程序获得令牌,但我不明白如何使用 SN +I 连接到 KeyVault。 Azure.Security.KeyVault.Secrets.SecretClient 的构造函数采用 TokenCredential 但派生的 类 的 none 似乎显然与 SN+I 授权相关。我不确定如何处理这种情况。如有任何提示,我们将不胜感激!

我已经通过创建我自己的继承自 TokenCredential 的“SniTokenCredential”class 让这个场景起作用。它检索这样的令牌:

IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(_applicationId)
    .WithAuthority($"https://login.microsoftonline.com/{_tenantId}")
    .WithCertificate(_certificate)
    .Build();
AuthenticationResult authResult = await app.AcquireTokenForClient(requestContext.Scopes)
    .WithSendX5C(true)
    .ExecuteAsync(cancellationToken);

然后我可以 return 像这样的 AccessToken:

return new AccessToken(authResult.AccessToken, authResult.ExpiresOn);

您可能想要一个用 ClientCertificateCredentialOptions.SendCertificateChain = true 构建的 ClientCertificateCredential。它will include x5c header in client claims when acquiring a token to enable subject name / issuer based authentication for the ClientCertificateCredential.