다음을 통해 공유


벡 엔드 인증 및 권한 부여 개요

Fabric 개발자 워크로드 샘플에는 백 엔드 쪽에 다음과 같은 인증 흐름이 있습니다.

Fabric에서 워크로드로의 요청 인증 및 권한 부여

권한 부여 헤더 구조

권한 부여 헤더는 특정 토큰 형식을 사용합니다.

SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"

이 형식에는 다음과 같은 두 가지 고유 토큰이 포함됩니다.

  • subjectToken: 작업을 대신하는 사용자를 나타내는 위임된 토큰입니다.
  • appToken: 패브릭 애플리케이션과 관련된 토큰입니다.

이중 토큰 헤더를 사용하는 이유는 세 가지입니다:

  • 유효성 검사: 워크로드는 appToken의 유효성을 검사하여 요청이 Fabric에서 시작되었는지 확인할 수 있습니다.

  • 사용자 컨텍스트: subjectToken에서는 수행 중인 작업에 대한 사용자 컨텍스트를 제공합니다.

  • 서비스 간 통신: 워크로드는 subjectToken을 사용하여 OBO(On-Behalf-Of) 토큰을 획득할 수 있으며, 이를 통해 사용자 토큰으로 다른 서비스를 호출할 수 있도록 합니다.

인증

SubjectAndAppToken에 대해 수행되는 기본 인증 검사는 다음과 같습니다.

  • 인증 헤더 값의 유효성 검사 및 구문 분석은 AuthenticateControlPlaneCall 메서드에서 수행됩니다. 토큰은 "SubjectAndAppToken1.0" 접두사로 시작하고 두 개의 토큰(subjectTokenappToken)을 포함해야 합니다.

  • Entra 토큰 속성 유효성 검사: subjectTokenappToken 모두 ValidateAadTokenCommon 메서드에서 공통 AAD 토큰 속성의 유효성을 검사합니다. 이러한 속성에는 토큰 서명, 토큰 수명, 토큰 대상 그룹(워크로드 앱 대상 그룹), 토큰 버전(1.0) 및 발급자가 포함됩니다.

  • appToken 속성 유효성 검사: appTokenscp 청구를 포함할 수 없지만, idtyp 청구에서 값이 app이어야 합니다. 워크로드 게시자 테넌트 ID에서 tid 청구도 검사합니다.

    샘플 appToken 청구:

    {
    "aud": "api://localdevinstance/00001111-aaaa-2222-bbbb-3333cccc4444/Fabric.WorkloadSample/123",
    "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "iat": 1700047232,
    "nbf": 1700047232,
    "exp": 1700133932,
    "aio": "E2VgYLjBuv2l+c6cmm/iP/bnL2v+AQA=",
    "appid": "11112222-bbbb-3333-cccc-4444dddd5555"
    "appidacr": "2",
    "idp": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "idtyp": "app",
    "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "rh": "0.ACgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZAAA.",
    "sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
    "uti": "5bgMXs3uMUSAHCruRjACAA",
    "ver": "1.0"
    }
    
  • subjectToken 속성 유효성 검사: subjectToken에 FabricWorkloadControl 범위의 scp 청구가 있고, 토큰에 idtyp 청구가 없으며, appToken에서와 같이 동일한 appid가 있는지 확인합니다.

    샘플 subjectToken 청구:

    {
    "aud": "api://localdevinstance/00001111-aaaa-2222-bbbb-3333cccc4444/Fabric.WorkloadSample/123",
    "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "iat": 1700050446,
    "nbf": 1700050446,
    "exp": 1700054558,
    "acr": "1",
    "aio": "ATQAy/8VAAAAUgWRMRnBo4VGHvrKRykUXOXBNKS1cHnBxLrYkZJJGSjAVyJGBecbLdSud1GUakER",
    "amr": [
        "pwd"
    ],
    "appid": "11112222-bbbb-3333-cccc-4444dddd5555"
    "appidacr": "2",
    "ipaddr": "46.117.19.50",
    "name": "john doe",
    "oid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
    "rh": "0.ASgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZANQ.",
    "scp": "FabricWorkloadControl",
    "sub": "X0Wl85UA-uOmdkQz5MoT-hEgYZXDq9FYdS8g2bFUaZA",
    "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
    "unique_name": "user1@constso.com",
    "upn": "user1@constso.com",
    "uti": "_llZwmJoSUiHv-kw6tfDAA",
    "ver": "1.0"
    }
    

IAuthenticationService를 참조하세요.

참고 항목

샘플 코드의 모든 유효성 검사는 버전 1.0 토큰과 관련이 있습니다.

Authorization

패브릭 서비스를 통해 appToken요청이 시작된 것으로 확인되면 Fabric은 사용자가 Fabric의 권한 메타데이터에 따라 작업을 수행하는 데 필요한 권한이 있음을 확인했습니다.

워크로드에서 Fabric으로의 요청 인증 및 권한 부여

워크로드 제어 요청

워크로드 제어 API는 Fabric 항목 수명 주기 관리를 통해 워크로드를 지원하는 특수 Fabric API입니다. 이러한 API는 동일한 SubjectAndAppToken1.0 권한 부여 헤더 형식을 사용합니다.

SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"

워크로드에서 들어오는 호출에는 다음 토큰이 포함됩니다.

  • subjectToken: 작업을 수행하는 사용자를 나타내는 사용자 위임 토큰(OBO 흐름을 통해 획득)입니다. Fabric은 사용자에게 필요한 작업을 수행하는 데 필요한 권한이 있음을 확인합니다.

  • appToken: 워크로드 애플리케이션과 관련된 토큰입니다. Fabric은 관련 패브릭 항목이 속해 있고 워크로드 게시자의 테넌트에 있는 워크로드의 Microsoft Entra 앱에서 이 토큰이 있는지 확인합니다.

AuthorizationHandler에서 ValidatePermissions 메서드를 참조하세요.

퍼블릭 API

공용 패브릭 API를 호출하려면 워크로드가 관련 API 범위가 있는 표준 Microsoft Entra OBO 토큰을 획득하고 요청의 권한 부여 헤더에 전달자 토큰으로 전달해야 합니다.

FabricExtensionController를 참조하세요.

워크로드 FE에서 워크로드 BE로의 요청 인증 및 권한 부여

권한 부여 헤더

워크로드 FE에서 워크로드 BE로 전송된 요청의 권한 부여 헤더는 표준 전달자 토큰을 사용합니다.

인증

워크로드 BE의 AuthenticateControlPlaneCall 메서드는 토큰의 유효성을 검사합니다. 수행되는 기본 검사는 다음과 같습니다.

  • 토큰 수명: 토큰이 유효한 사용 기간에 있는지 확인합니다.

  • 서명: 토큰의 신뢰성을 확인합니다.

  • 대상 그룹: 토큰의 대상이 워크로드 Microsoft Entra 앱과 일치하는지 확인합니다.

  • 발급자: 토큰 발급자의 유효성을 검사합니다.

  • 허용되는 범위: 토큰이 액세스할 수 있는 범위의 유효성을 검사합니다.

권한 부여는 ValidatePermissions 메서드를 호출하여 수행합니다. 이 메서드는 관련 Fabric 항목에 대한 Fabric 워크로드 제어 엔드포인트에서 resolvePermissions API를 호출하고 사용자에게 작업에 필요한 권한이 있음을 확인합니다.

장기 실행 작업 - 토큰 새로 고침

권한 부여는 ValidatePermissions 메서드를 호출하여 수행합니다. 이 메서드는 관련 Fabric 항목에 대한 Fabric 워크로드 제어 엔드포인트에서 resolvePermissions API를 호출하고 사용자에게 작업에 필요한 권한이 있음을 확인합니다.

워크로드에 장기 실행 작업이 포함된 경우(예: JobScheduler일부로) 토큰 수명이 충분하지 않은 상황이 발생할 수 있습니다. 장기 실행 프로세스, 장기 실행 OBO 프로세스를 인증하는 방법에 대한 자세한 내용을 보려면