public static string getUserName(HttpContext context)
        {
            string tokenString = AuthenticationHttpContextExtensions.GetTokenAsync(context, "access_token").Result;
            JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
            JwtSecurityToken        token   = handler.ReadJwtToken(tokenString);

            return(token.Subject);
        }
        public async Task <IActionResult> Index()
        {
            ViewData["access_token"] = await AuthenticationHttpContextExtensions.GetTokenAsync(HttpContext, "access_token");

            ViewData["id_token"] = await AuthenticationHttpContextExtensions.GetTokenAsync(HttpContext, "id_token");


            return(View());
        }
示例#3
0
        public async Task WriteOutIdentityInfo()
        {
            string identityToken = await AuthenticationHttpContextExtensions.GetTokenAsync(HttpContext, OpenIdConnectDefaults.AuthenticationScheme, OpenIdConnectParameterNames.IdToken);

            Debug.WriteLine($"Identity token: {identityToken}");

            foreach (var claim in User.Claims)
            {
                Debug.WriteLine($"Claim type: {claim.Type} - Claim value: {claim.Value}");
            }
        }
        public async Task <IActionResult> Contact()
        {
            var accessToken = await AuthenticationHttpContextExtensions.GetTokenAsync(this.HttpContext, "access_token");

            var client = new HttpClient();

            client.SetBearerToken(accessToken);
            var res = await client.GetAsync("https://localhost:44325/api/custom");

            return(Ok(res));
        }
示例#5
0
        private async Task <string> RenewTokens(IConfiguration appConfiguration, IHttpContextAccessor httpContextAccessor)
        {
            // get the current HttpContext to access the tokens
            var currentContext = httpContextAccessor.HttpContext;

            // get the metadata
            var discoveryClient  = new DiscoveryClient(appConfiguration.GetValue <string>("QuantusIdpBaseUri"));
            var metaDataResponse = await discoveryClient.GetAsync();

            // create a new token client to get new tokens
            var tokenClient = new TokenClient(metaDataResponse.TokenEndpoint,
                                              "fittifyclient", "secret");

            // get the saved refresh token Asp.Net Core 1.1

            var currentRefreshToken =
                await AuthenticationHttpContextExtensions.GetTokenAsync(currentContext,
                                                                        OpenIdConnectParameterNames.RefreshToken);

            // refresh the tokens
            var tokenResult = await tokenClient.RequestRefreshTokenAsync(currentRefreshToken);

            if (!tokenResult.IsError)
            {
                // Save the tokens.
                var authenticateInfo = await httpContextAccessor.HttpContext
                                       .AuthenticateAsync();

                var expiresAt = DateTime.UtcNow + TimeSpan.FromSeconds(tokenResult.ExpiresIn);
                authenticateInfo.Properties.UpdateTokenValue("expires_at",
                                                             expiresAt.ToString("o", CultureInfo.InvariantCulture));

                authenticateInfo.Properties.UpdateTokenValue(
                    OpenIdConnectParameterNames.AccessToken,
                    tokenResult.AccessToken);
                authenticateInfo.Properties.UpdateTokenValue(
                    OpenIdConnectParameterNames.RefreshToken,
                    tokenResult.RefreshToken);

                // we're signing in again with the new values.
                await httpContextAccessor.HttpContext.SignInAsync("Cookies",
                                                                  authenticateInfo.Principal, authenticateInfo.Properties);

                // return the new access token
                return(tokenResult.AccessToken);
            }
            else
            {
                throw new OpenIdConnectException("Problem encountered while refreshing tokens.",
                                                 tokenResult.Exception);
            }
        }
示例#6
0
        public async Task Logout()
        {
            // get the metadata
            var discoveryClient  = new DiscoveryClient(_appConfiguration.GetValue <string>("QuantusIdpBaseUri"));
            var metaDataResponse = await discoveryClient.GetAsync();

            // create a TokenRevocationClient
            var revocationClient = new TokenRevocationClient(
                metaDataResponse.RevocationEndpoint,
                "fittifyclient",
                "secret");

            // get the access token to revoke
            var accessToken =
                await AuthenticationHttpContextExtensions.GetTokenAsync(
                    _httpContextAccessor.HttpContext,
                    OpenIdConnectParameterNames.AccessToken);

            if (!string.IsNullOrWhiteSpace(accessToken))
            {
                var revokeAccessTokenResponse =
                    await revocationClient.RevokeAccessTokenAsync(accessToken);

                if (revokeAccessTokenResponse.IsError)
                {
                    throw new OpenIdConnectException("Problem encountered while revoking the access token."
                                                     , revokeAccessTokenResponse.Exception);
                }
            }

            // revoke the refresh token as well
            var refreshToken =
                await AuthenticationHttpContextExtensions.GetTokenAsync(
                    _httpContextAccessor.HttpContext,
                    OpenIdConnectParameterNames.RefreshToken);

            if (!string.IsNullOrWhiteSpace(refreshToken))
            {
                var revokeRefreshTokenResponse =
                    await revocationClient.RevokeRefreshTokenAsync(refreshToken);

                if (revokeRefreshTokenResponse.IsError)
                {
                    throw new OpenIdConnectException("Problem encountered while revoking the refresh token."
                                                     , revokeRefreshTokenResponse.Exception);
                }
            }

            await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); // Logging out of client

            await HttpContext.SignOutAsync(OpenIdConnectDefaults.AuthenticationScheme);        // Logging out of IDP
        }
示例#7
0
        public async Task <ActionResult <IEnumerable <string> > > GetBackendAsync()
        {
            var FrontEndToken = await AuthenticationHttpContextExtensions.GetTokenAsync(HttpContext, "Bearer", "access_token");

            string userId       = User.FindFirst(ClaimTypes.Name)?.Value;
            var    BackEndToken = CreateBackEndToken(userId);

            //Call the backend with a new Audience and issuer specified in the Backend token generated above.

            //var BackEndResponse = CallBackEndWithNewToken(BackEndToken);
            return(new string[] { "Token for calling the frontend api is", FrontEndToken,
                                  "Token for Calling back end api is", BackEndToken });
        }
示例#8
0
 private async Task <string> GetBearerToken(string accessToken)
 {
     if (!string.IsNullOrEmpty(accessToken))
     {
         return(accessToken);
     }
     else if (HttpContextHelper.HttpContext != null)
     {
         return(await AuthenticationHttpContextExtensions.GetTokenAsync(
                    HttpContextHelper.HttpContext, "access_token"));
     }
     return(null);
 }
示例#9
0
        private async Task RefreshTokensAync()
        {
            var authorizatinServerInformation =
                await DiscoveryClient.GetAsync("http://localhost:26421");

            var client = new TokenClient(authorizatinServerInformation.TokenEndpoint,
                                         "socialnetwork_code", "secret");

            var refreshToken = await AuthenticationHttpContextExtensions.GetTokenAsync(this.HttpContext, "refresh_token");

            var tokenResponse = await client.RequestRefreshTokenAsync(refreshToken);

            var identityToken = await AuthenticationHttpContextExtensions.GetTokenAsync(this.HttpContext, "id_token");

            var expiresAt = DateTime.UtcNow + TimeSpan.FromSeconds(tokenResponse.ExpiresIn);

            var tokens = new[] {
                new AuthenticationToken
                {
                    Name  = OpenIdConnectParameterNames.IdToken,
                    Value = tokenResponse.IdentityToken
                },
                new AuthenticationToken
                {
                    Name  = OpenIdConnectParameterNames.AccessToken,
                    Value = tokenResponse.AccessToken
                },
                new AuthenticationToken
                {
                    Name  = OpenIdConnectParameterNames.RefreshToken,
                    Value = tokenResponse.RefreshToken
                },
                new AuthenticationToken
                {
                    Name  = "expires_at",
                    Value = expiresAt.ToString("o", CultureInfo.InvariantCulture)
                }
            };

            //var authenticationInformation =HttpContext.Authentication.GetAuthenticateInfoAsync(CookieAuthenticationDefaults.AuthenticationScheme);
            var authenticationInformation = await AuthenticationHttpContextExtensions.AuthenticateAsync(this.HttpContext, CookieAuthenticationDefaults.AuthenticationScheme);

            authenticationInformation.Properties.StoreTokens(tokens);

            await AuthenticationHttpContextExtensions.SignInAsync(this.HttpContext,
                                                                  CookieAuthenticationDefaults.AuthenticationScheme,
                                                                  authenticationInformation.Principal,
                                                                  authenticationInformation.Properties);
        }
示例#10
0
        public async Task <IActionResult> Shouts()
        {
            await RefreshTokens();

            var token = await AuthenticationHttpContextExtensions.GetTokenAsync(HttpContext, "access_token");

            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);

                var shoutsResponse = await(await client.GetAsync($"http://localhost:33918/api/shouts")).Content.ReadAsStringAsync();

                var shouts = JsonConvert.DeserializeObject <Shout[]>(shoutsResponse);

                return(View(shouts));
            }
        }
示例#11
0
        public async Task <IActionResult> About()
        {
            //get saved token
            var xtoken = await AuthenticationHttpContextExtensions
                         .GetTokenAsync(HttpContext, OpenIdConnectParameterNames.IdToken);

            //write it out
            Debug.WriteLine("Iden token " + xtoken);
            //writeout Claims
            foreach (var claim in User.Claims)
            {
                Debug.WriteLine("claim type: " + claim.Type + "-- Claim Value " + claim.Value);
            }

            ViewData["Message"] = xtoken;

            return(View());
        }
示例#12
0
        public async Task <IActionResult> Show()
        {
            var discoveryClient  = new DiscoveryClient("https://localhost:44364/");
            var metaDataResponse = await discoveryClient.GetAsync();

            var userInfoClient = new UserInfoClient(metaDataResponse.UserInfoEndpoint);

            var accessToken =
                await AuthenticationHttpContextExtensions.GetTokenAsync(this.HttpContext, OpenIdConnectParameterNames.AccessToken);

            var response = await userInfoClient.GetAsync(accessToken);

            if (response.IsError)
            {
                throw new OpenIdConnectException("Problem accessing the UserInfo endpoint.", response.Exception);
            }

            var address = response.Claims.FirstOrDefault(c => c.Type == "address")?.Value;


            return(View("Index", new AddressViewModel(address)));
        }
示例#13
0
        public async Task <UserProfile> GetUserProfileFromToken(HttpContext httpContext)
        {
            var accessToken = await AuthenticationHttpContextExtensions.GetTokenAsync(httpContext, "access_token");

            return(GetUserProfileFromClaimValues(accessToken));
        }