コード例 #1
0
        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);
            });
        }
コード例 #2
0
 public AuthService(ISecurityTokenProvider tokenService,
                    IHashingProvider hashingProvider,
                    IMerchantRepository merchantRepository)
 {
     _tokenProvider      = tokenService;
     _hashingProvider    = hashingProvider;
     _merchantRepository = merchantRepository;
 }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: SignInService.cs プロジェクト: Laixer/FunderMaps
 /// <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));
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        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()}");
            }
        }
コード例 #7
0
 public DynamicsODataClientHandler(IOptions <DynamicsOptions> options, ISecurityTokenProvider tokenProvider)
 {
     this.options       = options.Value;
     this.tokenProvider = tokenProvider;
 }
コード例 #8
0
 public MonitoringApiClient(ISecurityTokenProvider securityTokenProvider, IHttpClient httpClient)
 {
     this.securityTokenProvider = securityTokenProvider;
     this.httpClient            = httpClient;
 }
コード例 #9
0
 public CachedADFSSecurityTokenProvider(IHttpClientFactory httpClientFactory, IOptions <DynamicsOptions> options, ICache cache, ILoggerFactory loggerFactory)
 {
     internalSecurityProvider = new ADFSSecurityTokenProvider(httpClientFactory, options, loggerFactory.CreateLogger <ADFSSecurityTokenProvider>());
     this.cache = cache;
 }