public EssContext(Uri serviceRoot, Uri endpointUrl, ISecurityTokenProvider tokenProvider, ILogger <EssContext> logger) : base(serviceRoot) { this.serviceRoot = serviceRoot; this.endpointUrl = endpointUrl; this.tokenProvider = tokenProvider; this.logger = logger; this.SaveChangesDefaultOptions = SaveChangesOptions.BatchWithSingleChangeset; this.EntityParameterSendOption = EntityParameterSendOption.SendOnlySetProperties; Func <Uri, Uri> formatUri = requestUri => requestUri.IsAbsoluteUri ? new Uri(endpointUrl, (endpointUrl.AbsolutePath == "/" ? string.Empty : endpointUrl.AbsolutePath) + requestUri.AbsolutePath + requestUri.Query) : new Uri(endpointUrl, (endpointUrl.AbsolutePath == "/" ? string.Empty : endpointUrl.AbsolutePath) + serviceRoot.AbsolutePath + requestUri.ToString()); BuildingRequest += (sender, args) => { args.Headers.Add("Authorization", $"Bearer {this.tokenProvider.AcquireToken().GetAwaiter().GetResult()}"); args.RequestUri = formatUri(args.RequestUri); }; Configurations.RequestPipeline.OnEntryStarting((arg) => { // do not send reference properties and null values to Dynamics arg.Entry.Properties = arg.Entry.Properties.Where((prop) => !prop.Name.StartsWith('_') && prop.Value != null); }); }
public AuthService(ISecurityTokenProvider tokenService, IHashingProvider hashingProvider, IMerchantRepository merchantRepository) { _tokenProvider = tokenService; _hashingProvider = hashingProvider; _merchantRepository = merchantRepository; }
public async Task Invoke(HttpContext context, ISecurityTokenProvider securityTokenProvider, IMerchantRepository merchantRepository) { var token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last(); if (token != null) { await ValidateAndAttachUserToContext(context, securityTokenProvider, merchantRepository, token); } await _next(context); }
/// <summary> /// Creates a new instance. /// </summary> public SignInService( IUserRepository userRepository, IOrganizationUserRepository organizationUserRepository, IOrganizationRepository organizationRepository, IPasswordHasher passwordHasher, ISecurityTokenProvider tokenProvider, ILogger <SignInService> logger) { UserRepository = userRepository ?? throw new ArgumentNullException(nameof(userRepository)); OrganizationUserRepository = organizationUserRepository ?? throw new ArgumentNullException(nameof(organizationUserRepository)); OrganizationRepository = organizationRepository ?? throw new ArgumentNullException(nameof(organizationRepository)); PasswordHasher = passwordHasher ?? throw new ArgumentNullException(nameof(passwordHasher)); TokenProvider = tokenProvider ?? throw new ArgumentNullException(nameof(tokenProvider)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public MonitoringResourceClientShould() { this.testUri = new Uri("https://management.azure.com"); this.fakeHttpClient = A.Fake <IHttpClient>(); this.fakeSecurityTokenProvider = A.Fake <ISecurityTokenProvider>(); this.fakeMetricRequest = BuildMetricRequest(); SetupFakeHttpResponseMessage(new HttpResponseMessage(HttpStatusCode.OK) { Content = GetTestContent(new MetricsResponse() { Metrics = GetMetricValues() }) }); this.sut = new MonitoringApiClient(this.fakeSecurityTokenProvider, this.fakeHttpClient); }
private async Task ValidateAndAttachUserToContext(HttpContext context, ISecurityTokenProvider securityTokenProvider, IMerchantRepository merchantRepository, string token) { try { var merchantId = securityTokenProvider.ValidateTokenAndExtactIdentity(token); // attach user to context on successful jwt validation context.Items[Extensions.MerchantContextKey] = await merchantRepository.GetById(merchantId); } catch { _log.LogWarning($"Token validation failed IP: {context.GetIPAddress()}"); } }
public DynamicsODataClientHandler(IOptions <DynamicsOptions> options, ISecurityTokenProvider tokenProvider) { this.options = options.Value; this.tokenProvider = tokenProvider; }
public MonitoringApiClient(ISecurityTokenProvider securityTokenProvider, IHttpClient httpClient) { this.securityTokenProvider = securityTokenProvider; this.httpClient = httpClient; }
public CachedADFSSecurityTokenProvider(IHttpClientFactory httpClientFactory, IOptions <DynamicsOptions> options, ICache cache, ILoggerFactory loggerFactory) { internalSecurityProvider = new ADFSSecurityTokenProvider(httpClientFactory, options, loggerFactory.CreateLogger <ADFSSecurityTokenProvider>()); this.cache = cache; }