Gunakan aliran keiinan tersirat OAuth 2.0 dalam portal anda

Nota

Berkuat kuasa pada 12 Oktober 2022, portal Power Apps ialah Power Pages. Maklumat lanjut: Microsoft Power Pages kini tersedia secara umum (blog)
Kami akan memindahkan dan menggabungkan dokumentasi portal Power Apps dengan dokumentasi Power Pages tidak lama lagi.

Ciri ini membolehkan pelanggan untuk membuat panggilan bahagian klien ke API luaran dan melindunginya menggunakan aliran keizinan tersirat OAuth. Ia menyediakan titik tamat untuk mendapatkan token capaian yang selamat. Token ini akan mengandungi maklumat identiti pengguna yang akan digunakan oleh API luaran untuk pengesahan mengikut aliran keizinan tersirat OAuth 2.0. Maklumat identiti pengguna daftar masuk dihantar dengan cara yang selamat kepada panggilan AJAX luaran, yang membantu pembangun untuk menghantar konteks pengesahan dan juga akan membantu pengguna memastikan API mereka selamat.

Aliran keizinan tersirat OAuth 2.0 menyokong titik tamat token yang klien boleh hubungi untuk mendapatkan token ID.

Sijil tersuai

Menggunakan sijil lalai untuk aliran keizinan tersirat OAuth 2.0 ditamatkan. Anda akan perlu untuk menggunakan sijil tersuai ketika menggunakan titik tamat OAuth 2.0. Gunakan pusat pentadbir Power Platform untuk memuat naik sijil tersuai. Selepas memuat naik sijil tersuai, anda perlu mengemas kini tetapan tapak seperti di bawah:

  1. Pergi ke  tetapan portal  dan pilih  Tetapan Tapak.

  2. Untuk mencipta tetapan baharu, pilih  Baharu.

  3. Untuk mengedit tetapan sedia ada, pilih tetapan tapak yang disenaraikan dalam grid.

  4. Tentukan nilai:

    • Nama: CustomCertificates/ImplicitGrantflow
    • Tapak Web: Tapak web yang berkaitan
    • Nilai: Salin cap ibu jari sijil tersuai yang dimuat naik daripada skrin Urus sijil tersuai dan tampalkannya di sini. Nilai akan menunjukkan sijil yang akan digunakan untuk aliran keizinan tersirat.
  5. Pilih Simpan & Tutup. Menu umum untuk Tetapan Tapak Baharu dengan nilai yang ditentukan.

Butiran token titik tamat

Anda juga boleh mendapatkan token dengan membuat siaran kepada titik tamat /token. URL untuk titik tamat token ialah: <portal_url>/_services/auth/token. Titik tamat token menyokong parameter berikut:

Parameter Diperlukan? Perihalan
client_id Tidak Rentetan yang dihantar apabila membuat panggilan ke titik tamat yang dibenarkan. Anda hendaklah memastikan bahawa ID klien adalah berdaftar dengan portal. Jika tidak, ralat akan dipaparkan. ID Klien ditambah dalam tuntutan dalam token sebagai parameter aud dan appid dan boleh digunakan oleh klien untuk mengesahkan bahawa token dikembalikan untuk aplikasi mereka.
Panjang maksimum ialah 36 aksara. Hanya aksara abjad angka dan sengkang disokong.
redirect_uri Tidak URL portal yang respons pengesahan boleh dihantar dan diterima. Ia mesti berdaftar client_id tertentu yang digunakan dalam panggilan dan sepatutnya nilai tepat yang sama seperti yang didaftarkan.
keadaan Tidak Nilai yang disertakan dalam permintaan juga dikembalikan sebagai respons token. Ia boleh menjadi rentetan sebarang kandungan yang anda mahu gunakan. Biasanya, nilai dijana secara rawak yang unik digunakan untuk mengelakkan serangan pemalsuan permintaan merentasi tapak.
Panjang maksimum ialah 20 aksara.
tiada Tidak Nilai rentetan yang dihantar oleh klien yang disertakan dalam token ID hasil sebagai tuntutan. Klien kemudian boleh mengesahkan nilai ini untuk mengurangkan serangan token main semula. Panjang maksimum ialah 20 aksara.
response_type No Parameter ini hanya menyokong token sebagai nilai, membolehkan aplikasi anda dengan serta-merta menerima token capaian daripada titik tamat pengesahan tanpa membuat permintaan kedua kepada titik tamat pengesahan.

Nota

Walaupun parameter client_id, redirect_uri, state dan nonce adalah pilihan, ia disyorkan untuk menggunakannya bagi memastikan integrasi anda akan selamat.

Respons berjaya

Titik tamat token mengembalikan keadaan dan expires_in sebagai pengepala respons dan token dalam isi borang.

Respons ralat

Ralat dalam titik tamat token dikembalikan sebagai dokumen JSON dengan nilai berikut:

  • ID Ralat: Pengecam unik untuk ralat.
  • Mesej ralat: Mesej ralat tertentu yang boleh membantu anda mengenal pasti punca yang menyebabkan ralat pengesahan.
  • ID Korelasi: GUID yang digunakan untuk tujuan penyahpepijatan. Jika anda telah mendayakan log diagnostik, ID korelasi akan ditunjukkan dalam log ralat pelayan.
  • Cap masa: Tarikh dan masa sewaktu ralat dijana.

Mesej ralat dipaparkan dalam bahasa lalai pengguna yang mendaftar masuk. Jika pengguna tidak didaftar masuk, halaman daftar masuk dipaparkan bagi pengguna untuk daftar masuk. Sebagai contoh, respons ralat kelihatan seperti 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" }

Benarkan butiran titik tamat

Nota

Titik tamat pengesahan ditamatkan. Gunakan titik tamat Token permintaan POST untuk mendapatkan ID token.]

URL untuk membenarkan titik tamat ialah: <portal_url>/_services/auth/authorize. Benarkan titik tamat menyokong parameter berikut:

Parameter Diperlukan? Perihalan
client_id Ya Rentetan yang dihantar apabila membuat panggilan ke titik tamat yang dibenarkan. Anda hendaklah memastikan bahawa ID klien adalah berdaftar dengan portal. Jika tidak, ralat akan dipaparkan. ID Klien ditambah dalam tuntutan dalam token sebagai parameter aud dan appid dan boleh digunakan oleh klien untuk mengesahkan bahawa token dikembalikan untuk aplikasi mereka.
Panjang maksimum ialah 36 aksara. Hanya aksara abjad angka dan sengkang disokong.
redirect_uri Ya URL portal yang respons pengesahan boleh dihantar dan diterima. Ia mesti berdaftar client_id tertentu yang digunakan dalam panggilan dan sepatutnya nilai tepat yang sama seperti yang didaftarkan.
keadaan Tidak Nilai yang disertakan dalam permintaan juga dikembalikan sebagai respons token. Ia boleh menjadi rentetan sebarang kandungan yang anda mahu gunakan. Biasanya, nilai dijana secara rawak yang unik digunakan untuk mengelakkan serangan pemalsuan permintaan merentasi tapak.
Panjang maksimum ialah 20 aksara.
tiada Tidak Nilai rentetan yang dihantar oleh klien yang disertakan dalam token ID hasil sebagai tuntutan. Klien kemudian boleh mengesahkan nilai ini untuk mengurangkan serangan token main semula. Panjang maksimum ialah 20 aksara.
response_type No Parameter ini hanya menyokong token sebagai nilai, yang membolehkan aplikasi anda dengan serta-merta menerima token capaian daripada titik tamat pengesahan tanpa membuat permintaan kedua kepada titik tamat pengesahan.

Respons berjaya

Bnearkan titik tamat mengembalikan nilai berikut dalam URL respons sebagai fragmen:

  • token: Token dikembalikan sebagai Token Web JSON (JWT) yang ditandatangan secara digital oleh kunci peribadi portal ini.
  • keadaan: Jika parameter keadaan disertakan dalam permintaan, nilai yang sama harus muncul dalam respons. Aplikasi perlu mengesahkan bahawa keadaan nilai dalam permintaan dan respons adalah serupa.
  • expires_in: Tempoh masa yang token capaian sah (dalam saat).

Sebagai contoh, respons berjaya kelihatan seperti berikut:

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

Respons ralat

Ralat dalam benarkan titik tamat dikembalikan sebagai dokumen JSON dengan nilai berikut:

  • ID Ralat: Pengecam unik untuk ralat.
  • Mesej ralat: Mesej ralat tertentu yang boleh membantu anda mengenal pasti punca yang menyebabkan ralat pengesahan.
  • ID Korelasi: GUID yang digunakan untuk tujuan penyahpepijatan. Jika anda telah mendayakan log diagnostik, ID korelasi akan ditunjukkan dalam log ralat pelayan.
  • Cap masa: Tarikh dan masa sewaktu ralat dijana.

Mesej ralat dipaparkan dalam bahasa lalai pengguna yang mendaftar masuk. Jika pengguna tidak didaftar masuk, halaman daftar masuk dipaparkan bagi pengguna untuk daftar masuk. Sebagai contoh, respons ralat kelihatan seperti 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" }

Sahkan token ID

Hanya mendapatkan token ID tidak mencukupi untuk mengesahkan pengguna; anda juga mesti mengesahkan tandatangan token tersebut dan mengesahkan tuntutan dalam token berdasarkan keperluan aplikasi anda. Titik tamat token awam menyediakan kekunci awam portal, yang boleh digunakan untuk mengesahkan tandatangan token yang disediakan oleh portal. URL untuk titik tamat token awam ialah: <portal_url>/_services/auth/publickey.

Hidupkan atau mematikan aliran keizinan tersirat

Secara lalai, aliran keizinan tersirat didayakan. Jika anda mahu padamkan aliran keizinan tersirat, tetapkan nilai tetapan tapak Penyambung/ImplicitGrantFlowEnabled kepada Palsu.

Jika tetapan tapak ini tidak tersedia dalam portal anda, anda mesti cipta tetapan tapak baharu dengan nilai bersesuaian.

Konfigurasikan kesahihan token

Secara lalai, token adalah sah selama 15 minit. Jika anda mahu mengubah kesahihan token, tetapkan nilai tetapan tapak ImplicitGrantFlow/TokenExpirationTime kepada nilai yang diperlukan. Nilai mesti dinyatakan dalam saat. Nilai maksimum boleh menjadi 1 jam dan nilai minimum mestilah 1 minit. Jika nilai salah dinyatakan (sebagai contoh, aksaran abjad angka), nilai lalai 15 minit digunakan. Jika anda menentukan nilai yang lebih daripada nilai maksimum atau kurang daripada nilai minimum, nilai maksimum dan minimum digunakan masing-masing, secara lalai.

Sebagai contoh, untuk menetapkan kesasihan token kepada 30 minit, tetapkan nilai tetapan tapak ImplicitGrantFlow/TokenExpirationTime kepada 1800. Untuk menetapkan kesasihan token kepada 1 jam, tetapkan nilai tetapan tapak ImplicitGrantFlow/TokenExpirationTime kepada 3600.

Daftarjab ID klien untuk aliran pemberian tersirat

Anda mesti mendaftar ID klien dengan portal yang mana aliran ini dibenarkan. Untuk mendaftar ID klien, anda mestilah mencipta tetapan laman berikut:

Tetapan tapak Value
ImplicitGrantFlow/RegisteredClientId Nilai ID klien yang dibenarkan untuk portal ini. Nilai mesti dipisahkan oleh titik koma dan boleh mengandungi aksara abjad angka dan sengkang. Panjang maksimum ialah 36 aksara.
ImplicitGrantFlow/{ClientId}/RedirectUri URI hala semula yang sah yang dibenarkan untuk ID klien tertentu. Nilai mesti dipisahkan oleh titik koma. URL yang diberikan mestilah daripada halaman web portal yang sah.

Kod sampel

Anda boleh menggunakan kod sampel berikut untuk bermula dengan menggunakan Keizinan Tersirat OAuth 2.0 dengan API portal Power Apps.

Gunakan token Portal OAuth dengan API Web luaran

Sampel ini ialah projek berasaskan ASP.NET dan digunakan untuk mengesahkan token ID yang dikeluarkan oleh portal Power Apps. Sampel lengkap boleh didapati di sini: Gunakan token Portal OAuth dengan API Web luaran.

Sampel Titik tamat Token

Sampel ini menunjukkan cara anda boleh menggunakan fungsi getAuthenticationToken untuk mengambil token ID menggunakan titik tamat Token dalam portal Power Apps. Sampel boleh didapati di sini: Sampel Titik tamat Token.

Nota

Adakah anda boleh memberitahu kami tentang keutamaan bahasa dokumentasi anda? Jawab tinjauan pendek. (harap maklum bahawa tinjauan ini dalam bahasa Inggeris)

Tinjauan akan mengambil masa lebih kurang tujuh minit. Tiada data peribadi akan dikumpulkan (pernyataan privasi).