2.6.2. Elytron 認証プロセス
複数のプリンシパルトランスフォーマー、レルムマッパー、およびプリンシパルデコーダーは、elytron
サブシステム内に定義できます。以下のセクションでは、認証プロセス中にこれらのコンポーネントどのように機能するかを説明し、さらにプリンシパルが適切なセキュリティーレルムにマップされる方法についても説明します。
プリンシパルが認証されると、以下の手順が順番に実行されます。
- 適切なメカニズムの設定が判断および設定されます。
-
受信プリンシパルが
SecurityIdentity
へマップされます。 -
適切なセキュリティーレルムを判断するため、この
SecurityIdentity
が使用されます。 - セキュリティーレルムが特定された後にプリンシパルが再度変換されます。
- メカニズム固有の変換を可能にするため、最終の変換が 1 度発生します。
以下の図は上記の手順を表しています。 左側の緑の部分は各手順を示し、右側は各段階で使用されるコンポーネントを表しています。
図2.1 Elytron 認証プロセス

レルムの前のマッピング
レルムの前のマッピングが行われる間、認証されたプリンシパルは SecurityIdentity
にマップされます。SecurityIdentity は使用されるセキュリティーレルムを特定できるフォームで、認証された情報を表す単一の Principal
を含みます。プリンシパルトランスフォーマーとプリンシパルデコーダーは次の順番で呼び出されます。
-
メカニズムレルム -
pre-realm-principal-transformer
-
メカニズム設定 -
pre-realm-principal-transformer
-
セキュリティードメイン -
principal-decoder
およびpre-realm-principal-transformer
この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。
図2.2 レルムの前のマッピング

レルム名マッピング
マップされたプリンシパルが取得されると、アイデンティティーのロードに使用されるセキュリティーレルムが特定されます。この時点では、レルム名はセキュリティードメインによって参照され、セキュリティーレルムによって定義される名前で、メカニズムレルム名ではありません。設定は、セキュリティーレルム名を次の順序で検索します。
-
メカニズムレルム -
realm-mapper
-
メカニズム設定-
realm-mapper
-
セキュリティードメイン -
realm-mapper
RealmMapper
が null を返す場合や、利用できるマッパーがない場合、セキュリティードメインの default-realm
が使用されます。
図2.3 レルム名マッピング

レルムの後のマッピング
レルムの特定後、プリンシパルに対して次の変換が実行されます。変換は次の順番で呼び出しされます。
-
メカニズムレルム -
post-realm-principal-transformer
-
メカニズム設定 -
post-realm-principal-transformer
-
セキュリティードメイン -
post-realm-principal-transformer
この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。
図2.4 レルムの後のマッピング

最終のプリンシパル変換
最後に、メカニズム固有の変換がドメイン固有の変換の前および後に適用されるようにするため、最後のプリンシパル変換が発生します。これが必要でない場合、レルムの後のマッピング の段階で同じ結果が得られます。変換は次の順番で呼び出しされます。
-
メカニズムレルム -
final-principal-transformer
-
メカニズム設定 -
final-principal-transformer
-
レルムマッピング -
principal-transformer
この手順によって null プリンシパルが発生した場合、エラーが発生し、認証は強制終了されます。
図2.5 最終のプリンシパル変換

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