I have a AdminController in IndentityServer4 project witch has an action
[Authorize] [HttpPost("user/{id:guid}/roles")] public async Task<IActionResult> AssignRolesToUser(string id, [FromBody] string[] rolesToAssign) { var appUser = await _userManager.FindByIdAsync(id); if (appUser == null) { return NotFound(); } }
So I would like in my ApiController to manage roles
[Route("api/user/AssignRole")] public IActionResult AssignRole() { var user = User; var discoveryClient = new DiscoveryClient("http://localhost:44367/"); var metaDataResponse = discoveryClient.GetAsync().Result; var userInfoClient = new UserInfoClient(metaDataResponse.UserInfoEndpoint); var accessToken = HttpContext .GetTokenAsync(OpenIdConnectParameterNames.AccessToken).Result; HttpClient _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("http://localhost:44367/"); _httpClient.DefaultRequestHeaders.Accept.Clear(); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); if (!string.IsNullOrWhiteSpace(accessToken)) { _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); } // serialize it var roles = JsonConvert.SerializeObject(new string[] { "ADMIN" }); // call the API var response = _httpClient.PostAsync( $"api/admin/user/e10892af-7d4a-4f6c-a47f-c58150ee488f/roles", new StringContent(roles, System.Text.Encoding.Unicode, "application/json")).Result; return Ok(response); }
It return 200 but does not fire AdminController.AssignRolesToUser whats wrong ? Regards