Bagikan melalui


Memecahkan masalah konfigurasi penyedia identitas untuk layanan FHIR

API versi 2023-12-01 dari layanan FHIR® di Azure Health Data Services mendukung dua idP selain ID Microsoft Entra. Untuk menyediakan akses terlingkup ke pengguna, Anda mengonfigurasi dua idP dengan mengisi bagian smartIdentityProvidersauthenticationConfiguration objek.

Pesan kesalahan

Berikut adalah pesan kesalahan yang terjadi jika penyedia identitas SMART layanan FHIR gagal, dan tindakan yang direkomendasikan untuk diambil untuk mengatasi masalah tersebut.

Kesalahan Penyebab Perbaikan
Jumlah maksimum idP SMART adalah 2. Jumlah penyedia identitas yang dikonfigurasi lebih dari dua. Kurangi jumlah penyedia identitas menjadi dua atau kurang.
Satu atau beberapa nilai otoritas penyedia identitas SMART null, kosong, atau tidak valid. Elemen authority konfigurasi idP harus berupa URL yang sepenuhnya memenuhi syarat. Pastikan semua authority nilai adalah URL yang sepenuhnya memenuhi syarat.
Semua otoritas Penyedia Identitas SMART harus unik. Elemen authority dari dua konfigurasi penyedia identitas identik. Pastikan semua authority nilai unik, URL yang sepenuhnya memenuhi syarat.
Jumlah maksimum aplikasi penyedia identitas SMART adalah 2. Jumlah aplikasi penyedia identitas dalam konfigurasi penyedia identitas lebih dari dua. Kurangi jumlah aplikasi penyedia identitas menjadi satu atau dua per idP.
Satu atau beberapa aplikasi SMART null. Elemen applications untuk satu atau beberapa penyedia identitas null atau tidak berisi aplikasi. Pastikan semua konfigurasi penyedia identitas memiliki setidaknya satu aplikasi yang dikonfigurasi.
Satu atau beberapa aplikasi allowedDataActions SMART berisi elemen duplikat. Array allowedDataActions dalam satu atau beberapa konfigurasi aplikasi berisi nilai duplikat. Hapus nilai duplikat apa pun dalam allowedDataActions array.
Satu atau beberapa nilai aplikasi allowedDataActions SMART tidak valid. Satu-satunya nilai yang dapat diterima dalam allowedDataActions array adalah Read. Hapus nilai yang tidak sesuai dari allowedDataActions array.
Satu atau beberapa nilai aplikasi allowedDataActions SMART null, kosong, atau tidak valid. Array allowedDataActions dalam satu atau beberapa konfigurasi aplikasi null, kosong, atau cacat. Satu-satunya nilai yang dapat diterima dalam allowedDataActions array adalah Read.
Satu atau beberapa nilai aplikasi audience SMART null, kosong, atau tidak valid. String audience dalam satu atau beberapa konfigurasi aplikasi null, kosong, atau cacat. audience Pastikan string tidak null atau kosong dan nilainya adalah jenis string.
Semua id klien aplikasi penyedia identitas SMART harus unik. Nilai clientId dalam satu atau beberapa konfigurasi aplikasi adalah nilai yang sama dengan nilai lain clientId . Pastikan semua clientId nilai unik (termasuk di seluruh konfigurasi penyedia identitas).
Satu atau beberapa nilai id klien aplikasi SMART null, kosong, atau tidak valid. String clientId dalam satu atau beberapa konfigurasi aplikasi null, kosong, atau cacat. clientId Pastikan string tidak null atau kosong dan nilainya adalah jenis string.

Kesalahan permintaan API FHIR

Saat Anda menggunakan token yang dikeluarkan oleh IdP SMART untuk membuat permintaan ke layanan FHIR, Anda mungkin menemukan dua kode kesalahan umum: 401 Unauthorized atau 403 Forbidden. Untuk memulai pemecahan masalah, periksa konfigurasi smartIdentityProviders elemen, terutama jika layanan FHIR baru.

Ikuti langkah-langkah ini untuk memverifikasi konfigurasi elemen yang smartIdentityProviders benar.

  1. Verifikasi bahwa elemen dikonfigurasi smartIdentityProviders dengan benar.

  2. Verifikasi bahwa authority string sudah benar. authority Pastikan string adalah otoritas token untuk IdP yang mengeluarkan token akses.

  3. Verifikasi bahwa authority string adalah otoritas token yang valid. Buat permintaan untuk konfigurasi openid-connect. Tambahkan /.well-known/openid-configuration ke akhir aubrowser navigatesthority string, lalu tempelkan ke browser Anda. Jika nilainya benar, browser akan menavigasi ke openid-connect configuration. Jika tidak, ada masalah dengan string.

    Contoh:

    https://<YOUR_IDENTITY_PROVIDER_AUTHORITY>/authority/v2.0/.well-known/openid-configuration
    
    
  4. Verifikasi bahwa clientId string sudah benar. clientId Pastikan string cocok dengan ID klien (atau ID aplikasi) dari aplikasi sumber daya yang ditentukan dalam penyedia identitas.

  5. Verifikasi metode permintaan adalah GET. Satu-satunya jenis permintaan yang didukung adalah GET, karena nilai hanya mendukung Read.allowedDataActions

  6. Verifikasi klaim token web JSON (JWT). Jika token akses tersedia, dekodekan dengan menggunakan alat online seperti jwt.ms. Setelah token didekodekan, klaim dapat diperiksa untuk kebenarannya.

    Screenshot showing jwt web token claims.

  7. Verifikasi iss (klaim penerbit). Pastikan iss klaim sama persis dengan issuer nilai di Konfigurasi OpenId penyedia identitas Anda.

    authority Ambil nilai dari smartIdentityProvider konfigurasi penyedia identitas, tambahkan dengan /.well-known/openid-configuration, lalu tempelkan di browser Anda. Jika nilainya benar, browser akan menavigasi ke konfigurasi openid-connect.

    Contoh:

    https://<YOUR_IDENTITY_PROVIDER_AUTHORITY>/authority/v2.0/.well-known/openid-configuration
    
  8. Verifikasi azp atau appid (pihak yang berwenang atau klaim appid). Klaim azp atau appid harus sama persis dengan clientId nilai yang disediakan dalam smartIdentityProvider konfigurasi idP.

  9. Verifikasi aud (klaim audiens). Klaim aud harus sama persis dengan audience nilai yang disediakan dalam smartIdentityProvider konfigurasi idP.

  10. Verifikasi scp (klaim cakupan). Klaim scp diperlukan. Jika hilang, permintaan gagal. Format klaim scp harus sesuai dengan SMART pada Cakupan FHIR v1. Penting untuk dicatat bahwa layanan FHIR saat ini hanya mendukung cakupan Baca. Variasi SMART yang dapat diterima pada Cakupan FHIR v1 menggantikan garis miring (/) dengan titik (.) dan tanda bintang (*) dengan all. Misalnya, versi SMART yang dapat diterima pada cakupan patient/*.read FHIR adalah patient.all.read.

Catatan

Hanya read cakupan yang didukung.

  1. Verifikasi fhirUser atau extension_fhirUser (klaim pengguna FHIR). Klaim fhirUser atau extension_fhirUser diperlukan. Jika hilang, permintaan gagal. Klaim ini menautkan pengguna di penyedia identitas dengan sumber daya pengguna di layanan FHIR. Nilai harus merupakan URL sumber daya yang sepenuhnya memenuhi syarat dalam layanan FHIR yang mewakili individu tempat token akses dikeluarkan. Misalnya, token akses yang dikeluarkan untuk pasien yang masuk harus memiliki fhirUser atau extension_fhirUser klaim yang memiliki URL sumber daya pasien yang sepenuhnya memenuhi syarat dalam layanan FHIR.

Skema untuk mengonfigurasi penyedia identitas

Elemen smartIdentityProviders adalah array JSON yang berisi satu atau dua identity provider configurations. identity provider configuration Terdiri dari:

  • Nilai authority string yang harus menjadi URL otoritas token penyedia identitas yang sepenuhnya memenuhi syarat.

  • Array applications yang berisi sumber daya application configurationspenyedia identitas .

{
  "properties": {
    "authenticationConfiguration": {
      "authority": "string",
      "audience": "string",
      "smartProxyEnabled": "bool",
      "smartIdentityProviders": [
        {
          "authority": "string",
          "applications": [
            {
              "clientId": "string",
              "allowedDataActions": "array",
              "audience": "string"
            }
          ]
        }
      ]
    }
  }
}

Elemen applications adalah array JSON yang berisi satu atau dua application configurations.

application configuration terdiri dari:

  • Nilai clientId string untuk ID klien (juga dikenal sebagai ID aplikasi) dari aplikasi sumber daya penyedia identitas.

  • String yang audience digunakan untuk memvalidasi aud klaim dalam token akses.

  • Array dari allowedDataActions. Array allowedDataActions hanya dapat berisi nilai Readstring .

{
  "authority": "string",
  "applications": [
    {
      "clientId": "string",
      "allowedDataActions": "array",
      "audience": "string"
    }
  ]
}
{
  "clientId": "string",
  "allowedDataActions": "array",
  "audience": "string"
}

Langkah berikutnya

Menggunakan Azure Active Directory B2C untuk memberikan akses ke layanan FHIR

Mengonfigurasi beberapa penyedia identitas

Catatan

FHIR® adalah merek dagang terdaftar HL7 dan digunakan dengan izin HL7.