36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Security.Cryptography;
 | |
| 
 | |
| namespace DysonNetwork.Pass.Auth.OidcProvider.Options;
 | |
| 
 | |
| public class OidcProviderOptions
 | |
| {
 | |
|     public string IssuerUri { get; set; } = "https://your-issuer-uri.com";
 | |
|     public string? PublicKeyPath { get; set; }
 | |
|     public string? PrivateKeyPath { get; set; }
 | |
|     public TimeSpan AccessTokenLifetime { get; set; } = TimeSpan.FromHours(1);
 | |
|     public TimeSpan RefreshTokenLifetime { get; set; } = TimeSpan.FromDays(30);
 | |
|     public TimeSpan AuthorizationCodeLifetime { get; set; } = TimeSpan.FromMinutes(5);
 | |
|     public bool RequireHttpsMetadata { get; set; } = true;
 | |
| 
 | |
|     public RSA? GetRsaPrivateKey()
 | |
|     {
 | |
|         if (string.IsNullOrEmpty(PrivateKeyPath) || !File.Exists(PrivateKeyPath))
 | |
|             return null;
 | |
| 
 | |
|         var privateKey = File.ReadAllText(PrivateKeyPath);
 | |
|         var rsa = RSA.Create();
 | |
|         rsa.ImportFromPem(privateKey.AsSpan());
 | |
|         return rsa;
 | |
|     }
 | |
| 
 | |
|     public RSA? GetRsaPublicKey()
 | |
|     {
 | |
|         if (string.IsNullOrEmpty(PublicKeyPath) || !File.Exists(PublicKeyPath))
 | |
|             return null;
 | |
| 
 | |
|         var publicKey = File.ReadAllText(PublicKeyPath);
 | |
|         var rsa = RSA.Create();
 | |
|         rsa.ImportFromPem(publicKey.AsSpan());
 | |
|         return rsa;
 | |
|     }
 | |
| } |