2.6.2. Elytron 認証プロセス

複数のプリンシパルトランスフォーマー、レルムマッパー、およびプリンシパルデコーダーは、elytron サブシステム内に定義できます。以下のセクションでは、認証プロセス中にこれらのコンポーネントどのように機能するかを説明し、さらにプリンシパルが適切なセキュリティーレルムにマップされる方法についても説明します。

プリンシパルが認証されると、以下の手順が順番に実行されます。

  1. 適切なメカニズムの設定が判断および設定されます。
  2. 受信プリンシパルが SecurityIdentity へマップされます。
  3. 適切なセキュリティーレルムを判断するため、この SecurityIdentity が使用されます。
  4. セキュリティーレルムが特定された後にプリンシパルが再度変換されます。
  5. メカニズム固有の変換を可能にするため、最終の変換が 1 度発生します。

以下の図は上記の手順を表しています。 左側の緑の部分は各手順を示し、右側は各段階で使用されるコンポーネントを表しています。

図2.1 Elytron 認証プロセス

Elytron Authentication Process
レルムの前のマッピング

レルムの前のマッピングが行われる間、認証されたプリンシパルは SecurityIdentity にマップされます。SecurityIdentity は使用されるセキュリティーレルムを特定できるフォームで、認証された情報を表す単一の Principal を含みます。プリンシパルトランスフォーマーとプリンシパルデコーダーは次の順番で呼び出されます。

  1. メカニズムレルム - pre-realm-principal-transformer
  2. メカニズム設定 - pre-realm-principal-transformer
  3. セキュリティードメイン - principal-decoder および pre-realm-principal-transformer

この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。

図2.2 レルムの前のマッピング

Pre-realm Mapping
レルム名マッピング

マップされたプリンシパルが取得されると、アイデンティティーのロードに使用されるセキュリティーレルムが特定されます。この時点では、レルム名はセキュリティードメインによって参照され、セキュリティーレルムによって定義される名前で、メカニズムレルム名ではありません。設定は、セキュリティーレルム名を次の順序で検索します。

  1. メカニズムレルム - realm-mapper
  2. メカニズム設定- realm-mapper
  3. セキュリティードメイン - realm-mapper

RealmMapper が null を返す場合や、利用できるマッパーがない場合、セキュリティードメインの default-realm が使用されます。

図2.3 レルム名マッピング

Realm Name Mapping
レルムの後のマッピング

レルムの特定後、プリンシパルに対して次の変換が実行されます。変換は次の順番で呼び出しされます。

  1. メカニズムレルム - post-realm-principal-transformer
  2. メカニズム設定 - post-realm-principal-transformer
  3. セキュリティードメイン - post-realm-principal-transformer

この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。

図2.4 レルムの後のマッピング

Post-realm Mapping
最終のプリンシパル変換

最後に、メカニズム固有の変換がドメイン固有の変換の前および後に適用されるようにするため、最後のプリンシパル変換が発生します。これが必要でない場合、レルムの後のマッピング の段階で同じ結果が得られます。変換は次の順番で呼び出しされます。

  1. メカニズムレルム - final-principal-transformer
  2. メカニズム設定 - final-principal-transformer
  3. レルムマッピング - principal-transformer

この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。

図2.5 最終のプリンシパル変換

Final Principal Transformation
レルムアイデンティティーの取得

最終のプリンシパル変換の後、認証の継続に使用されるレルムアイデンティティーを取得するため、レルム名マッピング で特定されたセキュリティーレルムが呼び出しされます。