다음을 통해 공유


인증이란?

경고

이 콘텐츠는 이전 Azure AD v1.0 엔드포인트용입니다. 새 프로젝트에 Microsoft ID 플랫폼 사용합니다.

인증 은 ID 및 액세스 제어에 사용할 보안 주체를 만들기 위한 기초를 제공하는 합법적인 자격 증명에 대해 당사자에게 이의를 제기하는 행위입니다. 더 간단한 용어로, 그것은 당신이 당신이 말하는 누구인지 증명하는 과정입니다. Authentication(인증)은 종종 AuthN으로 축약됩니다.

권한 부여 는 인증된 보안 주체에게 작업을 수행할 수 있는 권한을 부여하는 행위입니다. 액세스할 수 있는 데이터와 이 데이터로 수행할 수 있는 작업을 지정합니다. Authorization(권한 부여)는 종종 AuthZ로 축약됩니다.

개발자용 Azure Active Directory(v1.0)(Azure AD)는 OAuth 2.0 및 OpenID Connect와 같은 업계 표준 프로토콜과 빠르게 코딩을 시작하는 데 도움이 되는 다양한 플랫폼용 오픈 소스 라이브러리를 지원하여 ID를 서비스로 제공하여 애플리케이션 개발자를 위한 인증을 간소화합니다.

Azure AD 프로그래밍 모델에는 두 가지 기본 사용 사례가 있습니다.

  • OAuth 2.0 권한 부여 흐름 중 - 리소스 소유자가 클라이언트 애플리케이션에 권한 부여를 부여하여 클라이언트가 리소스 소유자의 리소스에 액세스할 수 있도록 합니다.
  • 리소스 서버에서 구현한 대로 클라이언트가 리소스에 액세스하는 동안 액세스 토큰에 있는 클레임 값을 사용하여 액세스 제어 결정을 내립니다.

Azure AD의 인증 기본 사항

ID가 필요한 가장 기본적인 시나리오를 고려합니다. 웹 브라우저의 사용자는 웹 애플리케이션에 인증해야 합니다. 다음 다이어그램은 이 시나리오를 보여줍니다.

웹 애플리케이션에 대한 로그온 개요

다이어그램에 표시된 다양한 구성 요소에 대해 알아야 할 내용은 다음과 같습니다.

  • Azure AD는 ID 공급자입니다. ID 공급자는 조직의 디렉터리에 있는 사용자 및 애플리케이션의 ID를 확인하고 해당 사용자 및 애플리케이션의 성공적인 인증 시 보안 토큰을 발급합니다.
  • Azure AD에 인증을 아웃소싱하려는 애플리케이션은 Azure AD(Azure Active Directory)에 등록되어야 합니다. Azure AD는 디렉터리에서 앱을 등록하고 고유하게 식별합니다.
  • 개발자는 오픈 소스 Azure AD 인증 라이브러리를 사용하여 프로토콜 세부 정보를 처리하여 인증을 쉽게 수행할 수 있습니다. 자세한 내용은 Microsoft ID 플랫폼 v2.0 인증 라이브러리v1.0 인증 라이브러리를 참조하세요.
  • 사용자가 인증되면 애플리케이션은 인증에 성공했는지 확인하기 위해 사용자의 보안 토큰의 유효성을 검사해야 합니다. 애플리케이션이 수행해야 하는 작업을 보여주는 다양한 언어 및 프레임워크에서 빠른 시작, 자습서 및 코드 샘플을 찾을 수 있습니다.
    • 앱을 빠르게 빌드하고 토큰 가져오기, 토큰 새로 고침, 사용자 로그인, 일부 사용자 정보 표시 등의 기능을 추가하려면 설명서의 빠른 시작 섹션을 참조하세요.
    • 액세스 토큰 가져오기 및 Microsoft Graph API 및 기타 API 호출에서 사용, OpenID Connect를 사용하는 기존 웹 브라우저 기반 앱으로 Microsoft로 로그인 구현 등과 같은 상위 인증 개발자 작업에 대한 시나리오 기반 절차를 자세히 알아보려면 설명서의 자습서 섹션을 참조하세요.
    • 코드 샘플을 다운로드하려면 GitHub로 이동합니다.
  • 인증 프로세스에 대한 요청 및 응답 흐름은 OAuth 2.0, OpenID Connect, WS-Federation 또는 SAML 2.0과 같이 사용한 인증 프로토콜에 따라 결정됩니다. 프로토콜에 대한 자세한 내용은 설명서의 개념 > 인증 프로토콜 섹션을 참조하세요.

위의 예제 시나리오에서는 다음 두 역할에 따라 앱을 분류할 수 있습니다.

  • 리소스에 안전하게 액세스해야 하는 앱
  • 리소스 자체의 역할을 하는 앱

각 흐름이 토큰 및 코드를 내보내는 방법

클라이언트를 빌드하는 방법에 따라 Azure AD에서 지원하는 인증 흐름 중 하나(또는 여러 개)를 사용할 수 있습니다. 이러한 흐름은 권한 부여 코드뿐만 아니라 다양한 토큰(id_tokens, 새로 고침 토큰, 액세스 토큰)을 생성할 수 있으며, 이를 작동하려면 다른 토큰이 필요합니다. 이 차트는 개요를 제공합니다.

흐름 필요하다 id_token (아이디 토큰) 액세스 토큰 새로 고침 토큰 권한 부여 코드
인증 코드 흐름 x x x x
암시적 흐름 x x
하이브리드 OIDC 플로우 x x
갱신 토큰 상환 새로 고침 토큰 x x x
대리 흐름 액세스 토큰 x x x
클라이언트 자격 증명 x(앱 전용)

암시적 모드를 통해 발급된 토큰은 URL(위치 response_modequery 또는 fragment)을 통해 브라우저로 다시 전달되기 때문에 길이 제한이 있습니다. 일부 브라우저는 브라우저 표시줄에 넣을 수 있는 URL 크기에 제한이 있으며 너무 길면 실패합니다. 따라서 이러한 토큰에는 groups 클레임이나 wids 클레임이 없습니다.

이제 기본 사항에 대한 개요를 확인하고, ID 앱 모델 및 API, Azure AD에서 프로비전이 작동하는 방식 및 Azure AD에서 지원하는 일반적인 시나리오에 대한 자세한 정보 링크에 대해 알아봅니다.

애플리케이션 모델

Azure AD는 다음 두 가지 주요 기능을 수행하도록 설계된 특정 모델을 따르는 애플리케이션을 나타냅니다.

  • 지원하는 인증 프로토콜에 따라 앱을 식별합니다 . 여기에는 인증 시 필요한 모든 식별자, URL, 비밀 및 관련 정보를 열거하는 작업이 포함됩니다. Azure AD는 다음과 같습니다.

    • 런타임에 인증을 지원하는 데 필요한 모든 데이터를 보유합니다.
    • 앱이 액세스해야 하는 리소스와 지정된 요청을 처리해야 하는지 여부 및 어떤 상황에서든 결정하기 위한 모든 데이터를 보유합니다.
    • 앱 개발자의 테넌트 내에서 및 다른 Azure AD 테넌트에 앱 프로비저닝을 구현하기 위한 인프라를 제공합니다.
  • 토큰 요청 시간 동안 사용자 동의를 처리하고 테넌트 전체에서 앱의 동적 프로비저닝을 용이하게 합니다 . 여기, Azure AD:

    • 사용자와 관리자가 앱을 대신하여 리소스에 액세스하는 데 대한 동의를 동적으로 부여하거나 거부할 수 있습니다.
    • 관리자는 궁극적으로 수행할 수 있는 앱과 특정 앱을 사용할 수 있는 사용자 및 디렉터리 리소스에 액세스하는 방법을 결정할 수 있습니다.

Azure AD에서 애플리케이션 개체는 애플리케이션 을 추상 엔터티로 설명합니다. 개발자는 애플리케이션을 사용합니다. 배포 시 Azure AD는 지정된 애플리케이션 개체를 청사진으로 사용하여 디렉터리 또는 테넌트 내에서 애플리케이션의 구체적인 인스턴스를 나타내는 서비스 주체를 만듭니다. 앱이 특정 대상 디렉터리에서 실제로 수행할 수 있는 작업, 사용할 수 있는 사용자, 액세스 권한이 있는 리소스 등을 정의하는 서비스 주체입니다. Azure AD는 동의를 통해 애플리케이션 개체에서 서비스 주체를 만듭니다.

다음 다이어그램은 동의에 의해 구동되는 간소화된 Azure AD 프로비저닝 흐름을 보여줍니다. 여기서 테넌트 A가 애플리케이션을 소유하고 테넌트 B가 서비스 주체를 통해 애플리케이션을 인스턴스화하는 두 개의 테넌트(A 및 B)가 있습니다.

동의를 통해 구동되는 간소화된 프로비전 흐름

이 프로비저닝 흐름에서:

  1. 테넌트 B의 사용자가 앱으로 로그인을 시도하면 권한 부여 엔드포인트가 애플리케이션에 대한 토큰을 요청합니다.
  2. 인증을 위해 사용자 자격 증명을 획득하고 확인합니다.
  3. 테넌트 B에 대한 액세스 권한을 얻기 위해 앱에 대한 동의를 제공하라는 메시지가 사용자에게 표시됩니다.
  4. Azure AD는 테넌트 A의 애플리케이션 개체를 테넌트 B에서 서비스 주체를 만들기 위한 청사진으로 사용합니다.
  5. 사용자가 요청된 토큰을 받습니다.

다른 테넌트(C, D 등)에 대해 원하는 만큼 이 프로세스를 반복할 수 있습니다. 테넌트 A는 앱(애플리케이션 개체)에 대한 청사진을 유지합니다. 앱에 동의가 부여된 다른 모든 테넌트 사용자 및 관리자는 각 테넌트에서 해당 서비스 주체 개체를 통해 애플리케이션이 수행할 수 있는 작업을 제어합니다. 자세한 내용은 Microsoft ID 플랫폼의 애플리케이션 및 서비스 주체 개체를 참조하세요.

Azure AD 보안 토큰의 클레임

Azure AD에서 발급한 보안 토큰(액세스 및 ID 토큰)에는 인증된 주체에 대한 정보 또는 클레임이 포함됩니다. 애플리케이션은 다음을 포함한 다양한 작업에 대한 클레임을 사용할 수 있습니다.

  • 토큰 유효성 검사
  • 주체의 디렉터리 테넌트 식별
  • 사용자 정보 표시
  • 주체의 권한 부여 확인

임의의 지정된 보안 토큰에 있는 클레임은 토큰 형식, 사용자 인증에 사용되는 자격 증명 유형, 애플리케이션 구성 등에 따라 다릅니다.

Azure AD에서 내보낸 각 클레임 유형에 대한 간략한 설명은 아래 표에 나와 있습니다. 자세한 내용은 Azure AD에서 발급한 액세스 토큰ID 토큰 을 참조하세요.

클레임 설명
애플리케이션 ID 토큰을 사용하는 애플리케이션을 식별합니다.
청중 토큰이 의도한 받는 사람 리소스를 식별합니다.
애플리케이션 인증 컨텍스트 클래스 참조 클라이언트가 인증된 방법(공용 클라이언트 및 기밀 클라이언트)을 나타냅니다.
인증 즉시 인증이 발생한 날짜와 시간을 기록합니다.
인증 방법 토큰의 주체가 인증된 방법(암호, 인증서 등)을 나타냅니다.
이름 (First Name) Azure AD에서 설정한 대로 사용자의 지정된 이름을 제공합니다.
그룹 사용자가 구성원인 Azure AD 그룹의 개체 ID를 포함합니다.
ID 공급자 토큰의 주체를 인증한 ID 공급자를 기록합니다.
발급된 시점 토큰 새로 고침에 자주 사용되는 토큰이 발급된 시간을 기록합니다.
발급자 토큰을 내보낸 STS와 Azure AD 테넌트를 식별합니다.
성 이름 Azure AD에서 설정한 대로 사용자의 성을 제공합니다.
이름 토큰의 주체를 식별하는, 사람이 인식할 수 있는 값을 제공합니다.
오브젝트 ID Azure AD에서 주체의 변경할 수 없는 고유 식별자를 포함합니다.
역할 사용자에게 부여된 Azure AD 애플리케이션 역할의 친숙한 이름을 포함합니다.
범위 클라이언트 애플리케이션에 부여된 사용 권한을 나타냅니다.
주제 토큰이 정보를 명시하는 주체를 나타냅니다.
임차인 ID 토큰을 발급한 디렉터리 테넌트의 변경할 수 없는 고유 식별자를 포함합니다.
토큰 수명 토큰이 유효한 시간 간격을 정의합니다.
사용자 주 이름 주체의 사용자 계정 이름을 포함합니다.
버전 토큰의 버전 번호를 포함합니다.

다음 단계