Skip to content

Commit 6e707b0

Browse files
committed
Deprecated Microsoft.Azure.KeyVault removed and replaced with
Azure.Security.KeyVault.Certificates
1 parent 0e186c9 commit 6e707b0

File tree

6 files changed

+23
-65
lines changed

6 files changed

+23
-65
lines changed

test/TestWebAppCoreAzureKeyVault/AzureKeyVault/ADTokenRequest.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

test/TestWebAppCoreAzureKeyVault/AzureKeyVault/AppKeyVaultClient.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.

test/TestWebAppCoreAzureKeyVault/Logic/Saml2ConfigurationLogic.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
using ITfoxtec.Identity.Saml2;
1+
using Azure.Core;
2+
using Azure.Security.KeyVault.Certificates;
3+
using ITfoxtec.Identity.Saml2;
24
using ITfoxtec.Identity.Saml2.Cryptography;
35
using ITfoxtec.Identity.Saml2.Schemas.Metadata;
4-
using Microsoft.Azure.KeyVault;
6+
using RSAKeyVaultProvider;
57
using System;
68
using System.Linq;
79
using System.Security.Cryptography.X509Certificates;
@@ -11,12 +13,12 @@ namespace TestWebAppCoreAzureKeyVault.Identity
1113
public class Saml2ConfigurationLogic
1214
{
1315
private readonly Saml2Configuration config;
14-
private readonly KeyVaultClient keyVaultClient;
16+
private readonly TokenCredential tokenCredential;
1517

16-
public Saml2ConfigurationLogic(Saml2Configuration config, KeyVaultClient keyVaultClient)
18+
public Saml2ConfigurationLogic(Saml2Configuration config, TokenCredential tokenCredential)
1719
{
1820
this.config = config;
19-
this.keyVaultClient = keyVaultClient;
21+
this.tokenCredential = tokenCredential;
2022
}
2123

2224
public string Saml2IdPMetadata{ get; set; }
@@ -33,10 +35,11 @@ public Saml2Configuration GetSaml2Configuration()
3335
RevocationMode = config.RevocationMode
3436
};
3537

36-
var certificateBundle = keyVaultClient.GetCertificateAsync(AzureKeyVaultBaseUrl, AzureKeyVaultCertificateName).GetAwaiter().GetResult();
37-
var publicCertificate = new X509Certificate2(certificateBundle.Cer);
38+
var certificateClient = new CertificateClient(new Uri(AzureKeyVaultBaseUrl), tokenCredential);
39+
var certificateWithPolicy = certificateClient.GetCertificate(AzureKeyVaultCertificateName);
3840

39-
var rsa = keyVaultClient.ToRSA(certificateBundle.KeyIdentifier, publicCertificate);
41+
var publicCertificate = new X509Certificate2(certificateWithPolicy.Value.Cer);
42+
var rsa = RSAFactory.Create(tokenCredential, certificateWithPolicy.Value.KeyId, new Azure.Security.KeyVault.Keys.JsonWebKey(publicCertificate.GetRSAPublicKey()));
4043
saml2Configuration.SigningCertificate = new Saml2X509Certificate(publicCertificate, rsa);
4144

4245
//saml2Configuration.SignAuthnRequest = true;

test/TestWebAppCoreAzureKeyVault/Startup.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
using Microsoft.Extensions.Configuration;
44
using Microsoft.Extensions.DependencyInjection;
55
using Microsoft.Extensions.Hosting;
6-
using ITfoxtec.Identity.Helpers;
76
using ITfoxtec.Identity.Saml2.MvcCore.Configuration;
87
using ITfoxtec.Identity.Saml2;
9-
using TestWebAppCoreAzureKeyVault.AzureKeyVault;
10-
using Microsoft.Azure.KeyVault;
118
using TestWebAppCoreAzureKeyVault.Identity;
9+
using Azure.Core;
10+
using Azure.Identity;
1211

1312
namespace TestWebAppCoreAzureKeyVault
1413
{
@@ -32,9 +31,9 @@ public void ConfigureServices(IServiceCollection services)
3231

3332
services.AddSingleton(serviceProvider =>
3433
{
35-
var keyVaultClient = serviceProvider.GetService<KeyVaultClient>();
34+
var tokenCredential = serviceProvider.GetService<TokenCredential>();
3635

37-
return new Saml2ConfigurationLogic(saml2Configuration, keyVaultClient)
36+
return new Saml2ConfigurationLogic(saml2Configuration, tokenCredential)
3837
{
3938
Saml2IdPMetadata = Configuration["Saml2:IdPMetadata"],
4039
AzureKeyVaultBaseUrl = Configuration["AzureKeyVault:BaseUrl"],
@@ -44,11 +43,10 @@ public void ConfigureServices(IServiceCollection services)
4443

4544
services.AddSaml2();
4645

47-
services.AddTransient<TokenHelper>();
48-
services.AddSingleton(serviceProvider =>
46+
//In production possible use: services.AddSingleton<TokenCredential, DefaultAzureCredential>();
47+
services.AddSingleton<TokenCredential>(serviceProvider =>
4948
{
50-
var tokenHelper = serviceProvider.GetService<TokenHelper>();
51-
return AppKeyVaultClient.GetClient(Configuration["AzureKeyVault:ClientId"], Configuration["AzureKeyVault:ClientSecret"], tokenHelper);
49+
return new ClientSecretCredential(Configuration["AzureKeyVault:TenantId"], Configuration["AzureKeyVault:ClientId"], Configuration["AzureKeyVault:ClientSecret"]);
5250
});
5351

5452
services.AddHttpClient();

test/TestWebAppCoreAzureKeyVault/TestWebAppCoreAzureKeyVault.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424

2525
<ItemGroup>
2626
<PackageReference Include="BuildBundlerMinifier" Version="3.2.449" />
27-
<PackageReference Include="ITfoxtec.Identity" Version="2.0.2" />
28-
<PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.5" />
29-
<PackageReference Include="RSAKeyVaultProvider" Version="1.1.57" />
27+
<PackageReference Include="ITfoxtec.Identity" Version="2.5.6" />
28+
<PackageReference Include="Azure.Security.KeyVault.Certificates" Version="4.2.0" />
29+
<PackageReference Include="Azure.Identity" Version="1.5.0" />
30+
<PackageReference Include="RSAKeyVaultProvider" Version="2.1.1" />
3031
<PackageReference Include="System.ServiceModel.Security" Version="4.8.0" />
3132
</ItemGroup>
3233
</Project>

test/TestWebAppCoreAzureKeyVault/appsettings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
// itfoxtec.identity.saml2.testwebappcore_Certificate.pfx password: !QAZ2wsx
1919
// And configure your Azure Key Vault.
2020
"AzureKeyVault": {
21+
"TenantId": "xxxx",
2122
"ClientId": "xxxx",
2223
"ClientSecret": "xxxx",
2324
"BaseUrl": "https://xxxx.vault.azure.net/",

0 commit comments

Comments
 (0)