Encontrar

Artículo
· 2 hr atrás Lectura de 10 min

OAuth FHIR Client Quickstart(バージョン2025.1以降)のご紹介

開発者の皆さん、こんにちは!

バージョン2025.1以降のIRIS for Healthの機能に、「OAuth FHIR Client Quickstart」が追加され  FHIR サーバーを OAuth2.0リソースサーバ―として簡単に設定できるようになりました。

この記事では、OAuth2.0 認可サーバーとして Auth0(Okta社 https://auth0.com/jp)を利用し、IRISに用意するFHIRサーバーを OAuth2.0 リソースサーバ―として設定し、Webアプリケーション(例ではPostman)からFHIRリソースにアクセスするまでの流れをご紹介します。

 

ご紹介する「OAuth FHIR Client Quickstart」 では、指定した外部の OAuth2.0 認可サーバーと連携し、FHIRサーバーを保護するための OAuth2.0 リソースサーバ関連設定を、IRIS および OAuth2.0 認可サーバー側に自動作成します。

Webアプリケーションの代わりに使用するPostmanからは、OAuth2 Authorization Code Flow でアクセストークンを取得します(ID Token は利用しません)。

以降の記述の中では、OAuth2.0認可サーバーを「認可サーバー」、OAuth2.0リソースサーバ―を「リソースサーバ―」と略して記載していきます。

【目次】

1. 認可サーバ機能の準備

2. OAuth FHIR Client Quickstart

2-1. FHIRサーバーを作成または選択

2-2. 認可サーバーの種類を選択

2-3. OAuthサーバーを構成する

3. 認可サーバーでの追加の設定

3-1. リソースサーバ―を登録する

3-2. 登録されたクライアントに適切なスコープを設定する

3-3. OAuth2.0クライアント(Postman)の登録

3-4. ユーザーの登録

4. Postmanでの操作

4-1. アクセストークの取得

4-2. FHIRリソースにアクセス

 

1. 認可サーバ機能の準備

この記事では、Auth0 を利用しています。

Auth0 は OAuth 2.0(認可)および OpenID Connect(認証)に対応しており、この記事では FHIR API 向けのアクセストークンを発行する認可サーバとして利用します。

Auth0 は、この機能を SaaS として提供しており、テナント作成により利用可能になります。

Auth0 でアカウント登録(テナント作成)を行うと、テナント単位で OAuth 2.0 / OpenID Connect 認可サーバー機能を利用できるようになります。

ここで、IRIS for Health のOAuth FHIR Client Quickstart からテナントで用意したサービスに対してクライアントの登録ができるように、設定を変更します。

テナント名をクリックし、「設定」に移動し、「詳細設定」をクリックします。

画面の下の方にある「動的クライアント登録(DCR)」を有効に設定します。

 

 

次に、認可サーバーのエンドポイントを調べるため、デフォルトアプリケーションの設定を確認します。

画面左のアプリケーションを展開すると「Default App」があり「詳細設定」を参照すると各エンドポイントを参照できます。

 

エンドポイントに記載された https://dev-***.jp.auth0.com/ までが認可サーバーのエンドポイントとして必要になるので、メモしておきます。

 

2. OAuth FHIR Client Quickstart

OAuth FHIR Client Quickstart を開始する前に、ネームスペース・データベースの作成を行います。

管理ポータルでの手順は以下の通りです。

管理ポータル > Health を選択し、下図のように画面上部に「Installer Wizard」が表示されますのでクリックします。

Configure Foundation」ボタンをクリックし、作成したい環境名(ネームスペース・データベース名)を「Local Name」欄に記入し、Saveボタンをクリックします。

その後、追加した環境をアクティベートするため画面右端にある「Activate」をクリックし、子画面内の「Start」ボタンをクリックします。

子画面に「Activate Done」と表示されたら完了です。

 

2-1. FHIRサーバーを作成または選択

FHIR Server Management 画面に移動するため、画面上部のメニューから「FHIR」を選択します。

(または、管理ポータル > Health > 作成したネームスペース名 > FHIR Server Management

以下のように表示されます。例では、事前にFHIRサーバーを用意してみます。

「Add New Server」をクリックすると子画面が表示されます。作成したネームスペース(例ではTEST)を選択し、FHIRサーバー名を設定します(例では test)。

 

Create」ボタンをクリックしてFHIRサーバーの作成を開始します。この処理は機材にもよりますが数分かかりますので完了するまでしばらく待ちます。

待っている間は以下のような表示です。

作成が完了すると以下の表示になります。

 

画面左の下部にあるをクリックすると、メニューがアイコンから字に変わります。

OAuth FHIR Client Quickstart」をクリックすると、既存のFHIRサーバーを選択するか、作成するかのメニューが表示されるので、「Use an Existing FHIR Server」を選択し「Next」ボタンをクリックします。

 

既存のFHIRサーバーがあるネームスペース(例では、TEST)と URL(例では /csp/healthshare/test/fhir/r4)を指定して「Next」ボタンをクリックします。

 

2-2. 認可サーバーの種類を選択

次に、使用する認可サーバータイプの選択画面が開きます。外部の認可サーバー(Okta社のAuth0)か、IRIS内の認可サーバーか選択します。

IRIS を 認可サーバーとして使用する場合は、安全な通信を設定する必要があります

また、FHIR をサポートする認可サーバーとして IRIS を設定する必要があります。作成用のメソッドも提供されています。)

この記事では、外部の認可サーバー(Okta社のAuth0を使用して設定を進めていきます。 

 

2-3. 認可サーバーを構成する

Issuer Endpoint」に「1. 認可サーバ機能の準備」で確認したエンドポイントを指定し、Testボタンをクリックします。テストが完了すると「Next」ボタンが表示されるのでクリックします。

 

確認用画面が表示されます。「Confirm」をクリックします。

作成が完了すると「Done」ボタンが表示されるので、クリックします。

 

この手続きの中では、IRISにあるOAuth2.0サーバ/クライアント設定に、認可サーバーとして指定した外部の認可サーバー情報と、リソースサーバーとして動作するFHIRサーバーの情報をクライアントとして登録しています(「This client name is:」以降に記載の名称で登録されます)。

また、FHIRサーバーのアクセスにOAuth2 を使用するため、FHIRサーバーの「FHIR Server Authorization Settings 」に作成された「OAuth2.0 クライアント」の名称が設定されます。

 

確認手順は以下の通りです。

FHIR サーバーの編集メニューを図のように開きます(Editを選択しています)。

FHIR Server Authorization Settings 内の「OAuth Client Name」に設定されていることを確認できます。

ここで確認した OAuth Client Name は、管理ポータルの以下メニューにもリソースサーバ―として登録されています。(将来のバージョンで FHIR Server Management画面でも確認できます)

管理ポータルトップ > システム管理 > セキュリティ > OAuth 2.0 > クライアント > クライアント構成 

 

この名称は、Auth0にも OAuth2.0 クライアントとして登録されています(Auth0では、「アプリケーション」として登録されています)。

メモ:Auth0 では、OAuth2 のクライアントを「アプリケーション」、リソースサーバを「API」として管理します。

 

 

3. 認可サーバーでの追加の設定 

3-1. リソースサーバ―を登録する

次に、リソースサーバの設定を行うため、Auth0ではAPIを作成しスコープを定義します。

メモ:Auth0 では、OAuth2.0 クライアントを「アプリケーション」、リソースサーバを「API」として管理します。

Auth0 の画面でAPIメニューを選択し「APIの作成」をクリックします。

名前欄に任意の名称を設定します。

識別子(Audience)には、FHIR サーバーを一意に識別できる URI を指定します(本例では FHIR エンドポイント URL を使用しています)。

パーミッションメニューを利用して、FHIR のスコープを追加します(適切なものを指定してください)。

 

3-2. 登録されたクライアントに適切なスコープを設定する

登録されたOAuth2.0 クライアント(Auth0ではアプリケーション)の設定画面に戻り、APIタブを選択します。

作成したAPIが表示されるので選択し、「許可済」となるようにチェックし、メニューを展開します。

APIで設定したスコープが表示されるので、必要なものを選択し、画面下にある「更新する」ボタンをクリックして設定を完了させます。

この設定で、この認可サーバーがアクセスするリソースサーバ―(FHIRサーバー)のスコープが確定します。

 

以上でリソースサーバ―のための設定は完了です。

次は、WebアプリケーションでFHIRリソースにアクセスできるようにするため、OAuth2.0 クライアント(Webアプリケーション)を追加します。

 

3-3. OAuth2.0クライアント(Postman)の登録

再び、Auth0のアプリケーション画面を開き、Webアプリケーション用のOAuth2.0クライアントを作成します。

例では、名称にPostman、種類は「一般的なWebアプリケーション」を選択し作成しています。

 

設定を修正します。

アクセストークンを取得する流れで使用するコールバック用URLを登録し保存します。(例:https://oauth.pstmn.io/v1/callback

また、この画面に表示されているクライアントIDクライアントシークレットはPostmanからアクセストークンを取得する際使用する情報となりますのでメモします。

画面下の方にある「詳細設定」を確認すると、OAuth Authorization URLOAtush Token URLの情報を確認できます(後ほど入力する情報です)。

 


3-4. ユーザーの登録

次に、認可サーバーにユーザー情報を登録します。

この例では、簡単に設定するためユーザーに直接スコープを定義していますが、ロールにスコープを定義し適切なロールをユーザーへ付与する方法のほうがユーザー追加や変更に対応しやすい設定となります。

Auth0の管理画面で、ユーザー管理ユーザーメニューを選択し、「ユーザーを作成」ボタンをクリックし新規ユーザーを登録します。

 

登録後、「パーミッション」タブで事前に定義したAPI(例ではFHIRTestAPI:リソースサーバ―)を選択し、必要なスコープを適用します。

これでアクセスのために必要な設定は完了です。

次は、アプリケーションからFHIRリソースにアクセスします。

 

4. Postmanでの操作

WebアプリケーションとしてPostmanを利用してテストします。

 

4-1. アクセストークの取得

Postmanの「Authorization」タブに移動し、AuthType:「OAuth2.0」を選択します。アクセストークンを取得するために必要な情報を入力します。

(Grant type:Authorization Codeを指定します。残りは事前に確認した情報を設定します。Scopeが複数ある場合はスペースで区切ります。)

参照したいFHIRサーバーの情報を「Advanced」以下にある「Auth Request」を利用して設定します。

  • Key:audience
  • Value:FHIRサーバーのエンドポイント

 

設定が完了したらボタンをクリックします。

認可サーバーのログイン画面が以下のように表示されるので、認可サーバーに登録したユーザ名、パスワードを入力します。

 

Use Tokenボタンをクリックすると、以下のようにTokenがコピーされます。

 

4-2. FHIRリソースにアクセス

アクセストークンが入手出来たら、いよいよFHIRサーバーへのアクセスです。

(まだリソースを登録していないので、0件の結果が返ればアクセスできている状態です)

 

テストデータ登録後、正しくリソースがGETできています。

 

OAuth FHIR Client Quickstart」では、外部の OAuth 2.0 認可サーバー(Okta の Auth0 など)を認可サーバとして利用し、IRISのFHIRサーバーをリソースサーバとして OAuth 2.0 で保護する構成を以前のバージョンより簡単に設定できるようになりました!

Comentarios (0)1
Inicie sesión o regístrese para continuar
Pregunta
· 3 hr atrás

Cara Menghubungi Call Center AirAsia

Untuk menghubungi Customer Service AirAsia, Anda bisa menelepon Layanan Pelanggan di 0897-6681-505 Atau bisa melalui Call Center AirAsia WhatsApp di nomor (+62) 897 6681 505 yang tersedia 24 jam.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Resumen
· 7 hr atrás

InterSystems 开发者社区中文版:2025年度简报

大家好,欢迎访问 2025 年度开发者社区简报。
一般统计信息:
✓ 2025 年共发布了 148 篇帖子:
 90 篇帖子
 53份公告
 4个问题
  – 1次讨论
✓ 2025 年共有 268 位成员加入开发者社区
✓ 总共发布了 2,463 篇帖子
✓ 总共有 21,461 位成员加入
最热门:
2025 年纵览InterSystems开发者社区
Artículo
· 13 hr atrás Lectura de 2 min

Como comparar o conteúdo de duas globais

Rubrica de FAQ do InterSystems

O utilitário ^%GCMP pode ser usado para comparar o conteúdo de dois globals.

Por exemplo, para comparar ^test e ^test nos namespaces USER e SAMPLES, ficaria assim:

No exemplo abaixo, 700 globais idênticas são criadas nos dois namespaces, e o conteúdo de uma delas é alterado para torná-lo o alvo de detecção.
 

USER>kill ^test
USER>for i=1:1:100 { for j=1:1:7 { set ^test(i,j)="Test"_i } }
 
USER>zn "samples"                  // change namespace to SAMPLES
SAMPLES>kill ^test
SAMPLES>for i=1:1:100 { for j=1:1:7 { set ^test(i,j)="Test"_i } }
 
SAMPLES>set ^test(50,5,1)=1        // Change one of the globals created in the SAMPLES namespace.
SAMPLES>do ^%GCMP
Compare global ^test               // Global to compare.
on directory set: (this system)    // Enter
in namespace: SAMPLES =>           // Enter (if this namespace is OK)
with global ^test=>                // Global to compare
on directory set: (this system)    // Enter
in namespace: SAMPLES => USER      // Namespace to compare
Output differences on
Device:                            // Destination for output results. Press <Enter> to view in a terminal.
                                   // If you enter the full path of the log file name, the output will be sent there.
Right margin: 80 =>

Compare global ^test in SAMPLES
 with global ^test in USER
 
^test(50,5,1) exists in ^|"SAMPLES"|test but not in ^|"USER"|test    // Detects differing globals
Time=.001822
SAMPLES>

Se você quiser comparar entre instâncias em servidores diferentes, em vez de dentro da mesma instância, use o utilitário ^DATACHECK. Para instruções sobre como usar o utilitário ^DATACHECK, consulte o artigo relacionado abaixo:

How to compare multiple globals and routines in two databases

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 13 hr atrás Lectura de 1 min

Mostrar los elementos de configuración de producción con estado

Este código muestra los elementos de producción configurados e indica si están habilitados o deshabilitados.

 

Include (Ensemble, EnsUI, EnsUtil)

Class Test.ProductionConfig
{

ClassMethod GetConfigItems() As %Status
{
Set tStatement = ##class(%SQL.Statement).%New()
Set tSC = tStatement.%PrepareClassQuery("Ens.Config.Production","EnumerateConfigItems")
Write tSC,!
Write "ConfigItemName"," ","Enabled",!
#Dim exp As %Exception.SystemException
#Dim rset As %SQL.StatementResult
Set rset = tStatement.%Execute()
Write rset,!
Write rset.%SQLCODE,!
While rset.%Next() {
Try {
Set tConfigName = rset.%GetData(1)
Set tEnabled = rset.%GetData(3)
Catch exp {
Write "CATCH",!
Write exp,!
Write exp.DisplayString(),!
}
Write $Get(tConfigName)," ",$Get(tEnabled),!
}
Quit tSC
}

}

Comentarios (0)1
Inicie sesión o regístrese para continuar