public KeyVaultAdminService(IOptionsSnapshot <AzureAdOptions> azureAdOptions,
                                    IOptionsSnapshot <AdminConfig> adminConfig,
                                    IOptionsSnapshot <ResourceIds> resources,
                                    IGraphHttpService graphHttpService,
                                    IApplicationConfiguration applicationConfiguration,
                                    IUser user,
                                    IHttpContextAccessor contextAccessor)
        {
            userId   = user.ObjectId;
            tenantId = Guid.Parse(user.TenantId);
            clientId = Guid.Parse(azureAdOptions.Value.ClientId);

            adalContext   = new AuthenticationContext($"{azureAdOptions.Value.AADInstance}{azureAdOptions.Value.TenantId}", new ADALSessionCache(userId, contextAccessor));
            resourceGroup = adminConfig.Value.ResourceGroup;

            kvManagmentClient = new KeyVaultManagementClient(new AutoRestCredential <KeyVaultManagementClient>(GetAppToken))
            {
                SubscriptionId = adminConfig.Value.SubscriptionId,
                BaseUri        = new Uri(adminConfig.Value.ArmInstance)
            };
            kvClient = new KeyVaultClient(new AutoRestCredential <KeyVaultClient>(GetAppTokenForKv));

            this.azureAdOptions           = azureAdOptions.Value;
            this.adminConfig              = adminConfig.Value;
            this.graphHttpService         = graphHttpService;
            this.applicationConfiguration = applicationConfiguration;
            this.resources = resources.Value;
        }
        public KeyVaultAdminService(IOptionsSnapshot <AzureAdOptions> azureAdOptions, IOptionsSnapshot <AdminConfig> adminConfig, IOptionsSnapshot <Resources> resources, IGraphHttpService graphHttpService, IHttpContextAccessor contextAccessor)
        {
            var principal = contextAccessor.HttpContext.User;

            userId   = principal.FindFirst("oid").Value;
            tenantId = Guid.Parse(principal.FindFirst("tid").Value);
            clientId = Guid.Parse(azureAdOptions.Value.ClientId);

            adalContext       = new AuthenticationContext($"{azureAdOptions.Value.AADInstance}{azureAdOptions.Value.TenantId}", new ADALSessionCache(userId, contextAccessor));
            resourceGroup     = adminConfig.Value.ResourceGroup;
            kvManagmentClient = new KeyVaultManagementClient(new KeyVaultCredential(GetAppToken));
            kvManagmentClient.SubscriptionId = adminConfig.Value.SubscriptionId;
            kvClient = new KeyVaultClient(new KeyVaultCredential(GetAppTokenForKv));

            this.azureAdOptions   = azureAdOptions.Value;
            this.adminConfig      = adminConfig.Value;
            this.graphHttpService = graphHttpService;
            this.resources        = resources.Value;
        }