WildFlyのセキュリティドメインとセキュリティレルムの主な違いは何ですか?
standalone.xml
<security-domain name="foo">
<authentication>
<login-module code="..." flag="...">
</login-module>
</authentication>
</security-domain>
そして
<security-realm name="foo">
<authentication>
<local default-user="..." allowed-users="..."
skip-group-loading="..."/>
<properties path="..." relative-to="..."/>
</authentication>
<authorization>
<properties path="..." relative-to="..."/>
</authorization>
</security-realm>
WildFly Elytronの命名を反映するように回答が更新されました(2018-06-08)。 WildFly Elytronは、WildFly 11(およびJBoss EAP 7.1)で導入された新しいセキュリティサブシステムです。両方のセキュリティサブシステム(レガシーサブシステムとElytron)には、セキュリティドメインとセキュリティレルムの概念がありますが、意味は異なります。
セキュリティドメインは、主にデプロイされたアプリケーションのセキュリティを定義するために使用されます。セキュリティドメインの標準認証は、 [〜#〜] jaas [〜#〜]javax.security.auth.spi.LoginModule
の実装に基づいています。アプリケーションは、カスタムログインモジュールを思い付くことができます。
Security Realmsは、主にサーバー管理インターフェイスの構成セキュリティとリモート処理に使用されます。レルム認証は、提供されているjavax.security.auth.callback.CallbackHandler
の実装に基づいています。 AFAIK独自のCallbackHandler実装を提供することはできません。
セキュリティドメインは、"RealmDirect"ログインモジュールを使用して、認証をセキュリティレルムに委任できます。
セキュリティレルムは、"jaas"認証構成を使用して、認証をセキュリティドメインに委任できます。
参照 この応答 JBossセキュリティ開発者のDarranLofthouseによる。
セキュリティレルムユーザーリポジトリへのアクセスをカプセル化します(DB-jdbc-レルム、LDAP-ldap-レルム、プロパティファイル-プロパティ-レルムなど)。レガシーセキュリティと比較すると、JAASログインモジュールと同様のレベルです。カスタムレルムを実装できるようにAPIが提供されています。
セキュリティドメインは、認証にセキュリティレルムを使用するセキュリティポリシーを表します。セキュリティドメインは、アプリケーションセキュリティだけでなく管理セキュリティでも使用できます。セキュリティドメインに対する認証が成功すると、現在のユーザーを表すSecurityIdentity
が生成されます。
Elytronコンポーネントのより詳細な概要を取得するには、JBoss EAPドキュメントの Elytronサブシステム の章をお読みください。
Elytronセキュリティドメインでの認証フローの制御の詳細については、Darran Lofthouseの この記事 を参照してください。
レガシーセキュリティからElytronセキュリティに移行する場合は、レガシーセキュリティドメインをElytronセキュリティレルムとして公開できます。このシナリオの詳細については、Elytronサブシステムをご覧ください 移行ガイド