public IActionResult Post([FromBody] TokenReq tokenReq) { List <string> ErrorMessages = new List <string>(); ErrorMessages.Add("okokok"); // authentication successful so generate jwt token var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Email, tokenReq.Username), new Claim(ClaimTypes.Name, tokenReq.Username) }), Expires = DateTime.UtcNow.AddMinutes(15), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(_jwtSetting.Secret), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var refreshToken = GenerateRefreshToken(); return(Ok(new { Token = tokenHandler.WriteToken(token), RereshToken = refreshToken })); }
/// <summary> /// Get a valid access token using credentials. /// </summary> /// <param name="email"></param> /// <param name="securePassword"></param> /// <returns></returns> private async Task <TokenResp> GetTokenWithUsernameAndPasswordAsync(string email, SecureString securePassword) { var tokenReq = new TokenReq { Username = email, Password = securePassword, GrantType = "password" }; var login = await restPoolService.IdentityAPI.GetTokenAsync(tokenReq); if (login.access_token == null) { throw new InvalidOperationException(Localization.Resources.Snack_Message_LogIn_NoTokenAvailable); } return(login); }
/// <summary> /// Logs in a user using <paramref name="username"/> and <paramref name="password"/> as parameters. /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns>Returns the user details that logged in.</returns> public async Task <ProfileResp> LogInAsync(string username, SecureString password) { // get token var token = await GetTokenWithUsernameAndPasswordAsync(username, password); GlobalSettings.AccessToken = token.access_token; // get profile var request = new TokenReq { Username = username }; var userProfile = await restPoolService.ProfilesAPI.GetUserAsync(); if (userProfile.id == null) { throw new InvalidOperationException(Localization.Resources.Snack_Message_Profile_NoProfileAvailable); } authenticatedUser = userProfile.displayName; return(userProfile); }
/// <summary> /// Get a valid access token using credentials. /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <TokenResp> GetTokenAsync(TokenReq request) { var client = new RestSharp.RestClient(GlobalSettings.AzureLoginEndpoint); client.Timeout = -1; var internalRequest = new RestSharp.RestRequest(RestSharp.Method.POST); internalRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded"); internalRequest.AddHeader("Cookie", "x-ms-gateway-slice=prod; stsservicecookie=ests; fpc=AhfW_FJrHCJGl1Lr3XFEqOjhvS2OAQAAAPhsttYOAAAA"); internalRequest .AddParameter("grant_type", request.GrantType) .AddParameter("username", request.Username) .AddParameter("password", new System.Net.NetworkCredential(string.Empty, request.Password).Password) .AddParameter("client_id", GlobalSettings.ClientId) .AddParameter("resource", GlobalSettings.MsGraphResourceEndpoint); RestSharp.IRestResponse response = await client.ExecuteAsync(internalRequest); return(JsonHelper.ToClass <TokenResp>(response.Content)); }