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-selectorauthentication-configuration を使用する例は、Configuring SSL or TLS with elytronに記載されています。

  • Elytron Client の場合、通常 wildfly-config.xml という名前のクライアント設定ファイルの authentication-configurationsconfiguration 要素の下に指定されます。以下に例を示します。

    <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 &verbar;&verbar; 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-configurationsconfiguration 要素で指定されます。以下に例を示します。

      ...
      <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 認証メカニズムプロパティーは、認証メカニズムリファンレンス にリスト表示されています。