티스토리 뷰

반응형

ASP.NET Core에는 User, Role 관리, 사용자 인증에 관한 다양한 옵션을 제공합니다. 대표적으로 몇 가지를 구분하면 아래와 같습니다.

  • AddIdentity<TUser, TRole>() : MVC/RazorPage 방식의 전통적인 User, Role 관리를 지원하는 확장 메서드입니다. 기본적으로 쿠키인증을 사용하며, 인증에 관한 MVC 코드를 세세하게 직접 통제 할 수도 있습니다. REST API 지원을 추가하려면 AddBearerToken() 등을 추가하여 Cookie 인증, BearerToken 인증을 같이 구현하는 것이 좋습니다.
  • AddApiEndpoints() : AddIdentity()는 전통적인 MVC, RazorPage를 위한 쿠키인증 방식으로 User, Role을 관리합니다. 모바일/윈도우 어플리케이션에서는 쿠키 인증 대신 JWT나 BearerToken을 이용한 인증을 주로 사용합니다. 이를 위한 REST API 구현(Bearer Token)을 DI 컨테이너에 추가해줍니다. AddApiEndpoints() 와 함께 MapIdentityApi<TUser>()가 함께 사용됩니다. Role은 내장된 IdentityRole을 사용하기 때문에 Custom Role 정보를 관리하는 것이 불가능합니다. MapIdentyApi<TUser()는 기본적인 API 라우팅 주소를 등록해줍니다.

    AddIdentity와 궁합이 좋을 것 같지만, 실제로는 충돌이 발생할 수 있으니 주의가 필요합니다. AddIdentity는 인증에 관해 직접 개발자가 세세하게 수정할 수 있지만, AddApiEndpoints()는 ASP.NET Core의 기본적인 인증을 상정하여 API를 등록을 진행하기 때문입니다. 예를들어 AddIdentity에서 Custom Role을 사용하더라도, AddApiEndpoints()는 내장된 IdentityRole을 사용하기 때문에 충돌이 발생하게 됩니다. AddIdentity를 쓴다면 AddApiEndpoints 대신 AddBearerToken을 통해 API를 직접 구현하는 것이 좋습니다.
  • AddIdentityApiEndpoints<TUser>() : AddIdentity(사용자 관리정책), AddCookie(쿠키인증정책), AddBearerToken(API 인증정책)은 개발자가 인증을 직접 수정하고 관리할 수 있지만, 작성해야하는 코드가 늘어납니다. 인증에 관해 세세하게 관여하지 않고 내장된 사용자 관리, 내장된 인증방식, API 인증을 그대로 사용하려면 AddIdentityApiEndpoints<TUser>()가 모든 것을 해결해 줍니다. 개발 시간이 짧아지고 코드가 매우 간결해진다는 장점이 있지만 URL, 데이터 구조, 인증 구조, 로깅 등 세세한 설정으로 들어갈 수록 제약이 발생합니다.
댓글