使用主题名称 + 颁发者身份验证访问 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.
我正在将我的 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.