반응형

C# api Token 생성 .NET에서 JWT 토큰 사용 01

 

1.Token 컨트롤러 추가

  • LoginController  클래스 추가
  •  

Token 클래스 추가

 

2.token api 기본구조/글래스 

  • ControllerBase 상속
  • [ApiController]  속성 api 컽트롤러 지정 
  •  [Route("[controller]")] 속성  라우터 지정 ,  [Route("user/[controller]")]  " user " URL경로
  • [HttpPost] 속성   http 방법 종류 
  • Results는  리턴 할때 http 상태 설정 할수 있음 , 정상 200 , 기타 404,401 등등 
  • 실행하면 자동으로 Swagger 표시 됩니다. 그리고 POST /login  api 표시

api 기본 Class

3.Token 패키지 설치 

  • NuGet 설치 
  • System.IdentityModel.Tokens.Jwt;
  • Microsoft.IdentityModel.Tokens;
        [HttpPost]
        public IResult Login(string username, string password)
        {
            string strToken = string.Empty;
            try
            {
                var claims = new List<Claim>() { new Claim("Company", "company"),
                                                new Claim("Name", "name"),
                                                new Claim(ClaimTypes.Role,"Admin")
                 };
                var token = new JwtSecurityToken
                (
                    issuer: "https://dongsik2013.tistory.com/",// 발급자
                    audience: "https://dongsik2013.tistory.com/",//발급대상
                    claims: claims,
                    expires: DateTime.UtcNow.AddDays(1), //하루
                    notBefore: DateTime.UtcNow,
                    signingCredentials: new SigningCredentials(
                        new SymmetricSecurityKey(Encoding.UTF8.GetBytes("1234567890123456789012345678901234567890")),
                        SecurityAlgorithms.HmacSha256)
                );
                strToken = new JwtSecurityTokenHandler().WriteToken(token);
            }
            catch (Exception ex )
            {
                 //로그 
            }

            if (string.IsNullOrWhiteSpace(strToken)) 
            {
                return Results.NotFound();
            }
            return Results.Ok(strToken);
        }

4.Token 실행 

  • 오류 발행시 참조 'IDX10653: The encryption algorithm 'HS256' ...
  • ."try it out" 클릭하면 아래 화면 표시 됨
  • token 리턴   
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJDb21wYW55IjoiY29tcGFueSIsIk5hbWUiOiJuYW1lIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjoiQWRtaW4iLCJuYmYiOjE3MjM1OTg4MzUsImV4cCI6MTcyMzY4NTIzNSwiaXNzIjoiaHR0cHM6Ly9kb25nc2lrMjAxMy50aXN0b3J5LmNvbS8iLCJhdWQiOiJodHRwczovL2RvbmdzaWsyMDEzLnRpc3RvcnkuY29tLyJ9.y5nyd_ohNgsJMxnAQZJC54Kk3c5emfIpRJ2IPgk-MQ0​

 

token 결과

 

 

 

 

 

반응형

+ Recent posts