1.7. SASL の認証メカニズム
Simple Authentication and Security Layer (SASL) 認証メカニズムは、elytron
サブシステムを使用して JBoss EAP サーバーへの接続を認証するメカニズムと、サーバーに接続するクライアントを定義するために使用されます。クライアントとは、他の JBoss EAP インスタンスまたは Elytron クライアントが考えられます。JBoss EAP の SASL 認証メカニズムは、remoting サブシステムとの Elytron 統合 でも大幅に使用されます。
1.7.1. SASL 認証メカニズムの選択
JBoss EAP および Elytron クライアントは、さまざまな SASL 認証メカニズムと連携しますが、使用するメカニズムをサポートする必要があります。SASL 認証メカニズムのサポートレベルのリスト 参照してください。
使用する認証メカニズムは、お使いの環境と認証方法によって異なります。以下のリストは、対応している SASL 認証メカニズム の一部の使用をまとめています。
ANONYMOUS
- 認証されていないゲストアクセス。
DIGEST-MD5
- HTTP ダイジェスト認証を SASL メカニズムとして使用します。
EXTERNAL
- 要求のコンテキストで暗示される認証クレデンシャルを使用します。たとえば、IPsec または TLS 認証などです。
GS
で始まるメカニズム- Kerberos を使用した認証。
JBOSS-LOCAL-USER
- JBoss EAP サーバーを実行しているローカルユーザーと同じファイルアクセスがあることをクライアントがテストして認証を提供します。これは、同じマシンで実行されている他の JBoss EAP インスタンスで便利です。
OAUTHBEARER
- OAuth が提供する認証を SASL メカニズムとして使用します。
PLAIN
- プレーンテキストのユーザー名およびパスワード認証。
SCRAM
で始まるメカニズム- 指定されたハッシュ関数を使用する SCRAM (Salted Challenge Response Authentication Mechanism)
-PLUS
で終わるメカニズム- 特定の認証メカニズムのチャネルバインディングのバリアントを示します。基礎となる接続が SSL/TLS を使用する場合は、これらのバリアントを使用する必要があります。
個別の SASL 認証メカニズムの詳細は、IANA SASL mechanism list and individual mechanism memos を参照してください。
1.7.2. サーバー側での SASL 認証メカニズムの設定
サーバー側での SASL 認証メカニズムの設定は、SASL 認証ファクトリーを使用して行われます。
必要な設定には、以下の 2 つのレベルがあります。
-
認証メカニズムを指定する
sasl-authentication-factory
。 -
1 つ異常の
sasl-authentication-factory
を集約し、メカニズムプロパティーを設定してオプションでフィルターを適用し、特定の認証メカニズムの有効化または無効化を行うconfigurable-sasl-server-factory
。
以下の例は、新しい configurable-sasl-server-factory
の作成、アプリケーションクライアントの SASL 認証メカニズムとして DIGEST-MD5 を使用する sasl-authentication-factory
の作成のデモンストレーションを行っています。
/subsystem=elytron/configurable-sasl-server-factory=mySASLServerFactory:add(sasl-server-factory=elytron) /subsystem=elytron/sasl-authentication-factory=mySASLAuthFactory:add(sasl-server-factory=mySASLServerFactory,security-domain=ApplicationDomain,mechanism-configurations=[{mechanism-name=DIGEST-MD5,mechanism-realm-configurations=[{realm-name=ApplicationRealm}]}])
1.7.3. クライアント側での SASL 認証メカニズムの指定
クライアントで使用される sasl 認証メカニズムは sasl-mechanism-selector
で指定されます。クライアントが接続しているサーバーによって公開される、対応の SASL 認証メカニズムをすべて指定できます。
sasl-mechanism-selector
は、認証が設定されている Elytron 設定で定義されます。
elytron
サブシステムでは、これはauthentication-configuration
の属性です。以下に例を示します。/subsystem=elytron/authentication-configuration=myAuthConfig:write-attribute(name=sasl-mechanism-selector,value="DIGEST-MD5")
sasl-mechanism-selector
とauthentication-configuration
を使用する例は、Configuring SSL or TLS withelytron
に記載されています。Elytron Client の場合、通常
wildfly-config.xml
という名前のクライアント設定ファイルのauthentication-configurations
のconfiguration
要素の下に指定されます。以下に例を示します。<configuration> <authentication-client xmlns="urn:elytron:client:1.2"> <authentication-rules> <rule use-configuration="default" /> </authentication-rules> <authentication-configurations> <configuration name="default"> <sasl-mechanism-selector selector="#ALL" /> ... </configuration> </authentication-configurations> </authentication-client> </configuration>
Elytron クライアントを使用したクライアント認証の設定 に関する詳細は、アイデンティティー管理の設定方法 を参照してください。
sasl-mechanism-selector
Grammar
sasl-mechanism-selector
のセレクター文字列には特定の文法があります。
単純な形式では、個別のメカニズムを指定する場合は、その名前をスペースで区切って指定します。たとえば、DIGEST-MD5、SCRAM-SHA-1、および SCRAM-SHA-256 を許可された認証として指定する場合は、文字列 DIGEST-MD5 SCRAM-SHA-1 SCRAM-SHA-256
を使用します。
文法の高度な使用方法は、以下の特別なトークンを使用できます。
-
#ALL
: すべてのメカニズム。 -
#FAMILY(NAME)
: 指定したメカニズムファミリーに属するメカニズム。たとえば、ファミリーは DIGEST、EAP、GS2、SCRAM、または IEC-ISO-9798 のいずれかになります。 -
#PLUS
: チャネルバインディングを使用するメカニズム。たとえば、SCRAM-SHA-XXX-PLUS または GS2- を-PLUS とします。 -
#MUTUAL
: サーバーを認証するメカニズム。たとえば、サーバーがパスワードを認識していることを証明します。#MUTUAL
には、#FAMILY(SCRAM)
や#FAMILY(GS2)
といったファミリーが含まれます。 -
#HASH(ALGORITHM)
: 指定されたハッシュアルゴリズムを使用するメカニズム。たとえば、アルゴリズムは MD5、SHA-1、SHA-256、SHA-384、SHA-512 などにすることができます。
上記のトークンと名前は、以下の操作および述語でも使用できます。
-
-
: 禁止 -
!
: 反転 -
&&
: および -
||
: または -
==
: 等号 -
?
: If -
#TLS
: は、TLS がアクティブであれば true となり、それ以外では false となります。
以下は、sasl-mechanism-selector
文字列およびその意味の例です。
-
#TLS && !#MUTUAL
: TLS がアクティブは、相互認証なしのすべてのメカニズム。 -
#ALL -ANONYMOUS
: ANONYMOUS を除くすべてのメカニズム -
SCRAM-SHA-1 SCRAM-SHA-256
: 2 つのメカニズムをその順序で追加。 -
(SCRAM-SHA-1 || SCRAM-SHA-256)
: プロバイダーまたはサーバーが提示する順序でメカニズムを 2 つ追加します。 -
!#HASH(MD5)
: MD5 ハッシュアルゴリズムを使用しないメカニズム。 -
#FAMILY(DIGEST)
: 任意のダイジェストメカニズム。
1.7.4. SASL 認証メカニズムプロパティーの設定
サーバーおよびクライアント側の両方で認証方法のプロパティーを設定できます。
サーバー側では、
configurable-sasl-server-factory
で認証方法プロパティーを定義します。以下の例は、com.sun.security.sasl.digest.utf8
プロパティーの値をfalse
で定義します。/subsystem=elytron/configurable-sasl-server-factory=mySASLServerFactory:map-put(name=properties,key=com.sun.security.sasl.digest.utf8,value=false)
クライアント側では、クライアントの認証設定で認証メカニズムプロパティーを定義します。
elytron
サブシステムでは、認証メカニズムプロパティーをauthentication-configuration
に定義します。以下の例は、true
の値でwildfly.sasl.local-user. valueFrom-auth
プロパティーを定義します。/subsystem=elytron/authentication-configuration=myAuthConfig:map-put(name=mechanism-properties,key=wildfly.sasl.local-user.quiet-auth,value=true)
Elytron Client の場合、認証メカニズムプロパティーは通常、
wildfly-config.xml
という名前のクライアント設定ファイルのauthentication-configurations
のconfiguration
要素で指定されます。以下に例を示します。... <authentication-configurations> <configuration name="default"> <sasl-mechanism-selector selector="#ALL" /> <set-mechanism-properties> <property key="wildfly.sasl.local-user.quiet-auth" value="true" /> </set-mechanism-properties> ... </configuration> </authentication-configurations> ...
Java ドキュメンテーションの標準 Java SASL 認証メカニズムプロパティー のリストを表示できます。その他の JBoss EAP 固有の SASL 認証メカニズムプロパティーは、認証メカニズムリファンレンス にリスト表示されています。