Quantcast
Channel: Security
Viewing all articles
Browse latest Browse all 4737

Call IdentityServer action from API

$
0
0

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


Viewing all articles
Browse latest Browse all 4737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>