как отправить и получить имя пользователя и пароль от почтальона в код с помощью базовой аутентификации asp.net - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь сделать API

вот мой логин для получения токена аутентификации

  public IActionResult Login(string Username,string Password)
    {
        if (ModelState.IsValid)
        {
            string user = GetAuth(Username, Password);
            if (user == null)
            {
                return Unauthorized();
            }

            var claims = new[]
            {
        new System.Security.Claims.Claim(JwtRegisteredClaimNames.Sub, Username),
        new System.Security.Claims.Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
    };

            var token = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken
            (
                issuer: "" ,
                audience: "",//appsettings.json içerisinde bulunan audince değeri
                claims: claims,
                expires: DateTime.UtcNow.AddDays(30), // 30 gün geçerli olacak
                notBefore: DateTime.UtcNow,
                signingCredentials: new Microsoft.IdentityModel.Tokens.SigningCredentials(new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("aaa wssadsa adsad sa  rasd as")),//appsettings.json içerisinde bulunan signingkey değeri
                        Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256)
            ) ;
            Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;

            return Ok(new { token = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler().WriteToken(token) });
        }
        else
        {
            return BadRequest();
        }

    }

Теперь я хочу проверить это с помощью почтальона. В интерфейсе почтальона на вкладке Авторизация я ввел имя пользователяи пароль, и я нажимаю кнопку «Отправить», она вызывает мою функцию, но имя пользователя и пароль пустые

в чем моя ошибка?

enter image description here

1 Ответ

0 голосов
/ 07 ноября 2019

Здесь вы смешиваете и сопоставляете понятия. Обычная аутентификация не просто означает «использует имя пользователя и пароль»;это особая схема аутентификации, которая является токеном авторизации. Например, точно так же, как вы можете авторизовать вызов API с токеном аутентификации, отправив заголовок, такой как Authorization: Bearer {token}, вы можете авторизоваться через Authorization: Basic {base64-encode user:pass}.

. То, что вы здесь делаете, - это вход в систему. Другими словами, вы могли бы сделать это сначала , чтобы вернуть токен аутентификации, который затем позже будет передан через Authorization: Bearer {token}. Здесь значения имени пользователя и пароля должны быть получены из тела запроса , а не из заголовка Authorization.

...