本記事は、あくまで執筆者の見解であり、インターシステムズの公式なドキュメントではありません。

IRISのoAuth2機能関連の情報発信は既に多数ありますが、本稿では
- 手順(ほぼ)ゼロでひとまず動作させてみる
- 設定の見通しを良くするために、役割ごとにサーバを分ける
- 目に見えない動作を確認する
- クライアント実装(PythonやAngular,CSPアプリケーション等)と合わせて理解する
- シングルサインオン/シングルログアウトを実現する

ということを主眼においています。

コミュニティ版で動作しますので、「とりあえず動かす」の手順に従って、どなたでもお試しいただけます。

現状、使用IRISバージョンはIRIS 2023.1のプレビュー版になっていますが、ソースコードは適宜変更します。

手順に沿ってコンテナを起動すると下記の環境が用意されます。この環境を使用して動作を確認します。

ユーザエージェント(ブラウザ)やPython/curlからのアクセスは、全てApache (https://webgw.localdomain/) 経由になります。青枠の中のirisclient等の文字はコンテナ名(ホスト名)です。

例えば、irisclientホストの/csp/user/MyApp.Login.clsにアクセスする場合、URLとして

 https://webgw.localdomain/irisclient/csp/user/MyApp.Login.cls

と指定します。

つまり、各エンドポイントは同一のorigin (https://webgw.localdomain) を持ちます。そのため、クロスサイト固有の課題は存在しません(カバーされません)が、仮に各サーバが別のドメインに存在しても基本的には動作するはずです。

oAuth2/OIDC(OpenID Connect)の利用シーンは多種多様です。

本例は、認証・認可サーバ,クライアントアプリケーション,リソースサーバの全てがIRISで実行されるクローズドな環境(社内や組織内での使用)を想定して、認可コードフロー(Authorization Code Flow)を実現します。分かりやすい解説が、ネットにたくさんありますので、コードフロー自身の説明は本稿では行いません。

認証・認可サーバの候補はIRIS, WindowsAD, Azure AD, AWS Cognito, Google Workspace, keycloak, OpenAMなどがあり得ます。個別に動作検証が必要です。

クライアントアプリケーション(RP)は、昨今はSPAが第一候補となると思いますが、利用環境によっては、SPA固有のセキュリティ課題に直面します。

IRISには、Confidential Clientである、従来型のWebアプリケーション(フォームをSubmitして、画面を都度再描画するタイプのWebアプリケーション)用のoAuth2関連のAPI群が用意されています。

そこで、Webアプリケーション(CSP)を選択することも考えられますが、クライアント編では、よりセキュアとされるSPA+BFF(Backend For Frontend)の構成を実現するにあたり、Webアプリケーション用APIをそのまま活用する方法をご紹介する予定です。

以下、サーバ編の動作確認には、CSPアプリケーションを使用しています。これは、新規開発にCSP(サーバページ)を使用しましょう、という事ではなく、BFF実現のために必要となる機能を理解するためです。BFFについては、クライアント編で触れます。BFFについては、こちらの説明がわかりやすかったです。

リソースサーバの役割はデータプラットフォームであるIRISは最適な選択肢です。医療系用のサーバ機能ですがFHIRリポジトリはその良い例です。本例では、至極簡単な情報を返すAPIを使用しています。

少しの努力でFHIRリポジトリを組み込むことも可能です。

サーバ編とクライアント編に分けて記載します。今回はサーバ編です。

とはいえ、クライアントとサーバが協調動作する仕組みですので、境界は少しあいまいです

0 0
1 348

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

前の記事では「機械学習を試せるチュートリアル:IntegratedML」で試せる内容をご紹介しましたが、この記事では Interoperability(相互運用性)チュートリアル の内容を少しご紹介します。

Interoperability(相互運用性)チュートリアルでは、Redditに新しく投稿された記事=(https://www.reddit.com/new/)を一定間隔で取得し、全投稿の中から「猫(cat)」🐈について記載されている情報のみを抽出し、対象記事をファイル出力する流れをご体験いただけます。

0 0
0 206

これは InterSystems FAQ サイトの記事です。

テーブル名/カラム名/インデックス名を変更したい場合、以下のケース別に変更方法をご案内します。

A. テーブル名・カラム名の変更
B. インデックス名の変更

-------------------------------------------------------------------------
A. テーブル名・カラム名の変更する方法
-------------------------------------------------------------------------

0 0
1 139

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

AWSのEC2インスタンス(Ubuntu 20.04を選択)にIRISをインストールした環境を事前に用意した状態からの流れですが、AWS Lambda 関数からPyODBC経由でIRISに接続するまでの流れを試してみました。

以下の流れでご紹介します。

1. レイヤーを作成する

2. Lambda関数を作成する。

3. 1,2の流れをCloudformationで行う例

例で使用しているコード一式はこちらにあります👉https://github.com/Intersystems-jp/iris-pyodbc-lambda

0 0
0 470

Visual Studio Code 用のエクステンション(拡張機能)には、その動作を構成するための多くの設定が用意されています。

設定可能な項目一覧は、こちらの VS Codeドキュメント でご紹介しています(英語のみ)。

今回は、これらの設定の中で「コンパイルフラグを変更したい場合」の例で、設定の変更方法をご案内します。
※コンパイルフラグの詳細については こちらの記事 をご覧ください。

0 0
0 352

これは InterSystems FAQ サイトの記事です。

永続クラス定義では、データを格納するグローバル変数名を初回クラスコンパイル時に決定しています。
グローバル変数名は、コンパイル後に表示されるストレージ定義(Storage)で確認できます。

例)

0 0
0 188

Windowsクライアント環境に、スタンドアロンの IRIS ODBC ドライバをインストールする際、

 Error 1918. Error installing ODBC driver InterSystems
 IRIS ODBC.35, ODBC error 13: システム エラーコード
 126: 指定されたモジュールが見つかりません。

のエラーとなりインストールに失敗する場合の対処法をご案内します。

※インストール時に以下のようなエラーが出る場合です。


***

こちらのエラーは、Windowsクライアント環境に必要なバージョンの Microsoft VC++ ランタイム ライブラリがインストールされていない場合に出力されます。

1 0
0 227

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

前の記事では、開発者向け情報を集めた「Developer Hub」をご紹介しましたが、この記事では Developer Hub のチュートリアルの中から「機械学習」をテーマとしたチュートリアル:IntegratedML についてご紹介します

InterSystems IRISには、機械学習を行うために必要なプロセスのいくつかを自動化するAutoMLの機能が組み込まれていて、機能名として「IntegratedML」と呼んでいます。機能概要については、末尾のビデオをご参照さい。

チュートリアルを始めるための準備は不要で、 ボタンをクリックするだけでチュートリアルを開始できます。

1 0
0 103

これは InterSystems FAQ サイトの記事です。

^%GCMP ユーティリティにて2つのグローバルの内容を比較することができます。

例としてUSERとSAMPLESネームスペースにある、^testと^testを比較する場合は以下のようになります。
※以下の例では、2つのネームスペースに全く同じグローバルを700個作り、その中の一つの中身を変えて検出対象としています。

1 0
0 72

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

1つ前の記事では、VSCodeのObjectScriptエクステンションに追加されたRESTサービスのデバッグツールについてご紹介しましたが、この記事では、RESTクライアントなどからHTTP要求を実行し、処理中のIRIS内プロセスにアタッチしながらデバッグを行う方法についてご紹介します。

0 0
0 418

これは InterSystems FAQ サイトの記事です。

コミュニティ版は1インスタンスでの利用を想定しているため、2インスタンス以上で設定する構成は利用できません。

製品版と異なる点は以下の通りです。

0 0
0 303

Question:

Windows環境にて、新規サーバにWebゲートウェイ(Web Gateway)をインストールしたところ「HTTP Error 503. The service is unavailable.」エラーで接続ができません。
対処法を教えてください。

Answer:

IRIS2022.1以降のバージョンでは、Visual Studio 2015 Visual C++ 再頒布可能パッケージ(64bit) のインストールが必須となりました。
IRISをインストールされているお客様は、IRISのインストール時に VC++ 2015 再頒布可能パッケージもインストールされるため気にする必要はありませんが、Webゲートウェイのみインストールされる場合は別途インストールする必要があります。

0 0
0 183

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

InterSystems デベロッパーツールコンテスト2023 の21の応募作品の中から、Experts Nomination 第4位に輝いた @Muhammad Waseem さんのiris-geo-map(インタラクティブに地図を生成し、地理データを視覚化するツール)についてご紹介します。

0 0
0 180

弊社サポートセンターに、「IRIS SQLに Oracle の RANK() 関数のようものはありませんか?」というお問い合わせいただくことがあります。

IRIS2021.1以降のバージョンであれば、RANK() や ROW_NUMBER() などの ウィンドウ関数 がサポートされるようになりましたので、以下のように使用することができます。

1 0
0 166

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

開発者向け情報を集めた「Developer Hub」ページが新たに登場しました!

このページには、4種類のチュートリアルが用意されています。チュートリアはブラウザ上で動作し、VSCodeやIRISターミナル、管理ポータルなどチュートリアルで使用するすべての画面が1つのタブ内で開くようになっています。

チュートリアルを試すための事前準備は不要で、クリック1回ですぐにお試しいただけます!(ユーザ登録も不要です)(チュートリアル開始方法は、ページ末尾をご覧ください。)

2 0
0 195

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

InterSystems デベロッパーツールコンテスト2023 の21の応募作品の中から、Experts Nomination 第3位に輝いた @Lorenzo Scalese さんの OpenAPI-SuiteOpenAPI3.0 からObjectScriptコードを生成するためのツールセット)についてご紹介します。

0 0
0 85

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

InterSystems デベロッパーツールコンテスト2023 の21の応募作品の中から、Experts Nomination 第2位に輝いた @John Murray さんの DX Jetpack for VS Code (VSCodeを使用するIRIS開発者のエクスペリエンスを向上させるツール)についてご紹介します。

0 0
0 102

長い間、私たちはクエリの結果をExcelスプレッドシートにエクスポートするユーティリティを使用してきました。 さらに、このユーティリティの修正版を適用し、この修正版では、列のフォーマットを明示的に設定することが プライオリティとなっています。

このユーティリティは %SYS.ZENReportExcelExporter というモジュールを使用し、java プログラムをベースにしています。毎年、レポートが大きくなり、十分なJava RAMがなかったので、環境変数の値を増やさなければなりませんでした。その値が7GBに達し、今、問題になっています。

0 0
0 90

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

InterSystems デベロッパーツールコンテスト2023が開催され、21の応募作品の中から勝者が発表されました🏆

この記事では、世界のIRIS開発者の皆さんから注目を集めた作品をご紹介します。

最初は、Experts Nomination 第1位に輝いた @Dmitry Maslennikov さんの作品をご紹介します!

0 0
0 129

これは InterSystems FAQ サイトの記事です。

日時検索で、TimeStamp型のクエリのパフォーマンスが出ない場合の対処法をご紹介します。

%TimeStamp データ型形式 (yyyy-mm-dd hh:mm:ss.ffff)は、人が読めることを目的とした ODBC 日付形式の文字列として格納されます。
そのため、どうしてもデータサイズが大きくなりクエリの実行に時間がかかってしまいます。
%TimeStamp型のプロパティにインデックスを作成している場合にも、クエリオプティマイザはそのインデックスを優先して最適化するようにはなっておりません。

1 0
1 278

これは InterSystems FAQ サイトの記事です。

クエリパフォーマンスを最適化するための方法の一つとして、クエリ単位またはシステム全体でクエリの並列処理を使用することができます(標準機能)。

こちらは、特定のクエリに対しマルチプロセッサシステムでクエリの実行をプロセッサ間で分割して行うものです。
並列処理の効果が得られる可能性がある場合のみ、クエリオプティマイザは並列処理を実行します。
並列処理の対象はSELECT文のみとなります。

なお、並列プロセスの数は、CPUの数に応じて自動で調整するため、数の指定は行えません。
現在のシステムのプロセッサ数は以下のコマンドで確認することができます。

1 0
0 178
記事
· 2023年1月24日 4m read
ZPM簡単実装クックブック

ZPM は、InterSystems IRIS データプラットフォーム用のアプリケーションやモジュールと連携するように設計されています。モジュールを管理するためのCLIであるZPN Clientと、モジュールやメタ情報のデータベースであるThe Registryの2つのコンポーネントで構成されています。ZPM を使用して、モジュールの検索、インストール、アップグレード、削除、公開を行うことができます。ZPMを使用すると、ObjectScriptクラス、フロントエンドアプリケーション、Interoperabilityプロダクション、IRIS BIソリューション、IRISデータセット、またはEmbedded Pythonホイールなどのあらゆるファイルをインストールできます。

今日、このクックブックは3つのセクションについて説明します。

  1. ZPMのインストール
  2. モジュールの作成
  3. Registry内のモジュールの検索、インストール、公開
0 0
0 85

これは InterSystems FAQ サイトの記事です。

システムモニタの中の「アプリケーションモニタ」を利用することで、ユーザが定義した特定の監視対象に対してチェックを行い特定の条件に合致した場合に通知を行ったり、メッセージログ(コンソールログ)に情報を出力したり、ユーザが定義するアクションを指定できます。

<メモ>
アプリケーションモニタはインストールにより準備されますが、ユーザが付属のアプリケーション・モニタ・クラスを有効化するまで動作しないモニタです。
付属のアプリケーションモニタには、監査のカウントやイベント詳細を収集するもの、ディスクの容量を監視するものなどが含まれます。

0 0
0 132

複数のインスタンス間でライセンスを共有する際に、ライセンスサーバを立ててライセンスの使用量を管理します。
IRISライセンスサーバには、ライセンスの使用量管理に加えて便利な新しい機能が追加されました。

-- ライセンスサーバでできること --
1. マルチサーバライセンス(共有ライセンス)の統合管理(使用量の管理)
2. 各インスタンスへのライセンスキーの配布・管理【New】


1 は従来からのライセンスサーバの機能で、関連記事 にて機能紹介をしております。

2 はIRIS以降使用できるようになった新しい機能です。

0 0
0 191

これは InterSystems FAQ サイトの記事です。

複数インスタンスでライセンスを共有する場合、ライセンスを統合管理するライセンスサーバの設定が必要です。

1. ライセンスサーバの構成


1) ライセンスキーの配置

ライセンスキー(IRIS.key/cache.key)は、すべての インスタンスの <インストールディレクトリ>/mgr に配置してください。

ただし、IRIS 2021.1 以降のバージョンをお使いの場合は KeyDirectory を指定することで全てのインスタンスへのライセンスキーの配置は必要なくなります。

0 0
0 334

Question:

IRISでは、PostgreSQLやMySQLで使うことができる、開始位置や取得件数を指定する OFFSET句やLIMIT句をサポートしているでしょうか?


Answer:

残念ながらサポートしていません。
ただ、代わりに使える同様の方法がありますのでご紹介します。

以下のようなSQLクエリをIRIS SQLで行うとします。

0 0
0 240

これは InterSystems FAQ サイトの記事です。

InterSystems IRIS では、管理ポータルの
 [システムエクスプローラ] > [SQL] : ウィザード > リンクテーブル
で行うリンクテーブルの作成をコマンドで行うことが可能です。

リンクテーブルの作成には、%SYSTEM.SQL.Schema クラスの CreateLinkedTable メソッドを使用します。
詳細は、クラスリファレンスをご覧ください。

実行は以下のように行います。

0 0
0 224

これは InterSystems FAQ サイトの記事です。

Question:

IRISという製品名を選んだのはなぜですか?

Answer:

IRISは、インターシステムズの製品開発者がソフトウェアを開発する際に常に念頭に置くべき以下の4つの原則の先頭文字を表しています。

0 0
1 137