【JPIERE-0446】SAMLによるシングルサインオン(SSO)

SAML(Security Assertion Markup Language)を使ったシングルサインオン(SSO)です。

この機能はJPiereサポーター特典です。

JPiereサポーターになる事で、SAMLによるシングルサインオン(SSO)の機能を無料で使用する事ができます。

機能概要

SP-initiated と IdP-initiated に対応しています。

SAML Requestはリダイレクトバインディンのみに対応しています。

SAML Responseはポストバインディングのみに対応しています。

XML署名

◆SAML Requestへの署名

SP-Initiatedにおいて、IdPに送信するSAML Requestには署名はしません。

◆SAML Responseの署名

SAML Requestに署名がされている場合は検証します。SAML Responseへの署名は任意です。

◆Assertionの署名

Assertionに署名がされている場合は検証します。Assertionへの署名は任意です。

 

XML署名のアルゴリズム

XML署名には次のアルゴリズムの組み合わせを使用する事ができます。

  • RSA & SHA-1
  • RSA & SHA-256
  • RSA & SHA-512

 

ユーザーの識別とログイン処理

SAML ResponseのNameIDタグの情報にユーザーを識別します。JPiere/iDempiereのログイン処理に必要な、職責や組織などの情報は、前回ログインした情報を参照して行います。前回ログインした情報が無い場合は、ログイン画面の職責選択画面に遷移します。

カスタマイズ履歴

2024年4月4日(v9):KeyValueが無い場合の対応

 2024年3月2日にv10に実装したKeyValueが無くてもSSOができるようにする修正をver9にも適用しました。

2024年3月2日(v10):KeyValueが無い場合の対応

 KeyCloakがKeyValueが無いXMLを送信するようになった様子なので、KeyValueが無くてもSSOができるように修正しました。

 KeyCloakを使用されている方はシステムコンフィグ設定に「JP_SAML_IGNORE_SIGNATURE_VALIDATE_EXCEPTION」を追加して、値に"Y"を設定して下さい。※コンフィグレベルは「テナント」にして下さい。

2021年4月30日:SAMLでログイン直後のズーム処理の改善

SAMLでログイン直後のズーム処理において、これまでのリファラーでの処理がブラウザのリファラーの取り扱いが変更されたのに伴い使用できなくなっています。そのため、SP Initiatedにおいて最初にアクセスしてきたURLにズームの情報を含めておくことで、IdP認証後に、ズームできるように改善しました。

(例)

https://localhost/webui/saml.zul?client=oes&Action=Zoom&AD_Table_ID=291&Record_ID=1000011;

のようにSP initiatedで最初にアクセスするとセッションと一緒にズームに必要はテーブルIDとレコードIDを記録します。そして、IdP側で認証後に、その情報を使ってログイン直後に当該レコードにズームします。

2020年11月30日:セッションタイムアウトの設定

 SAMLでログイン処理したセッションにおいて、システムコンフィグ設定のZK_SESSION_TIMEOUT_IN_SECONDSの値を反映して、セッションがタイムアウトになる時間を設定できるようにしました。

2020年1月16日:ログイン直後のズーム処理について

ログイン時の処理において、リクエストのリファラーのURLの情報を参照して、ログイン後に表示する画面遷移(Zoom)を制御できるようにしました。

->リファラーの情報でAction=Zoom&AD_Table_ID=XXXXXXX&Record_ID=XXXXXXXがある場合に、この情報を使用して、そのレコードにズームする仕様です。

2019年12月14日

ライブラリを格納しているlibフォルダを、プラグインプロジェクトの直下からWEB-INFフォルダの配下に移動しました。