반응형
C# api Token 생성 .NET에서 JWT 토큰 사용 01
1.Token 컨트롤러 추가
- LoginController 클래스 추가
2.token api 기본구조/글래스
- ControllerBase 상속
- [ApiController] 속성 api 컽트롤러 지정
- [Route("[controller]")] 속성 라우터 지정 , [Route("user/[controller]")] " user " URL경로
- [HttpPost] 속성 http 방법 종류
- Results는 리턴 할때 http 상태 설정 할수 있음 , 정상 200 , 기타 404,401 등등
- 실행하면 자동으로 Swagger 표시 됩니다. 그리고 POST /login api 표시
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
반응형