今日のひとこと Challange IT For Future

 FessのMicrosoft Entra ID対応

Fess 読了 3分
目次
  1. Azure ADからEntra IDへの名称変更
  2. クラス名の変更
  3. 設定キーの変更
  4. 後方互換性
  5. 親グループの遅延読み込み
  6. 動作の仕組み
  7. スレッドセーフティの改善
  8. 詳細

MicrosoftがAzure Active Directory (Azure AD)をMicrosoft Entra IDにリブランディングしたことに伴い、Fess 15.4では命名規則を新しいブランドに合わせて変更しました。また、ネストしたグループメンバーシップを持つユーザーのログイン遅延を解消するため、親グループの遅延読み込み機能を実装しました。

Azure ADからEntra IDへの名称変更

以下のクラス名と設定キーが変更されました。

クラス名の変更

旧クラス名新クラス名
AzureAdCredentialEntraIdCredential
AzureAdAuthenticatorEntraIdAuthenticator
AzureAdUserEntraIdUser

設定キーの変更

設定キーはaad.*からentraid.*に変更されました。

# 旧設定
sso.type=aad
aad.tenant=<tenant_name>.onmicrosoft.com
aad.client.id=...
aad.client.secret=...

# 新設定
sso.type=entraid
entraid.tenant=<tenant_name>.onmicrosoft.com
entraid.client.id=...
entraid.client.secret=...

後方互換性

既存のaad.*設定キーは引き続き動作するように後方互換性が維持されています。SSOタイプとしてaadを指定した場合も、内部的にentraidとして処理されます。既存の設定を変更する必要はありませんが、新規設定ではentraid.*の使用を推奨します。

親グループの遅延読み込み

Entra IDでは、ユーザーが複数のネストしたグループに所属している場合、ログイン時にすべてのグループ情報を取得するのに時間がかかることがありました。この問題を解消するため、親グループの取得を非同期で行う遅延読み込み機能を実装しました。

動作の仕組み

  1. ログイン時: ユーザーの直接所属グループのみを同期的に取得
  2. ログイン後: 親グループ(ネストしたグループ)をバックグラウンドで非同期取得
  3. 取得完了時: パーミッションを再計算して更新

この改善により、多くのネストしたグループメンバーシップを持つユーザーでもログインが高速化されます。

スレッドセーフティの改善

非同期処理に対応するため、EntraIdUserクラスには以下のスレッドセーフティ改善が行われました。

  • groups、roles、permissionsフィールドにvolatile修飾子を追加
  • setGroups()、setRoles()メソッドをsynchronizedに変更
  • 非同期更新後にパーミッション再計算を行うresetPermissions()メソッドを追加

詳細

詳細は以下のPRを参照してください。

  • PR #2976 – Rename Azure AD to Microsoft Entra ID
  • PR #2977 – Add lazy loading for parent group lookup in EntraIdAuthenticator