ID 관리 솔루션 선택

대부분의 웹앱은 사용자가 자신이 주장하는 사람이 되도록 인증을 지원합니다. 사용자는 개인 또는 다른 앱일 수 있습니다. 액세스를 관리하면 사용자가 보고 수정할 권한이 있는 정보만 보고 수정할 수 있습니다. 예를 들어 최종 사용자는 웹 사이트의 관리 섹션에 액세스할 수 없어야 합니다. Identity 관리 솔루션은 인증 및 권한 부여 관련 작업의 요구 사항을 처리하도록 빌드됩니다. ID 관리에 대한 자세한 내용은 ID 및 액세스 관리란?을 참조하세요. .NET 웹앱에 대한 많은 ID 관리 솔루션을 사용할 수 있으며 각각 사용하거나 설치해야 하는 다양한 기능과 요구 사항이 있습니다. 이 문서에서는 올바른 솔루션을 선택하는 방법에 대한 지침을 제공합니다.

ASP.NET Core를 사용하여 기본 ID 관리 Identity

ASP.NET Core는 기본 제공 인증 공급자 인 ASP.NET Core Identity와 함께 제공됩니다. 공급자에는 사용자 ID 관리, 사용자 자격 증명 저장, 권한 부여 또는 취소를 지원하는 API, UI 및 백 엔드 데이터베이스 구성이 포함됩니다. 지원하는 다른 기능은 다음과 같습니다.

대부분의 시나리오에서 필요한 유일한 공급자일 수 있습니다.

자세히 알아보려면 다음을 수행합니다.

다른 시나리오에서는 인증 및 ID를 관리하는 서버 또는 서비스가 도움이 될 수 있습니다.

OIDC 서버가 필요한지 확인

웹앱은 기본적으로 상태 비 상태이므로 이전 작업을 기억하는 방법이 필요합니다. 그렇지 않으면 사용자는 새 페이지로 이동할 때마다 자격 증명을 입력해야 합니다. 상태를 기억하기 위한 일반적인 솔루션은 데이터를 저장하기 위한 브라우저 기반 메커니즘인 s입니다cookie. 웹 서버는 이니셜 cookie을 보낸 다음 브라우저에서 저장하고 각 요청과 함께 다시 보냅니다. 개발자가 코드를 작성할 필요 없이 자동으로 수행됩니다. Cookies는 사용하기 쉽고 브라우저에 기본 제공되지만 단일 웹 사이트 또는 웹 작업 내에서 사용하도록 설계되었습니다기본. ASP.NET Core에 기본 제공되는 기본 솔루션은 -based authentication을 사용합니다 cookie.

토큰은 HTTP 요청의 헤더 또는 본문을 통해 명시적으로 전달되는 메타데이터가 있는 컨테이너입니다. s에 비해 cookie토큰의 기본 이점은 특정 앱에 연결되지 않거나 기본 있다는 것입니다. 대신 토큰은 일반적으로 비대칭 암호화로 서명 됩니다. 예를 들어 OIDC 서버는 서명을 포함하는 JWT(ON Web Token) 형식을 사용하여 JSID에 대한 정보가 포함된 토큰을 발급합니다. 비대칭 암호화는 서명자에게만 알려진 프라이빗 키와 모든 사람이 알 수 있는 공개 키의 조합을 사용합니다. 토큰을 암호화할 수도 있습니다.

프라이빗 키로 인해 서명된 토큰을 변조할 수 없습니다. 공개 키:

  • 토큰의 유효성을 검사하여 토큰이 변경되지 않았는지 확인할 수 있습니다.
  • 프라이빗 키를 보유하는 엔터티에서 생성되었음을 보장합니다.

토큰을 사용하는 기본 단점은 토큰을 발급하고 토큰에 대한 유효성 검사를 제공하는 서비스(일반적으로 OIDC 서버)가 필요하다는 것입니다. 서비스를 설치, 구성 및 기본.

OIDC 서버가 필요한 일반적인 이유는 다른 앱에서 사용하는 웹 기반 API를 노출하는 애플리케이션에 대한 것입니다. 노출된 웹 기반 API의 경우 SPA(단일 페이지 애플리케이션), 모바일 클라이언트 및 데스크톱 클라이언트와 같은 클라이언트 UI는 동일한 앱의 일부로 간주됩니다. SPA 예제에는 Angular, React 및 Blazor WebAssembly. 웹앱 또는 클라이언트 UI 이외의 앱이 앱에 대한 보안 API 호출을 수행해야 하는 경우 토큰을 사용할 수 있습니다. 클라이언트 UI만 있는 경우 ASP.NET Core Identity 는 인증 중에 토큰을 획득하는 옵션을 제공합니다. ASP.NET Core Identity에서 발급한 인증 토큰:

  • 모바일 및 데스크톱 클라이언트에서 사용할 수 있습니다. Cookies는 보안 및 단순성을 위해 토큰보다 선호됩니다.
  • 타사 앱의 액세스를 관리하는 데 적합하지 않습니다.

OIDC 서버가 필요한 또 다른 이유는 다른 앱과 로그인을 공유하기 위한 것입니다. 일반적으로 Single Sign-On이라고 하는 이 기능을 사용하면 사용자가 다음을 수행할 수 있습니다.

  • 웹앱의 양식으로 한 번 로그인합니다.
  • 결과 자격 증명을 사용하여 다시 로그인하거나 다른 암호를 선택하지 않고도 다른 앱으로 인증할 수 있습니다.

OIDC 서버는 일반적으로 Single Sign-On을 위한 안전하고 확장 가능한 솔루션을 제공하는 것이 좋습니다.

다른 앱과 로그인을 공유하지 않는 앱의 경우 앱을 빠르게 보호하는 가장 간단한 방법은 기본 제공 ASP.NET Core Identity 공급자를 사용하는 것입니다. 그렇지 않으면 타사 ID 관리 솔루션에서 제공하는 OIDC 서버가 필요합니다. OIDC 서버는 다음과 같이 사용할 수 있습니다.

  • 자체 호스트라고 하는 서버에 설치하는 제품입니다.
  • 컨테이너는 Docker와 같은 호스트에서 실행됩니다.
  • ID를 관리하기 위해 통합하는 웹 기반 서비스입니다.

일부 솔루션은 무료이며 오픈 소스 반면, 다른 솔루션은 상업적으로 라이선스가 부여됩니다. 사용 가능한 옵션 목록은 ID 관리 솔루션을 참조하세요. 조직에서 이미 ID 공급자를 사용하고 있는 것일 수 있습니다. 이 경우 다른 솔루션을 사용하는 대신 기존 공급자를 사용하는 것이 합리적일 수 있습니다. 모든 주요 솔루션은 제품 또는 서비스를 사용하도록 ASP.NET Core를 구성하기 위한 설명서를 제공합니다.

연결이 끊긴 시나리오

Microsoft Entra ID와 같은 많은 솔루션은 클라우드 기반이며 인터넷 연결이 작동해야 합니다. 사용자 환경에서 인터넷 연결을 허용하지 않는 경우 서비스를 사용할 수 없습니다.

ASP.NET Core Identity 는 다음과 같은 연결이 끊긴 시나리오에서 완벽하게 작동합니다.

  • 앱이 인터넷에 액세스할 수 없습니다.
  • 인터넷 연결이 끊긴 경우에도 앱은 로컬 네트워크에서 계속 작동해야 합니다.

연결이 끊긴 시나리오에 전체 OIDC 서버가 필요한 경우 다음 옵션 중 하나를 선택합니다.

  • 사용자 고유의 머신에서 서비스를 설치하고 실행할 수 있는 솔루션입니다.
  • 인증 서비스를 컨테이너로 로컬로 실행합니다.

로그인과 같은 사용자 데이터가 저장되는 위치 결정

고려해야 할 또 다른 중요한 요소는 사용자 로그인 데이터가 저장되는 위치입니다. 많은 개발자가 ID를 관리하기 위해 Microsoft Entra ID와 같은 외부 클라우드 기반 서비스를 선택합니다. 클라우드 기반 서비스 공급자:

  • 데이터를 안전하게 저장하는 책임을 맡습니다.
  • 는 최신 보안 패치 및 릴리스를 사용하여 소프트웨어를 최신 상태로 유지합니다.
  • 개인 정보 보호 규정을 준수합니다.

다른 사용자는 규정, 규정 준수, 정책 또는 기타 이유로 인해 자체 서버에 데이터를 저장하는 것을 선호합니다.

데이터가 서버에 저장되는 경우 설치 가능 또는 컨테이너 기반 솔루션을 선택해야 할 가능성이 높습니다.

Identity vs OIDC 서버

다음 다이어그램을 사용하여 인증 및 권한 부여에 ASP.NET Core Identity 시스템 또는 OIDC 서버를 사용할지 여부를 결정할 수 있습니다.

Identity management decision flow

다음 표에서는 ID 관리 솔루션을 선택할 때 고려해야 할 몇 가지 사항을 나열합니다.

기능 자체 호스트(인프라 또는 컨테이너) Cloud
앱 통합 라이브러리 또는 프레임워크로 구현되는 로컬 솔루션은 종종 사용자 고유의 앱에 직접 통합될 수 있습니다. 컨테이너 기반 솔루션은 웹앱과 컨테이너 기반 서비스 간에 전달이 필요합니다. 클라우드 기반 솔루션은 일반적으로 로그인 흐름의 특정 지점에서 통합되고 테마에 맞게 UI를 업데이트하는 구성을 제공하지만 사용 가능한 사용자 지정 수준은 제한적입니다.
Configuration 자체 호스트 솔루션은 ID를 관리하는 방법을 설정하는 것 외에도 환경에 맞게 소프트웨어를 구성해야 합니다. 컨테이너 기반 솔루션은 일반적으로 구성을 위한 웹 기반 UI를 제공합니다. 클라우드 기반 솔루션은 일반적으로 구성을 위한 웹 기반 UI를 제공합니다.
사용자 지정 자체 호스트 솔루션은 일반적으로 코드 기반 변경 내용을 포함하여 매우 사용자 지정할 수 있습니다. 컨테이너화된 솔루션은 확장성 옵션을 제공하지만 종종 더 제한적입니다. 클라우드 기반 서비스는 사용자 지정을 허용하지만 일반적으로 구성 기반 변경으로 제한됩니다.
유지 관리 설치된 제품에는 모든 보안 패치가 적시에 적용되고 업그레이드를 관리하기 위한 전용 리소스가 필요합니다. 컨테이너에 대한 업그레이드 및 패치 프로세스는 일반적으로 마찰이 적으며 제공된 컨테이너 이미지를 설치하기만 하면 됩니다. 서비스 공급자는 필요한 패치 적용 및 업그레이드 처리를 포함하여 클라우드 기반 솔루션을 기본.
사용자 자격 증명 스토리지 사용자는 데이터 거버넌스 및 위반 처리에 대한 책임이 있습니다. 사용자 자격 증명 처리 및 규정 준수와 관련된 위험 관리 는 서비스 공급자에게 위임됩니다.

사용 가능한 옵션에 대한 자세한 내용은 ASP.NET Core에 대한 관리 솔루션을 참조 Identity 하세요.

다음 단계