コード例 #1
0
    private static JwtAuthTicketFormat createAuthTicketFormat(IHostEnvironment hostEnv, IDataProtectionProvider?dataProtectionProvider, IConfiguration config)
    {
        var xtiAuthOptions = config.GetSection(XtiAuthenticationOptions.XtiAuthentication).Get <XtiAuthenticationOptions>();
        var key            = Encoding.ASCII.GetBytes(xtiAuthOptions.JwtSecret);
        var dataSerializer = new TicketSerializer();

        if (dataProtectionProvider == null)
        {
            var xtiFolder  = new XtiFolder(hostEnv);
            var keyDirPath = xtiFolder.SharedAppDataFolder()
                             .WithSubFolder("Keys")
                             .Path();
            dataProtectionProvider = DataProtectionProvider.Create(new DirectoryInfo(keyDirPath));
        }
        var dataProtector    = dataProtectionProvider.CreateProtector(new[] { "XTI_Apps_Auth1" });
        var authTicketFormat = new JwtAuthTicketFormat
                               (
            new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey         = new SymmetricSecurityKey(key),
            ValidateIssuer           = false,
            ValidateAudience         = false
        },
            dataSerializer,
            dataProtector
                               );

        return(authTicketFormat);
    }
コード例 #2
0
 internal SharedFileSecretCredentials(XtiFolder xtiFolder, string key, IDataProtector dataProtector)
     : base(key, dataProtector)
 {
     sharedAppDataFolder = xtiFolder
                           .SharedAppDataFolder()
                           .WithSubFolder("Secrets");
 }
コード例 #3
0
    public static void AddXtiDataProtection(this IServiceCollection services, XtiEnvironment environment)
    {
        const string appName    = "XTI_App";
        var          keyDirPath = new XtiFolder(environment)
                                  .SharedAppDataFolder()
                                  .WithSubFolder("Keys")
                                  .Path();

        services
        .AddDataProtection
        (
            options => options.ApplicationDiscriminator = appName
        )
        .PersistKeysToFileSystem(new DirectoryInfo(keyDirPath))
        .SetApplicationName(appName);
    }
コード例 #4
0
 public static void AddFileSecretCredentials(this IServiceCollection services, XtiEnvironment environment)
 {
     services.AddXtiDataProtection(environment);
     services.AddSingleton <ISecretCredentialsFactory>(sp =>
     {
         var xtiFolder     = new XtiFolder(environment);
         var dataProtector = sp.GetDataProtector(new[] { "XTI_Secrets" });
         return(new FileSecretCredentialsFactory(xtiFolder, dataProtector));
     });
     services.AddSingleton(sp => (SecretCredentialsFactory)sp.GetRequiredService <ISecretCredentialsFactory>());
     services.AddSingleton <ISharedSecretCredentialsFactory>(sp =>
     {
         var xtiFolder     = new XtiFolder(environment);
         var dataProtector = sp.GetDataProtector(new[] { "XTI_Secrets" });
         return(new SharedFileSecretCredentialsFactory(xtiFolder, dataProtector));
     });
 }
コード例 #5
0
    public static IConfigurationBuilder UseXtiConfiguration(this IConfigurationBuilder config, XtiEnvironment environment, string appName, string appType, string[] args)
    {
        config.Sources.Clear();
        var xtiFolder     = new XtiFolder(environment);
        var settingsPaths = xtiFolder.SettingsPaths(appName, appType);

        foreach (var path in settingsPaths)
        {
            config.AddJsonFile
            (
                path,
                optional: true,
                reloadOnChange: true
            );
        }
        config.AddEnvironmentVariables();
        if (args != null)
        {
            config.AddCommandLine(args);
        }
        return(config);
    }
コード例 #6
0
 public FileSecretCredentialsFactory(XtiFolder xtiFolder, IDataProtector dataProtector)
     : base(dataProtector)
 {
     this.xtiFolder = xtiFolder;
 }