Bagikan melalui


Gambaran umum autentikasi dan otorisasi backend

Sampel beban kerja pengembang Fabric memiliki alur autentikasi berikut di sisi backend.

Autentikasi dan otorisasi permintaan dari Fabric ke beban kerja

Struktur header otorisasi

Header otorisasi menggunakan format token tertentu:

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

Format ini mencakup dua token yang berbeda:

  • subjectToken: Token yang didelegasikan yang mewakili pengguna atas nama operasi sedang dilakukan.
  • appToken: Token khusus untuk aplikasi Fabric.

Alasan di belakang menggunakan header token ganda adalah tiga kali lipat:

  • Validasi: Beban kerja dapat memverifikasi bahwa permintaan berasal dari Fabric dengan memvalidasi appToken.

  • Konteks Pengguna: subjectToken menyediakan konteks pengguna untuk tindakan yang sedang dilakukan.

  • Komunikasi Antar-Layanan: Beban kerja dapat memperoleh token On-Behalf-Of (OBO) menggunakan subjectToken, memungkinkannya untuk memanggil layanan lain dengan token pengguna.

Autentikasi

Pemeriksaan autentikasi utama yang dilakukan untuk SubjectAndAppToken adalah:

  • Validasi dan penguraian nilai header otorisasi dilakukan dalam metode AuthenticateControlPlaneCall . Token harus dimulai dengan awalan "SubjectAndAppToken1.0" dan menyertakan dua token - subjectToken dan appToken.

  • Validasi properti token Entra: Keduanya subjectToken dan appToken divalidasi untuk properti token Microsoft Entra umum dalam metode ValidateAadTokenCommon . Properti ini termasuk tanda tangan token, masa pakai token, audiens token (audiens aplikasi beban kerja), dan versi token (1.0) dan penerbit.

  • validasi properti appToken: Seharusnya appToken tidak memiliki scp klaim tetapi harus memiliki idtyp klaim dengan aplikasi sebagai nilai. Kami juga memeriksa tid klaim tersebut di ID penyewa penerbit beban kerja.

    Contoh klaim appToken:

    {
    "aud": "api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/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"
    }
    
  • validasi properti subjectToken: Pastikan bahwa subjectToken menyertakan scp klaim dengan FabricWorkloadControl cakupan, bahwa tidak idtyp ada klaim yang ada dalam token, dan bahwa itu memiliki hal yang sama appid seperti di appToken.

    Sampel klaim subjectToken:

    {
    "aud": "api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/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"
    }
    

Lihat IAuthenticationService.

Catatan

Semua validasi dalam kode sampel kami adalah untuk token versi 1.0.

Authorization

Setelah dikonfirmasi bahwa permintaan berasal dari layanan Fabric (melalui appToken), Fabric memverifikasi bahwa pengguna memiliki izin yang diperlukan untuk melakukan tindakan, berdasarkan metadata izin Fabric.

Autentikasi dan otorisasi permintaan dari beban kerja ke Fabric

Permintaan kontrol beban kerja

API kontrol beban kerja adalah API Fabric khusus yang mendukung beban kerja dengan manajemen siklus hidup item Fabric mereka. API ini menggunakan format header otorisasi SubjectAndAppToken1.0 yang sama.

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

Panggilan yang berasal dari beban kerja, termasuk token berikut:

  • subjectToken: Token yang didelegasikan pengguna (diperoleh melalui alur OBO) yang mewakili pengguna yang atas nama operasi sedang dilakukan. Fabric memverifikasi bahwa pengguna memiliki izin yang diperlukan untuk melakukan tindakan yang diperlukan.

  • appToken: Token khusus untuk aplikasi beban kerja. Fabric memeriksa bahwa token ini berasal dari aplikasi Microsoft Entra dari beban kerja tempat item Fabric yang relevan berada dan yang ada di penyewa penerbit beban kerja.

Lihat metode di ValidatePermissionsAuthorizationHandler.

API Publik

Untuk memanggil API Fabric publik, beban kerja harus memperoleh token Microsoft Entra OBO standar dengan cakupan API yang relevan dan meneruskannya sebagai token pembawa di header otorisasi permintaan.

Lihat FabricExtensionController.

Autentikasi dan otorisasi permintaan dari beban kerja FE ke beban kerja BE

Header otorisasi

Header otorisasi dalam permintaan yang dikirim dari beban kerja FE ke beban kerja BE menggunakan token pembawa standar.

Autentikasi

Metode AuthenticateControlPlaneCall dalam beban kerja BE bertanggung jawab untuk memvalidasi token. Pemeriksaan utama yang dilakukan adalah:

  • Masa pakai token: Memastikan token berada dalam periode penggunaan yang valid.

  • Tanda tangan: Memverifikasi keaslian token.

  • Audiens: Memeriksa apakah audiens token cocok dengan beban kerja aplikasi Microsoft Entra.

  • Penerbit: Memvalidasi penerbit token.

  • Cakupan yang diizinkan: Memvalidasi cakupan yang diizinkan untuk diakses token.

Otorisasi dicapai dengan memanggil metode ValidatePermissions . Metode ini memanggil resolvePermissions API di titik akhir kontrol beban kerja Fabric untuk item Fabric yang relevan dan memverifikasi bahwa pengguna memiliki izin yang diperlukan untuk operasi.

Operasi jangka panjang - refresh Token

Otorisasi dicapai dengan memanggil metode ValidatePermissions . Metode ini memanggil resolvePermissions API di titik akhir kontrol beban kerja Fabric untuk item Fabric yang relevan dan memverifikasi bahwa pengguna memiliki izin yang diperlukan untuk operasi.

Jika beban kerja Anda menyertakan operasi yang berjalan lama, misalnya, sebagai bagian dari JobScheduler , Anda mungkin mengalami situasi di mana masa pakai Token tidak cukup. Untuk informasi selengkapnya tentang cara mengautentikasi proses jangka panjang, proses OBO yang berjalan lama.