Memberi otorisasi akses ke data blob atau antrean dari aplikasi asli atau web

Keuntungan utama menggunakan Azure Active Directory (Azure AD) dengan penyimpanan Azure Blob atau penyimpanan Antrean adalah info masuk Anda tidak perlu lagi disimpan dalam kode Anda. Sebagai gantinya, Anda dapat meminta token akses OAuth 2.0 dari platform Identitas Microsoft. Azure Active Directory mengautentikasi perwakilan keamanan (pengguna, grup, atau perwakilanl layanan) yang menjalankan aplikasi. Jika autentikasi berhasil, Microsoft Azure AD mengembalikan token akses ke aplikasi, dan aplikasi kemudian dapat menggunakan token akses untuk mengotorisasi permintaan ke penyimpanan Azure Blob atau penyimpanan Antrean.

Artikel ini memperlihatkan cara mengonfigurasi aplikasi asli atau aplikasi web Anda untuk autentikasi dengan platform identitas Microsoft menggunakan aplikasi sampel yang tersedia untuk diunduh. Contoh aplikasi memanfaatkan .NET, tetapi bahasa lain menggunakan pendekatan yang sama. Untuk informasi selengkapnya tentang platform identitas Microsoft 2.0, lihat Ringkasan platform identitas Microsoft (v2.0).

Untuk gambaran umum alur kode otorisasi OAuth 2.0, lihat Mengotorisasi akses ke aplikasi web Azure Active Directory menggunakan alur pemberian kode OAuth 2.0.

Tentang aplikasi sampel

Aplikasi sampel menyediakan pengalaman ujung-ke-ujung yang menunjukkan cara mengonfigurasi aplikasi web untuk autentikasi dengan Microsoft Azure AD di lingkungan pengembangan lokal. Untuk melihat dan menjalankan aplikasi sampel, terlebih dahulu mengkloning atau mengunduhnya dari GitHub. Kemudian ikuti langkah-langkah yang diuraikan dalam artikel untuk mengonfigurasi pendaftaran aplikasi Azure AD dan memperbarui aplikasi untuk lingkungan Anda.

Menetapkan peran ke perwakilan keamanan Microsoft Azure AD

Untuk mengautentikasi perwakilan keamanan dari aplikasi Azure Storage Anda, pertama-tama konfigurasikan pengaturan kontrol akses berbasis peran Azure (Azure RBAC) untuk perwakilan keamanan tersebut. Azure Storage mendefinisikan peran bawaan yang mencakup izin untuk kontainer dan antrean. Ketika peran Azure ditetapkan ke perwakilan keamanan, perwakilan keamanan tersebut diberikan akses ke sumber daya tersebut. Untuk informasi selengkapnya, lihat Menetapkan peran Azure untuk akses ke data blob.

Mendaftarkan aplikasi Anda dengan penyewa Microsoft Azure AD

Langkah pertama dalam menggunakan Azure AD untuk mengotorisasi akses ke sumber daya penyimpanan adalah mendaftarkan aplikasi klien Anda di penyewa Azure AD dengan menggunakan portal Azure. Ketika Anda mendaftarkan aplikasi klien, Anda menyediakan informasi tentang aplikasi ke Microsoft Azure AD. Microsoft Azure AD kemudian menyediakan ID klien (juga disebut ID aplikasi) yang dapat Anda gunakan untuk mengaitkan aplikasi Anda dengan Microsoft Azure AD saat runtime. Untuk mempelajari selengkapnya tentang ID klien, lihat Aplikasi dan objek perwakilan layanan di Azure Active Directory. Untuk mendaftarkan aplikasi Azure Storage Anda, ikuti langkah-langkah yang diperlihatkan di Mulai cepat: Daftarkan aplikasi dengan platform identitas Microsoft.

Gambar berikut menunjukkan pengaturan umum untuk mendaftarkan aplikasi web. Perhatikan bahwa dalam contoh ini, URI pengalihan disetel ke http://localhost:5000/signin-oidc untuk menguji aplikasi sampel di lingkungan pengembangan. Anda dapat mengubah pengaturan ini nanti di bawah pengaturan Autentikasi untuk aplikasi terdaftar Anda di portal Microsoft Azure:

Cuplikan layar memperlihatkan cara mendaftarkan aplikasi penyimpanan Anda dengan Microsoft Azure AD

Catatan

Jika Anda mendaftarkan aplikasi Anda sebagai aplikasi asli, Anda dapat menentukan URI yang berlaku untuk URI Pengalihan. Untuk aplikasi asli, nilai ini tidak harus menjadi URL nyata. Untuk aplikasi web, URI pengalihan harus URI yang valid karena menentukan URL tempat token disediakan.

Setelah mendaftarkan aplikasi, Anda akan melihat ID Aplikasi (klien) pada bagian Pengaturan:

Cuplikan layar memperlihatkan ID klien

Untuk informasi selengkapnya tentang mendaftarkan aplikasi dengan Azure AD, lihat Mengintegrasikan aplikasi dengan Azure Active Directory.

Memberikan izin aplikasi terdaftar Anda ke Azure Storage

Selanjutnya, beri izin aplikasi Anda untuk memanggil Azure Storage API. Langkah ini memungkinkan aplikasi Anda untuk mengotorisasi permintaan ke Azure Storage dengan Microsoft Azure AD.

  1. Pada halaman izin API untuk aplikasi terdaftar Anda, pilih Tambahkan izin.

  2. Di bawah tab Microsoft API, pilih Azure Storage.

  3. Di panel Permintaan izin API, di bawah Jenis izin apa yang diperlukan aplikasi Anda? , perhatikan bahwa jenis izin yang tersedia adalah Izin yang didelegasikan. Opsi ini dipilih untuk Anda secara default.

  4. Di bawah Izin, pilih kotak centang di samping user_impersonation, lalu pilih tombol Tambahkan izin.

    Cuplikan layar memperlihatkan izin untuk API penyimpanan

  5. Selanjutnya, berikan persetujuan admin untuk izin ini dengan mengklik Berikan persetujuan admin untuk Direktori Default.

Panel izin API sekarang menunjukkan bahwa aplikasi Microsoft Azure AD terdaftar Anda memiliki akses ke Microsoft Graph dan Azure Storage API, dan persetujuan tersebut diberikan untuk direktori default. Izin diberikan ke Microsoft Graph secara otomatis saat Anda pertama kali mendaftarkan aplikasi Anda dengan Microsoft Azure AD.

Cuplikan layar memperlihatkan izin API untuk aplikasi terdaftar

Membuat rahasia klien

Aplikasi ini membutuhkan rahasia klien untuk membuktikan identitasnya saat meminta token. Untuk alasan keamanan, Microsoft membatasi pembuatan rahasia klien lebih dari 24 bulan dan sangat menyarankan Anda menetapkan proses pembuatannya ke nilai kurang dari 12 bulan. Untuk menambahkan rahasia klien, ikuti langkah-langkah ini:

  1. Arahkan ke pendaftaran aplikasi Anda di portal Microsoft Azure.

  2. Pilih pengaturan Sertifikat rahasia.

  3. Di bawah Rahasia klien, pilih Rahasia klien baru untuk membuat rahasia baru.

  4. Berikan deskripsi untuk rahasia tersebut, dan pilih interval kedaluwarsa yang diinginkan.

  5. Segera salin nilai rahasia baru ke lokasi yang aman. Nilai lengkap hanya ditampilkan kepada Anda sekali saja.

    Cuplikan layar memperlihatkan rahasia klien

Aktifkan token ID

Selanjutnya, beri tahu platform identitas untuk juga mengeluarkan token ID untuk aplikasi dengan mengaktifkan alur hibrid. Alur hibrid menggabungkan penggunaan pemberian kode otorisasi untuk mendapatkan token akses dan OpenID Connect (OIDC) untuk mendapatkan token ID.

Untuk mengaktifkan penerbitan token ID untuk aplikasi, ikuti langkah-langkah berikut:

  1. Arahkan ke pendaftaran aplikasi Anda di portal Microsoft Azure.

  2. Di bagian Kelola, pilih pengaturan Autentikasi.

  3. Di bagian Hibah implisit, pilih kotak centang untuk mengaktifkan token ID, seperti yang diperlihatkan dalam gambar berikut ini:

    Cuplikan layar memperlihatkan cara mengaktifkan pengaturan untuk alur hibah implisit

Pustaka klien untuk akuisisi token

Setelah mendaftarkan aplikasi dan memberinya izin untuk mengakses data di penyimpanan Azure Blob atau penyimpanan Antrean, Anda dapat menambahkan kode ke aplikasi untuk mengautentikasi prinsip keamanan dan memperoleh token akses OAuth 2.0. Untuk mengautentikasi dan memperoleh token akses, Anda dapat menggunakan salah satu pustaka autentikasi sumber terbuka Microsoft atau pustaka lain yang mendukung OAuth 2.0 dan OpenID Connect 1.0. Aplikasi Anda kemudian dapat menggunakan token akses untuk mengotorisasi permintaan terhadap Azure Event Hubs.

Untuk daftar skenario yang mendukung perolehan token, lihat bagian alur autentikasi dari Microsoft Authentication Library (MSAL).

Nilai terkenal untuk autentikasi dengan Microsoft Azure AD

Untuk mengautentikasi perwakilan keamanan dengan Microsoft Azure AD, Anda perlu menyertakan beberapa nilai terkenal dalam kode Anda.

Otoritas Microsoft Azure AD

Untuk cloud publik Azure, otoritas Azure AD dasar adalah sebagai berikut, di mana tenant-id adalah ID penyewa Direktori Aktif Anda (atau ID direktori):

https://login.microsoftonline.com/<tenant-id>/

ID penyewa mengidentifikasi penyewa Microsoft Azure AD digunakan untuk autentikasi. Ini juga disebut sebagai ID direktori. Untuk mendapatkan ID penyewa, navigasikan ke halaman Gambaran Umum untuk pendaftaran aplikasi Anda di portal Azure dan salin nilai dari sana.

ID Sumber daya Azure Storage

ID sumber daya Azure AD menunjukkan audiens ketika token yang dikeluarkan dapat digunakan untuk menyediakan akses ke sumber daya Azure. Semisalnya Azure Storage, ID sumber daya mungkin spesifik untuk satu akun penyimpanan, atau mungkin berlaku untuk akun penyimpanan apa pun. Tabel berikut ini menjelaskan nilai yang dapat Anda berikan untuk ID sumber daya:

ID sumber daya Deskripsi
https://<account>.blob.core.windows.net

https://<account>.queue.core.windows.net
Titik akhir layanan untuk akun penyimpanan tertentu. Gunakan nilai ini untuk memperoleh token untuk mengotorisasi permintaan ke akun dan layanan Azure Storage tertentu saja. Ganti nilai dalam tanda kurung siku dengan nama akun penyimpanan Anda.
https://storage.azure.com/ Gunakan untuk memperoleh token untuk mengotorisasi permintaan ke akun Azure Storage mana pun.

Contoh kode .NET: Membuat blob blok

Contoh kode memperlihatkan cara mendapatkan token akses dari Microsoft Azure AD. Token akses digunakan untuk mengautentikasi pengguna yang ditentukan dan kemudian mengotorisasi permintaan untuk membuat blob blok. Untuk membuat sampel ini berfungsi, pertama-tama ikuti langkah-langkah yang diuraikan di bagian sebelumnya.

Untuk meminta token akses, Anda memerlukan nilai berikut dari pendaftaran aplikasi Anda:

  • Nama domain Microsoft Azure AD Anda. Ambil nilai ini dari halaman Gambaran Umum Azure Active Directory Anda.
  • ID penyewa (atau direktori). Ambil nilai ini dari halaman Gambaran Umum pendaftaran aplikasi Anda.
  • ID klien (atau aplikasi). Ambil nilai ini dari halaman Gambaran Umum pendaftaran aplikasi Anda.
  • URI pengalihan klien. Ambil nilai ini dari pengaturan Autentikasi untuk pendaftaran aplikasi Anda.
  • Nilai rahasia klien. Ambil nilai ini dari lokasi tempat Anda menyalin sebelumnya.

Membuat kontainer dan akun Azure Storage

Untuk menjalankan sampel kode, buat akun penyimpanan dalam langganan yang sama dengan Azure Active Directory Anda. Kemudian buat kontainer di dalam akun penyimpanan tersebut. Kode sampel akan membuat blob blok dalam kontainer ini.

Selanjutnya, secara eksplisit menetapkan peranKontributor Data Blob Penyimpanan ke akun pengguna tempat Anda akan menjalankan kode sampel. Untuk mempelajari cara menetapkan peran ini di portal Microsoft Azure, lihat Menetapkan peran Azure untuk akses ke data blob.

Catatan

Saat membuat akun Azure Storage, Anda tidak secara otomatis diberi izin untuk mengakses data melalui Azure AD. Anda harus secara eksplisit menetapkan peran Azure untuk Azure Storage ke diri Anda sendiri. Anda dapat menetapkannya di tingkat langganan, grup sumber daya, akun penyimpanan, atau kontainer ataupun antrean.

Sebelum menetapkan peran untuk akses data ke diri Anda sendiri, Anda akan dapat mengakses data di akun penyimpanan melalui portal Microsoft Azure karena portal Microsoft Azure juga dapat menggunakan kunci akun untuk akses data. Untuk informasi selengkapnya, lihat Memilih cara memberi otorisasi akses ke data blob di portal Microsoft Azure.

Membuat aplikasi web yang mengotorisasi akses ke penyimpanan Blob dengan Microsoft Azure AD

Saat aplikasi Anda mengakses Azure Storage, aplikasi tersebut melakukannya atas nama pengguna, yang berarti bahwa sumber daya blob atau antrean diakses menggunakan izin pengguna yang masuk. Untuk mencoba contoh kode ini, Anda memerlukan aplikasi web yang meminta pengguna untuk masuk menggunakan identitas Microsoft Azure AD. Anda dapat membuat sendiri atau menggunakan aplikasi sampel yang disediakan oleh Microsoft.

Contoh aplikasi web lengkap yang memperoleh token akses dan menggunakannya untuk membuat blob di Azure Storage tersedia di GitHub. Meninjau dan menjalankan sampel yang telah selesai mungkin berguna untuk memahami contoh kode berikut. Untuk instruksi tentang cara menjalankan sampel yang sudah selesai, lihat bagian berjudul Tampilkan dan jalankan sampel yang sudah selesai.

Menambahkan referensi perakitan dan menggunakan direktif

Di Visual Studio, instal pustaka klien Azure Storage dan pustaka autentikasi. Dari menu Alat, pilih NuGet Package Manager, lalu Package Manager Console. Ketik perintah berikut ke jendela konsol untuk menginstal paket yang diperlukan untuk pustaka klien Azure Storage untuk .NET dan pustaka autentikasi Microsoft.Identity.Web:

Install-Package Azure.Storage.Blobs
Install-Package Microsoft.Identity.Web -Version 0.4.0-preview

Selanjutnya, tambahkan yang berikut ini menggunakan direktif ke file HomeController.cs :

using Microsoft.Identity.Web; //MSAL library for getting the access token
using Azure.Storage.Blobs;

Membuat blob blok

Tambahkan cuplikan kode berikut untuk membuat blok blob. Ingatlah untuk mengganti nilai di kurung siku dengan nilai Anda sendiri:

private static async Task<string> CreateBlob(TokenAcquisitionTokenCredential tokenCredential)
{
    Uri blobUri = new Uri("https://<storage-account>.blob.core.windows.net/<container>/Blob1.txt");
    BlobClient blobClient = new BlobClient(blobUri, tokenCredential);

    string blobContents = "Blob created by Azure AD authenticated user.";
    byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);

    using (MemoryStream stream = new MemoryStream(byteArray))
    {
        await blobClient.UploadAsync(stream);
    }
    return "Blob successfully created";
}

Catatan

Untuk mengotorisasi operasi blob dan antrean dengan token akses OAuth 2.0, Anda harus menggunakan HTTPS.

Dalam contoh di atas, pustaka klien .NET menangani otorisasi permintaan untuk membuat blok blob. Pustaka klien Azure Storage untuk bahasa lain juga menangani otorisasi permintaan untuk Anda. Namun, jika Anda memanggil operasi Azure Storage dengan token akses OAuth menggunakan REST API, maka Anda harus membuat header Otorisasi dengan menggunakan token OAuth.

Untuk memanggil operasi layanan Blob dan Antrean menggunakan token akses OAuth, berikan token akses di header Otorisasi menggunakan skema Bearer, dan tentukan versi layanan 2017-11-09 atau yang lebih tinggi, seperti yang ditunjukkan dalam contoh berikut:

GET /container/file.txt HTTP/1.1
Host: mystorageaccount.blob.core.windows.net
x-ms-version: 2017-11-09
Authorization: Bearer eyJ0eXAiOnJKV1...Xd6j

Mendapatkan token akses dari Microsoft Azure AD

Selanjutnya, tambahkan metode yang meminta token dari Microsoft Azure AD atas nama pengguna. Metode ini menentukan cakupan izin mana yang akan diberikan. Untuk informasi selengkapnya tentang izin dan cakupan, lihat Izin dan persetujuan di titik akhir platform identitas Microsoft.

Gunakan ID sumber daya untuk membangun cakupan untuk memperoleh token. Contohnya membangun cakupan dengan menggunakan ID sumber daya bersama dengan user_impersonation cakupan bawaan, yang menunjukkan bahwa token diminta atas nama pengguna.

Perlu diingat bahwa Anda mungkin perlu menyajikan antarmuka kepada pengguna yang memungkinkan pengguna untuk menyetujui token atas nama mereka:

[AuthorizeForScopes(Scopes = new string[] { "https://storage.azure.com/user_impersonation" })]
public async Task<IActionResult> Blob()
{
    string message = await CreateBlob(new TokenAcquisitionTokenCredential(_tokenAcquisition));
    ViewData["Message"] = message;
    return View();
}

Persetujuan adalah proses pengguna memberikan otorisasi kepada aplikasi untuk mengakses sumber daya yang dilindungi atas nama mereka. platform identitas Microsoft mendukung persetujuan inkremental, yang berarti bahwa aplikasi dapat meminta sekumpulan izin minimum pada awalnya dan meminta lebih banyak izin dari waktu ke waktu sesuai kebutuhan. Saat kode Anda meminta token akses, tentukan cakupan izin yang dibutuhkan aplikasi Anda. Untuk informasi selengkapnya tentang persetujuan tambahan, lihat Persetujuan bertambah bertahap dan dinamis.

Menampilkan dan menjalankan sampel yang sudah selesai

Untuk menjalankan aplikasi sampel, pertama-tama kloning atau unduh dari GitHub. Kemudian perbarui aplikasi seperti yang dijelaskan di bagian berikut.

Menyediakan nilai dalam file pengaturan

Perbarui appsettings.jsfile dengan nilai Anda sendiri, sebagai berikut:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "<azure-ad-domain-name>.onmicrosoft.com",
    "TenantId": "<tenant-id>",
    "ClientId": "<client-id>",
    "ClientSecret": "<client-secret>",
    "ClientCertificates": [
    ],
    "CallbackPath": "/signin-oidc"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}

Memperbarui akun penyimpanan dan nama kontainer

Dalam file HomeController.cs, perbarui URI yang mereferensikan blok blob untuk menggunakan nama akun penyimpanan dan kontainer Anda, mengganti nilai dalam kurung sudut dengan nilai Anda sendiri:

https://<storage-account>.blob.core.windows.net/<container>/Blob1.txt

Langkah berikutnya