public async Task <ActionResult> Post([FromBody] UserDto user) { var hasher = new PasswordHasher <MongoExternalUser>(); try { var mongoExternalUser = await _userStore.AutoProvisionUser("IdSrv", user.Username, new List <Claim> { new Claim(JwtClaimTypes.Name, user.Username), new Claim(JwtClaimTypes.Email, user.Email) }); var hash = hasher.HashPassword(mongoExternalUser, user.Password); await _userStore.SetPasswordHashForUser(mongoExternalUser, hash); return(await Task.FromResult(new OkResult())); } catch (Exception e) { if (e is UserExistsException) { var problem = new ProblemDocument { ProblemType = new Uri("http://tempuri.org/errors/user-already-exists"), Title = $"User {user.Username} already exists", StatusCode = HttpStatusCode.BadRequest }; var contentResult = new ContentResult(); contentResult.Content = await new ProblemContent(problem).ReadAsStringAsync(); contentResult.ContentType = "application/problem+json"; contentResult.StatusCode = (int?)HttpStatusCode.BadRequest; return(await Task.FromResult(contentResult)); } return(await Task.FromResult(new StatusCodeResult(500))); } }