Gunakan alur implisit izin OAuth 2.0 dalam portal Anda

Catatan

Mulai 12 Oktober 2022, portal Power Apps menjadi Power Pages. Informasi selengkapnya: Microsoft Power Pages kini tersedia secara umum (blog)
Kami akan segera memigrasikan dan menggabungkan dokumentasi portal Power Apps dengan dokumentasi Power Pages.

Fitur ini memungkinkan pelanggan untuk membuat panggilan sisi klien ke API eksternal dan mengamankannya dengan menggunakan alur izin implisit OAuth. Ini memberikan titik akhir untuk mendapatkan token akses aman. Token ini akan berisi informasi identitas pengguna yang akan digunakan oleh API eksternal untuk otorisasi mengikuti alur izin implisit OAuth 2.0. Informasi identitas pengguna yang masuk diteruskan dengan cara yang aman ke panggilan AJAX eksternal, yang membantu pengembang melingkupi konteks otentikasi dan juga akan membantu pengguna mengamankan API mereka.

Alur izin implisit OAuth 2.0 mendukung titik akhir token yang bisa dipanggil klien untuk mendapatkan token ID.

Sertifikat kustom

Menggunakan sertifikat default untuk alur pemberian implisit OAuth 2.0 sudah tidak digunakan lagi. Anda harus menggunakan sertifikat kustom saat menggunakan OAuth 2.0 titik akhir. Gunakan pusat admin Power Platform untuk mengunggah sertifikat kustom. Setelah mengunggah sertifikat kustom, Anda harus memperbarui pengaturan situs seperti di bawah ini:

  1. Buka pengaturan portal dan pilih pengaturan situs.

  2. Untuk membuat pengaturan baru, pilih Baru.

  3. Untuk mengedit pengaturan yang ada, pilih Pengaturan situs yang ada dan terdaftar dalam grid.

  4. Tentukan nilai:

    • Nama: CustomCertificates/ImplicitGrantflow
    • Situs web: Situs terkait yang terkait
    • Nilai: Salin thumbprint dari sertifikat kustom yang diunggah dari layar Kelola sertifikat kustom, lalu rekatkan di sini. Nilai akan menunjukkan sertifikat yang akan digunakan untuk alur pemberian implisit.
  5. Pilih Simpan & Tutup. Menu umum untuk Pengaturan Situs Baru dengan nilai yang ditentukan.

Rincian token titik akhir

Anda juga dapat mendapatkan token dengan membuat permintaan post ke titik akhir /token. URL untuk titik akhir token adalah: <portal_url>/_services/auth/token. Titik akhir token mendukung parameter berikut:

Parameter Harus diisi? Keterangan
client_id Tidak String yang diluluskan saat membuat panggilan ke otorisasi titik akhir. Anda harus memastikan bahwa ID klien terdaftar dengan portal. Jika tidak, kesalahan akan ditampilkan. ID klien ditambahkan di klaim dalam token sebagai parameter aud dan appid dan dapat digunakan oleh klien untuk memvalidasi apakah token yang dihasilkan adalah untuk aplikasi mereka.
Panjang Maksimum: 36 karakter. Hanya karakter alfanumerik dan tanda hubung yang didukung.
redirect_uri Tidak URL portal di mana respons otentikasi dapat dikirim dan diterima. Harus terdaftar untuk client_id tertentu yang digunakan dalam panggilan dan harus nilai yang persis sama seperti yang terdaftar.
state Tidak Nilai yang tercakup dalam permintaan yang juga dihasilkan sebagai respons token. Hal ini dapat berupa string konten apa pun yang akan digunakan. Biasanya, nilai unik yang dibuat secara acak digunakan untuk mencegah serangan pemalsuan permintaan antar-situs.
Panjang Maksimum: 20 karakter.
nonce Tidak Nilai string yang dikirim oleh klien yang tercakup dalam ID token yang dihasilkan sebagai klaim. Klien kemudian dapat memverifikasi nilai ini untuk mengurangi serangan replay token. Panjang Maksimum: 20 karakter.
response_type No Parameter ini hanya mendukung token sebagai nilai, yang memungkinkan aplikasi Anda segera menerima token akses dari titik akhir otorisasikan, tanpa membuat permintaan kedua ke titik akhir otorisasikan.

Catatan

Meskipun parameter client_id, redirect_uri, state, dan nonce bersifat opsional, dianjurkan untuk menggunakannya untuk memastikan bahwa integrasi Anda aman.

Respons sukses

Titik akhir token menghasilkan state dan expires_in sebagai header respons, dan token dalam badan formulir.

Kesalahan kesalahan

Kesalahan pada titik akhir token dihasilkan sebagai dokumen JSON dengan nilai berikut:

  • ID Kesalahan: Pengidentifikasi unik kesalahan.
  • Pesan kesalahan: pesan kesalahan tertentu yang dapat membantu Anda mengidentifikasi penyebab akar kesalahan otentikasi.
  • ID Korelasi: GUID yang digunakan untuk tujuan debugging. Jika Anda telah mengaktifkan log diagnosis, ID korelasi akan ada di log kesalahan server.
  • Timestamp: tanggal dan waktu saat kesalahan dihasilkan.

Pesan kesalahan ditampilkan dalam bahasa default pengguna masuk. Jika pengguna belum masuk, halaman masuk ditampilkan untuk pengguna bisa masuk. Misalnya, respons kesalahan terlihat sebagai berikut:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Rincian otorisasi titik akhir

Catatan

Otorisasi titik akhir tidak digunakan lagi. Gunakan permintaan Titik akhir POST untuk mendapatkan token ID.]

URL untuk otorisasi titik akhir adalah: <portal_url>/_services/auth/authorize. Otorisasi Titik akhir mendukung parameter berikut:

Parameter Harus diisi? Keterangan
client_id Ya String yang diluluskan saat membuat panggilan ke otorisasi titik akhir. Anda harus memastikan bahwa ID klien terdaftar dengan portal. Jika tidak, kesalahan akan ditampilkan. ID klien ditambahkan di klaim dalam token sebagai parameter aud dan appid dan dapat digunakan oleh klien untuk memvalidasi apakah token yang dihasilkan adalah untuk aplikasi mereka.
Panjang Maksimum: 36 karakter. Hanya karakter alfanumerik dan tanda hubung yang didukung.
redirect_uri Ya URL portal di mana respons otentikasi dapat dikirim dan diterima. Harus terdaftar untuk client_id tertentu yang digunakan dalam panggilan dan harus nilai yang persis sama seperti yang terdaftar.
state Tidak Nilai yang tercakup dalam permintaan yang juga dihasilkan sebagai respons token. Hal ini dapat berupa string konten apa pun yang akan digunakan. Biasanya, nilai unik yang dibuat secara acak digunakan untuk mencegah serangan pemalsuan permintaan antar-situs.
Panjang Maksimum: 20 karakter.
nonce Tidak Nilai string yang dikirim oleh klien yang tercakup dalam ID token yang dihasilkan sebagai klaim. Klien kemudian dapat memverifikasi nilai ini untuk mengurangi serangan replay token. Panjang Maksimum: 20 karakter.
response_type No Parameter ini hanya mendukung token sebagai nilai, yang memungkinkan aplikasi Anda segera menerima token akses dari titik akhir otorisasikan, tanpa membuat permintaan kedua ke titik akhir otorisasikan.

Respons sukses

Titik akhir otorisasikan menghasilkan nilai berikut di respons URL sebagai pecahan:

  • Token: Token dikembalikan sebagai JSON Web Token (JWT) dengan tanda tangan digital oleh kunci pribadi portal tersebut.
  • state: jika parameter state disertakan dalam permintaan, nilai yang sama akan muncul dalam respons. Aplikasi harus memverifikasi bahwa nilai state pada permintaan dan respons sama.
  • expires_in: jangka waktu token akses sah (dalam detik).

Misalnya, respons berhasil terlihat sebagai berikut:

GET https://aadb2cplayground.azurewebsites.net/#token=eyJ0eXAiOiJKV1QiLCJhbGciOI1NisIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q&expires_in=3599&state=arbitrary_data_you_sent_earlier

Kesalahan kesalahan

Kesalahan pada titik akhir otorisasi dihasilkan sebagai dokumen JSON dengan nilai berikut:

  • ID Kesalahan: Pengidentifikasi unik kesalahan.
  • Pesan kesalahan: pesan kesalahan tertentu yang dapat membantu Anda mengidentifikasi penyebab akar kesalahan otentikasi.
  • ID Korelasi: GUID yang digunakan untuk tujuan debugging. Jika Anda telah mengaktifkan log diagnosis, ID korelasi akan ada di log kesalahan server.
  • Timestamp: tanggal dan waktu saat kesalahan dihasilkan.

Pesan kesalahan ditampilkan dalam bahasa default pengguna masuk. Jika pengguna belum masuk, halaman masuk ditampilkan untuk pengguna bisa masuk. Misalnya, respons kesalahan terlihat sebagai berikut:

{"ErrorId": "PortalSTS0001", "ErrorMessage": "Client Id provided in the request is not a valid client Id registered for this portal. Please check the parameter and try again.", "Timestamp": "4/5/2019 10:02:11 AM", "CorrelationId": "7464eb01-71ab-44bc-93a1-f221479be847" }

Token ID Memvalidasi

Hanya mendapatkan token ID tidak memadai untuk mengotentikasi pengguna; Anda juga harus memvalidasi tanda tangan token dan Verifikasikan klaim dalam token berdasarkan persyaratan aplikasi Anda. Titik akhir token publik menyediakan kunci publik portal, yang dapat digunakan untuk memvalidasi tanda tangan Token yang disediakan oleh portal. URL untuk titik akhir publik adalah: <portal_url>/_services/auth/publickey.

Mengaktifkan alur izin implisit atau menonaktifkan

Secara default, alur izin implisit diaktifkan. Jika Anda ingin menonaktifkan alur izin implisit, atur nilai pengaturan situs Connector/ImplicitGrantFlowEnabled ke salah.

Jika pengaturan situs ini tidak tersedia di portal Anda, Anda harus membuat pengaturan situs baru nilai yang sesuai.

Konfigurasikan validitas token

Secara default, token ini berlaku untuk 15 menit. Jika Anda ingin mengubah validitas token, atur nilai situs pengaturan ImplicitGrantFlow TokenExpirationTime ke nilai yang diperlukan. Nilai ini harus ditentukan dalam detik. Nilai maksimum dapat 1 jam, dan nilai minimum harus 1 menit. Jika nilai yang tepat ditetapkan (misalnya, karakter alfanumerik), nilai default untuk 15 menit digunakan. Jika Anda menetapkan nilai lebih dari nilai maksimum atau kurang dari nilai minimum, nilai maksimum dan minimum digunakan masing-masing, secara default.

Contohnya, untuk menetapkan berlakunya token 30 detik, atur nilai pengaturan situs ImplicitGrantFlow TokenExpirationTime ke 1800. Untuk menetapkan berlakunya token 1 jam, atur nilai pengaturan situs ImplicitGrantFlow TokenExpirationTime ke 3600.

Daftarkan ID klien untuk alur izin implisit

Anda harus mendaftar ID klien dengan portal yang diizinkan untuk alur ini. Untuk mendaftar ID klien, Anda harus membuat pengaturan situs berikut:

Pengaturan Situs Value
ImplicitGrantFlow RegisteredClientId nilai ID Klien valid yang diizinkan untuk portal ini. Nilai ini harus dipisahkan oleh koma dan dapat berisi karakter alfanumerik dan tanda hubung. Panjang Maksimum: 36 karakter.
ImplicitGrantFlow/{ClientId}/RedirectUri URI Pengalihan valid yang diizinkan untuk ID klien tertentu. Nilai harus dipisahkan oleh koma. URL yang diberikan harus halaman web valid portal.

Kode Sampel

Anda dapat menggunakan kode contoh berikut untuk memulai dengan menggunakan OAuth 2.0 Implicit Grant dengan API Portal Power Apps.

Menggunakan token OAuth Portal dengan API Web eksternal

Sampel ini adalah proyek berbasis ASP.NET dan digunakan untuk memvalidasi id token yang dikeluarkan oleh Portal Power Apps. Sampel lengkap dapat ditemukan di sini: gunakan Portal Oauth token dengan Web API eksternal.

Sampel titik akhir token

Sampel ini menunjukkan bagaimana Anda dapat menggunakan fungsi getAuthenticationToken untuk mengambil token ID menggunakan titik akhir token di Portal Power Apps. Sampel dapat ditemukan di sini: sampel titik akhir token.

Catatan

Apa bahasa dokumentasi yang Anda inginkan? Lakukan survei singkat. (perlu diketahui bahwa survei ini dalam bahasa Inggris)

Survei akan berlangsung kurang lebih selama tujuh menit. Tidak ada data pribadi yang dikumpulkan (pernyataan privasi).