public async Task <IActionResult> Login([FromBody] LoginRequest request, [FromServices] IAccountRepo accountRepo) { try { var context = await _interaction.GetAuthorizationContextAsync(request.ReturnUrl); if (context != null) { var userProfile = await accountRepo.GetAccountAsync(request.Username, request.Password); if (userProfile != null && context != null) { var user = new IdentityServerUser(userProfile.User.UID.ToString()); user.DisplayName = userProfile.DisplayName; user.AdditionalClaims = new List <Claim> { new Claim(JwtClaimTypes.Name, userProfile.User.Name), new Claim(JwtClaimTypes.Email, userProfile.Email) }; await HttpContext.SignInAsync(user); return(new JsonResult(new { RedirectUrl = request.ReturnUrl, IsOk = true })); } } return(Unauthorized()); } catch (UserAccountException ex) { return(Unauthorized(ex.Message)); } catch (Exception ex) { return(InternalServerError(ex)); } }