이전 포스팅에서 JWT(JSON Web Token)를 발급하고 인증하기 위한 처리를 했습니다. 이 포스팅에서는 이전 포스팅에서 만든 인증 처리를 연결하는 작업을 합니다. 이 시리즈는 'ASP.NET Core 6'에서는 인증 처리를 이런 식으로 하는구나~~~ 라는 걸 알려주기 위한 목적이라 설계가 난잡합니다. 0. 구조 이 프로젝트에서는 'SQLite + Entity Framework'를 사용합니다. 이렇게 구성하면 DB를 사용하지 않을 때는 'InMemory'를 사용하여 메모리DB를 사용할 수 있어 이식성이 좋아서입니다. 누겟에서 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.T..
'OAuth2'는 인증방식을 표준화해둔 프로토콜입니다. 이것 밑에 토큰을 발급하고 인증하기 위한 시스템을 만들어 넣어야 하는데.... Json으로 토큰을 발급하고 인증하기 위한 방법의 하나가 'JWT(Json Web Tokens) 인증'입니다. 다른 프로젝트에서는 'IdentityServer4'를 이용하여 'JWT'을 발급하고 인증하는 것을 했었는데 이 포스팅에서는 직접 'JWT'를 발급하고 사용하는 방법을 다룹니다. 1부는 JWT를 발급하고 확인하는 것을 구현하고 2부에서는 이렇게 만든 JWT 사용하는 방법을 다룹니다. 0. 프로젝트 생성 및 구성 프로젝트를 'ASP.NET Core'로 생성합니다. 'ASP.NET Core'에서 인증처리를 다음과 같은 구조를 가집니다. 미들웨어를 주입하면 API요청이 ..
예전에 쓰던 SPA 프레임워크를 새로 만들면서 백엔드는 'ASP.NET Core 6', 프론트엔드 개발 중에는 'NPM'을 이용하기로 해서 'Node.js'를 사용하기로 했습니다. 그렇다면 'NPM'을 올려야 하는데.... 올리는 김에 'NPM Task Runner'를 올리기로 했습니다. 'NPM Task Runner'는 선택 사항이지만 있으면 'NPM 패키지 관리를 UI로 할 수 있습니다. *이 프로젝트는 Visual Studio 2022로 되어 있습니다.* 0. 시작 전에 필요한 것 'Node.js'는 꼭 설치해야 합니다. 운영체제에 맞게 설치하면 됩니다. (참고 : NodeJs - 다운로드 페이지 ) 'NPM Task Runner'를 설치하려면 확장 > 확장 관리 에서 'NPM Task Runner..
닷넷 코어를 쓰고 나서부터........API결과는 'camelCase'로 온다고 느끼고 있었습니다.이걸 'PascalCase'로 바꿔 봅시다. 1. 카멜케이스(camelCase)와 파스칼케이스(PascalCase)코드 표기법에는 여러 가지가 있는데 그중 많이 쓰는 것이 카멜케이스(카멜표기법)와 파스칼케이스(파스칼표기법)입니다. 파스칼케이스는 단어를 대문자로 시작하고 붙여 씁니다.예> PascalCase 카멜케이스는 파스칼케이스에 첫 대문자만 소문자로 표시합니다.예> camelCase 2. C#에서는....그런데 C#의 네이밍 규칙의 기본은 파스칼케이스입니다. 그런데 API에서 모델을 결과로 전달하면 카멜케이스로 넘어옵니다. 3. 파스칼케이스로 바꾸기필요한 부분만 바꾸는 방법과 전체를 기본 정책을 바꾸는..
가상디렉토리에 프로젝트를 만들어서 올렸더니 HTTP Error 500.0 - ANCM In-Process Handler Load Failure 1. 오류 상황이게 무조건 발생하는 것은 아니고 닷넷 코어 2.2이상을 사용 시 가상디랙토리 사용 시 특정 상황에서 발생합니다. 'InProcess'는 IIS 응용프로그램 풀에서 동작합니다.(참고 : Rick Strahl님 블로그 - ASP.NET Core In Process Hosting on IIS with ASP.NET Core )'InProcess'를 사용하고 있을때 'dotnet.exe'에서 사용하려고 하면 발생한다고 합니다. 일반적인 상황에서는 'InProcess'를 권장한다고 합니다. 2. 해결 방법간한 하게 'web.config'에서 'hosting..
이전 포스팅까지는 'OAuth2'인증을 위해 별도의 서버를 이용하였습니다.이렇게 되면 클라이언트에서 인증서버의 주소를 알기 때문에 인증서버를 공격을 할 수 있는 문제가 있습니다.그리고 인증할 때 추가적인 데이터를 보내기가 힘들다는 문제도 있죠. 그래서 이번 포스팅에서는 API를 서버를 통해 인증을 관리하도록 하겠습니다. [ASP.NET Core 2] OAuth2 인증에서 사용까지 (1) - 'IdentityServer'를 이용하여 'OAuth2' 인증 서버 구현[ASP.NET Core 2] OAuth2 인증에서 사용까지 (2) - 'IdentityServer'를 이용하여 'OAuth2' 인증 받기[ASP.NET Core 2] OAuth2 인증에서 사용까지 (3) - 'IdentityServer'의 리플레..
사용에 집중한 포스팅입니다.프론트 엔드(Front-End) 입장에서 토큰을 어떻게 발급받고 사용하는지 구현해 봅시다. [ASP.NET Core 2] OAuth2 인증에서 사용까지 (1) - 'IdentityServer'를 이용하여 'OAuth2' 인증 서버 구현[ASP.NET Core 2] OAuth2 인증에서 사용까지 (2) - 'IdentityServer'를 이용하여 'OAuth2' 인증 받기[ASP.NET Core 2] OAuth2 인증에서 사용까지 (3) - 'IdentityServer'의 리플레시 토큰(Refresh Token) 사용하기[ASP.NET Core 2] OAuth2 인증에서 사용까지 (4) - 'IdentityServer'로 만든 인증서버와 'WebAPI' 같이 사용하기[ASP.NE..
이 시리즈의 종합편??? 이라고 하기에는 좀 그렇고 합본 정도입니다. 지금까지 샘플은 인증서버와 API 서버가 따로 있는 것을 가정하여 만들어져 있었습니다. 이것은 인증서버를 하나만 두고 여러 API서버를 연동해서 사용할 수 있기 때문입니다. 하지만! 인증서버 하나에 API서버가 하나라면 굳이 따로 만들 필요가 없죠. 이번에는 인증서버와 API서버를 합치도록 하겠습니다. [ASP.NET Core 2] OAuth2 인증에서 사용까지 (1) - 'IdentityServer'를 이용하여 'OAuth2' 인증 서버 구현[ASP.NET Core 2] OAuth2 인증에서 사용까지 (2) - 'IdentityServer'를 이용하여 'OAuth2' 인증 받기[ASP.NET Core 2] OAuth2 인증에서 사용까..
전편에서 한번 언급하긴 했었는데.... 'GrantTypes'를 'ClientCredentials'로 하면 리플레시 토큰(Refresh Token) 없이 액세스 토큰(Access Token)만 전달됩니다. 이 인증방식은 유저에게 추가 정보를 요청하지 않기 때문에 액세스키가 만료되면 다시 인증요청을 하면 되기 때문입니다. 이런 방식은 B2B(Business-to-Business)에서는 문제가 없는데...... 우리에게 필요한건 B2C(Business to Consumer)죠 ㅎㅎ [ASP.NET Core 2] OAuth2 인증에서 사용까지 (1) - 'IdentityServer'를 이용하여 'OAuth2' 인증 서버 구현[ASP.NET Core 2] OAuth2 인증에서 사용까지 (2) - 'Identit..
전 글에서 'IdentityServer'를 이용하여 인증 서버를 만들었습니다.이 글에서는 인증 서버에서 받은 엑세스키를 이용하여 WebAPI에 접근해 보겠습니다. [ASP.NET Core 2] OAuth2 인증에서 사용까지 (1) - 'IdentityServer'를 이용하여 'OAuth2' 인증 서버 구현[ASP.NET Core 2] OAuth2 인증에서 사용까지 (2) - 'IdentityServer'를 이용하여 'OAuth2' 인증 받기[ASP.NET Core 2] OAuth2 인증에서 사용까지 (3) - 'IdentityServer'의 리플레시 토큰(Refresh Token) 사용하기[ASP.NET Core 2] OAuth2 인증에서 사용까지 (4) - 'IdentityServer'로 만든 인증서버..