Esempio n. 1
0
        protected override async Task <SecretData> RotateValue(Parameters parameters, RotationContext context, CancellationToken cancellationToken)
        {
            string         key;
            DateTimeOffset expiresOn;
            DateTimeOffset nextRotationOn;

            if (parameters.StorageKeySecret != null)
            {
                SecretValue storageKeySecret = await context.GetSecret(parameters.StorageKeySecret);

                key            = storageKeySecret.Value;
                expiresOn      = storageKeySecret.ExpiresOn;
                nextRotationOn = storageKeySecret.NextRotationOn;
            }
            else
            {
                key = await StorageUtils.RotateStorageAccountKey(parameters.Subscription.ToString(), parameters.Account, context, _tokenCredentialProvider, cancellationToken);

                expiresOn      = DateTimeOffset.MaxValue;
                nextRotationOn = _clock.UtcNow.AddMonths(6);
            }

            string connectionString = $"DefaultEndpointsProtocol=https;AccountName={parameters.Account};AccountKey={key}";

            return(new SecretData(connectionString, expiresOn, nextRotationOn));
        }
Esempio n. 2
0
        protected override async Task <SecretData> RotateValue(Parameters parameters, RotationContext context, CancellationToken cancellationToken)
        {
            SecretValue secret = await context.GetSecret(parameters.Secret);

            byte[] plainTextBytes      = System.Text.Encoding.UTF8.GetBytes(secret.Value);
            string secretEncodedBase64 = System.Convert.ToBase64String(plainTextBytes);

            return(new SecretData(secretEncodedBase64, secret.ExpiresOn, secret.NextRotationOn));
        }
Esempio n. 3
0
        protected override async Task <SecretData> RotateValue(Parameters parameters, RotationContext context, CancellationToken cancellationToken)
        {
            string adAppId = await context.GetSecretValue(new SecretReference { Location = parameters.ADApplication.Location, Name = parameters.ADApplication.Name + ADApplication.AppIdSuffix });

            SecretValue adAppSecret = await context.GetSecret(new SecretReference { Location = parameters.ADApplication.Location, Name = parameters.ADApplication.Name + ADApplication.AppSecretSuffix });

            var connectionString = new StringBuilder();

            connectionString.Append($"Data Source={parameters.DataSource}");
            if (!string.IsNullOrEmpty(parameters.InitialCatalog))
            {
                connectionString.Append($";Initial Catalog={parameters.InitialCatalog}");
            }

            connectionString.Append($";AAD Federated Security=True;Application Client Id={adAppId};Application Key={adAppSecret?.Value}");
            if (!string.IsNullOrWhiteSpace(parameters.AdditionalParameters))
            {
                connectionString.Append($";{parameters.AdditionalParameters}");
            }

            return(new SecretData(connectionString.ToString(), adAppSecret.ExpiresOn, adAppSecret.NextRotationOn));
        }