닷넷 코어를 쓰고 나서부터........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를 서버를 통해 인증을 관리하도록 하겠습니다. 연관글 영역 연관글 영역 API결과 처리를 쉽게 하기 위해 'API 공통 처리'용 모델을 사용합니다. 이 모델에 대한 자세한 내용은 아래 링크를 참고해 주세요. 참고 : [ASP.NET Core] .NET Core로 구현한 SPA(Sigle Page Applications)(3) - API 결과 공통 처리 1. 백엔드(back-end)에서 인증 백엔드(back-end)에서 인증하는 방..
사용에 집중한 포스팅입니다. 프론트 엔드(Front-End) 입장에서 토큰을 어떻게 발급받고 사용하는지 구현해 봅시다. 연관글 영역 연관글 영역 예제는 자바스크립트에 제이쿼리(jquery)를 사용합니다. 아래와 같이 전역 변수를 선언해줍니다. 1 2 3 4 5 6 7 8 9 var sUrl = "https://localhost:44305"; var sApi = "/api/values"; var access_token = ""; var refresh_token = ""; var client_id = "resourceownerclient"; var client_secret = "dataEventRecordsSecret"; var scope = "dataEventRecords offline_access"; c..
이 시리즈의 종합편??? 이라고 하기에는 좀 그렇고 합본 정도입니다. 지금까지 샘플은 인증서버와 API 서버가 따로 있는 것을 가정하여 만들어져 있었습니다. 이것은 인증서버를 하나만 두고 여러 API서버를 연동해서 사용할 수 있기 때문입니다. 하지만! 인증서버 하나에 API서버가 하나라면 굳이 따로 만들 필요가 없죠. 이번에는 인증서버와 API서버를 합치도록 하겠습니다. 연관글 영역 연관글 영역 이전 포스팅에서 여러 번 다뤘던 내용이므로 이번 포스팅은 대부분 링크로 대체합니다. 1. 프로젝트 세팅 새 프로젝트를 만듭니다. 프로젝트는 생성 옵션은 닷넷 코어 2.2 웹 응용프로그램 빈 프로젝트 입니다. 1-1. 'IdentityServer4' 설치 누겟에서 'IdentityServer4'를 찾아 설치합니다...
전편에서 한번 언급하긴 했었는데.... 'GrantTypes'를 'ClientCredentials'로 하면 리플레시 토큰(Refresh Token) 없이 액세스 토큰(Access Token)만 전달됩니다. 이 인증방식은 유저에게 추가 정보를 요청하지 않기 때문에 액세스키가 만료되면 다시 인증요청을 하면 되기 때문입니다. 이런 방식은 B2B(Business-to-Business)에서는 문제가 없는데...... 우리에게 필요한건 B2C(Business to Consumer)죠 ㅎㅎ 연관글 영역 연관글 영역 이번 포스팅에서는 유저 정보를 전달하고 리플레시 토큰을 받아 액세스 토큰을 갱신하는 일반적인 인증방식을 사용할 예정입니다. 'damienbod'님의 블로그를 참고하여 만들었습니다. 참고 : damienbo..
전 글에서 'IdentityServer'를 이용하여 인증 서버를 만들었습니다. 이 글에서는 인증 서버에서 받은 엑세스키를 이용하여 WebAPI에 접근해 보겠습니다. 연관글 영역 연관글 영역 코드 프로젝트의 글을 .Net Core 2.2로 포팅한 포스팅입니다. 전 포스팅과 다르게.....이글은 버전이 올라가면서 바뀐 내용이 많아서 사실상 딴 코드가 되었다는게 함정이죠 ㅎㅎㅎㅎ (참고 : code project - Livio Francescucci님의 글 ASP.NET Core WebAPI secured using OAuth2 Client Credentials ) 1. 프로젝트 세팅 새 프로젝트를 만듭니다. 프로젝트는 생성 옵션은 닷넷 코어 2.2 웹 응용프로그램 빈 프로젝트 입니다. 1-1. html 세팅..
OAuth2 관련 내용은 잘 정리되 있는 내용이 많으니 전 링크로 대신하겠습니다. 참고 : Naver Hello world - OAuth와 춤을 OAuth2의 ASP.NET자료가 많지 않아서 제가 정리해봅니다. 사실은...... 코드 프로젝트의 글을 .Net Core 2.2로 포팅만 한 겁니다. (참고 : code project - Livio Francescucci님의 글 Simple OAuth2 Authorization Server with Identity Server and .NET Core ) 연관글 영역 연관글 영역 1. 프로젝트 세팅 프로젝트는 생성 옵션은 닷넷 코어 2.2 웹 응용프로그램 빈 프로젝트 입니다. 1-1. html 세팅 빈 프로젝트는 아무것도 없기 때문에 html을 읽을 수 있도록..
빈 프로젝트로 세팅하는 이유 중에 하나가 'ASP.NET MVC'의 잡다한 코드가 설치되지 않게 하기 위해 서 입니다. 하지만 이제는 'WebAPI' 템플릿이 있어서 그냥 이거 써도 됩니다. 그래도 템플릿 없이 어떻게 구성해야 하는지 알아두면 좋겠죠? [ASP.NET Core] 빈 프로젝트 세팅 (1) - 'index.html'을 시작페이지로 설정하기[ASP.NET Core] 빈 프로젝트 세팅 (2) - WebAPI 설정 [ASP.NET Core] .NET Core로 구현한 SPA(Single Page Applications)(1) - 기초[ASP.NET Core] .NET Core로 구현한 SPA(Single Page Applications)(2) - Ajax공통 기능, 데이터 바인드 처리[ASP.NE..
정상적으로 잘 배포되던 프로젝트인데 어느 날 갑자기 배포하고 나면 502.5에러가 납니다. 로컬은 여전히 잘됩니다. HTTP Error 502.5 - Process Failure 1. 자세한 오류 내용 확인 502 오류는 원래 서버가 잘못된 응답을 받았다는 의미입니다. 하지만 502가 나는 원인은 다양합니다. 해결방법도 엄청 많습니다. 문제는 원인을 모르면 결국 될 때까지 해봐야 한다는 것입니다. 그래서 서버의 이벤트 뷰어(event viewer)를 확인해 봤습니다. 이벤트 뷰어의 내용에서 중요한 건 "failed to start process with commandline 'dotnet" 이것뿐입니다. 'dotnet' 프로세스를 시작하는 것이 실패했다고 합니다. 왜? 도대체 왜? 이 에러는 보통 권한이..