Exemple #1
0
        private const string tenantId = "72f988bf-86f1-41af-91ab-2d7cd011db47"; // 72f988bf-86f1-41af-91ab-2d7cd011db47     629f581e-6f48-4447-a75e-66789a96f33d

        public HomeController(ISettings settings, IHttpClient httpClient, IAccessTokenGetter accessTokenGetter, ITenantGetter tenantGetter)
        {
            this.settings          = settings;
            this.httpClient        = httpClient;
            this.accessTokenGetter = accessTokenGetter;
            this.tenantGetter      = tenantGetter;
        }
Exemple #2
0
        public async Task InvokeAsync(HttpContext context,
                                      IHttpClientFactory http,
                                      IAccessTokenGetter accessTokenGetter)
        {
            if (!context.User.Identity.IsAuthenticated)
            {
                await _next(context);

                return;
            }

            if (!context.User.TryGetEmail(out var email))
            {
                await _next(context);

                return;
            }

            var accessToken = await accessTokenGetter.GetTokenAsync(context);

            var request = new HttpRequestMessage(HttpMethod.Get, $"{_usersApiBaseUrl}/api/users/{email}/claims");

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var response = await http.CreateClient().SendAsync(request);

            if (!response.IsSuccessStatusCode)
            {
                await _next(context);

                return;
            }

            IEnumerable <ApiClaim> claims;

            using (var responseStream = await response.Content.ReadAsStreamAsync())
            {
                claims = await JsonSerializer.DeserializeAsync <ApiClaim[]>(responseStream);
            }

            foreach (var claim in claims)
            {
                context.User.Identities.First().AddClaim(new Claim(claim.ClaimType, claim.ClaimValue));
            }

            await _next(context);
        }
Exemple #3
0
 public AccessTokenAuthorizationOperationHandler()
 {
     accessTokenExistence = ServerComponents.GetComponent <IAccessTokenExistence>().AssertNotNull();
     accessTokenGetter    = ServerComponents.GetComponent <IAccessTokenGetter>().AssertNotNull();
 }