ASPNET/ASPNET 7(18)
-
인증서버 - API Key Management
일반적으로 back end api 에 접근 하기 위한 여러가지 인증 방식이 있다 그중에서 api key 를 발급하여 client 에서 특정키를 가지고 있으면 접근 가능하도록 하는 방식을 알아보겠다. 가장많이 쓰이는 방식은 아래와 같이 특정 apikey 를 미리 정의해 두고 해당 key 를 가지고 있는 client 들은 접근 가능하도록 하는 것이다. apikey = "abcdefg112345" 일반적으로 cloud system 이나 sass(service as a service) 등에서 많이 사용된다. 이것과는 약간다른방식으로 보안을 조금 더 신경쓴 방식있다. public key 를 client 에 발급하고 특정 secret 를 encryption 해서 server 에 전달 server 에서는 privat..
2023.08.07 -
인증서버 - JWT 서명 및 payload 암호화 (JWE,JWS)
aspnet web api 의 기본적인 server 를 만들자. 아래를 참조해도 된다. https://yogingang.tistory.com/404 Rest API Template 만들기 - EP 01 (Create , Swagger, Logging) Create visual studio 2022 를 실행하고 Create a new project 를 선택한다. asp.net core web api 선택 Project name 정하기 Additional Information 설정 Create 하면 Project 가 생성된다. F5 를 누르면 실행 된다. 위와 같이 swagger yogingang.tistory.com JWT 을 이용한 인증 및 권한관리를 하는 경우 JWT 자체에 보안에 위험성이 몇가지 있다..
2023.07.31 -
Rest API Template 만들기 - EP 10 (Refactoring - Features)
이제 UnitTest 를 만들었으니 기존 코드들에서 재사용 가능한 부분들을 refactoring 해보자 또한 design 적으로 수정할 부분이 있다면 이 부분들도 refactoring 해보자 UnitTest 를 만들기 전에는 이러한 수정들이 다른 코드들에 영향을 줄 수 있으므로 수정하기 꺼려진다. Test 를 해보면 10 중 8~9 는 분명히 문제가 생길 것이고 미쳐 생각하지 못한 부분들에서 알수 없는 오류들이 나올 수 있다. UnitTest 는 이러한 문제들을 찾는데 도움이 될 것이다. ApiServerContext 와 IConfiguration 은 대부분의 Handler 에서 사용하게 될것 같으니 공통 class 에 넣자 또한 apiLogger 도 추가하자. 향후에 사용할 가능성이 많다. Featur..
2023.01.19 -
Rest API Template 만들기 - EP 09 (UnitTest)
지금 까지 인증에 대한 처리를 해보았다. OAuth 를 처리 하거나 OpenIdConnect 를 한것은 아니었다. 하지만 jwt token 을 이용하여 특정 API 를 접근하기 위해 필요한 인증처리에 대부분을 해 보았다. 이제 구현에서 약간 벗어나서 code 의 품질에 대해 신경써야 할 때이다. 그런데 code 품질을 높이려면 우선 신경써야 할 것이 있다. Refactoring 이라는 과정을 통해 단계 단계 기존 code 를 변경할 텐데 이과정에서 정상 동작하던 어떤 method 가 refactoring 이후 비정상적으로 동작할 수있다. 이러한 문제를 해결하기 위해 우리는 Unit Test 를 통해 test 를 자동화 한다. **Unit Test 이지만 flow test 또는 integration tes..
2023.01.16 -
Rest API Template 만들기 - EP 08 (DB 를 통해 AccessToken 및 RefreshToken 관리)
이제 인증관련 하여 수정을 해야할 때이다. 기존에는 JWT 를 통해 AccessToken 을 사용하여 validation 처리를 aspnet core 내부적으로 하게 하였다. 이렇게 만든 JWT 는 일반적인 validation 처리를 하기 때문에 logout 같은 처리를 하지 못하여 logout 이후에도 언제든지 token 을 그대로 사용 가능하다. 즉 JWT 에 시간경과에 의한 expire 가 아닌 메뉴얼적인 expire 를 명령 할 수 없다. 그래서 이러한 부분을 처리 하기 위해 자체적으로 validation 을 체크 하도록 tokenhandler 를 만들겠다. db 상에 accessToken 및 RefreshToken 을 저장하고 Login user 정보와 연결할 것이다. 해당 정보를 기반으로 Lo..
2023.01.12 -
Rest API Template 만들기 - EP 07 (EF Core - Migration and Update)
기존 solution 에 프로젝트를 하나 추가 하자. .NET 또는 .NET Standard 용 library 가 있을 것이다. 추가하자 Project 명은 Infrastructure 라고 지정하자. 최신 .net 을 지원하도록 framework 를 설정하자 (현재 시점 .NET 7.0) 개발자 명령 프롬프트로 이동 Ctrl + ` 또는 View --> Terminal click --> 개발자 명령 프롬프트로 이동 개발자 명령 프롬프트에서 Infrastructure 프로젝트 폴더로 이동 **이미 Infrastructure 프로젝트 폴더에 있다면 이동하지 않아도 된다. ** (현재 [솔루션명].sln 파일이 있는 폴더라면 [프로젝트명].csproj 파일이 있는 폴더로 이동) 다음 실행 SQLServer 에..
2023.01.09