2017-11-14 13 views
1

カフカは、いくつかの認証メカニズムを使用するように設定することができます。最初の2つはJAAS設定ファイルが必要なSASLを使用します。プレーンテキスト認証方法についてはは、LDAPをサポートするために、カスタムのLoginModuleとカフカを提供することができますか?平文のユーザー名/パスワード、KerberosまたはSSL:

documentationから取られた)のように、設定が見えます:

KafkaServer { 
    org.apache.kafka.common.security.plain.PlainLoginModule required 
    username="admin" 
    password="admin-secret" 
    user_admin="admin-secret" 
    user_alice="alice-secret"; 
}; 

私は、可能な場合、LDAPを使用して認証します。私の質問はこれです:私はLoginModuleを実装し、ブローカーのクラスパスにこのクラスを置くクラスにPlainLoginModuleを交換した場合、私は(つまりLDAP)を望む任意の方法で認証を実装することができますか?

私は、その原理は、私が働いている組織内で定義されている方法の合理的な方法でKerberosを使用することはできません

は、それゆえ私はRBACをサポートする必要があるとして、LDAPを使用したいです。

答えて

2

はい、あなたはLoginModuleを実装するカスタムクラスでカフカを提供し、あなたがそれにしたい認証ロジックを持つことができます。

その後、あなたのクラス名とJAASファイルを更新し、それをクラスパスにあることを確認します。

すべての設定を正しく行うには、定型コードを入力する必要がありますが、PlainLoginModule,PlainSaslServerProviderPlainSaslServerFactoryPlainSaslServerを例として使用できます。

LoginModuleクラスはPlainLoginModuleと同じロジックである必要がありますが、代わりにProvider実装を(静的ブロック内で)初期化してください。

ProviderクラスのロジックはPlainSaslServerProviderと同じですが、代わりにSaslServerFactoryの実装を参照してください。

あなたのSaslFactoryクラスは、PlainSaslServerFactoryと同じロジックを持ちますが、SaslServer実装のインスタンスを作成する必要があります。

最後に、SaslServerクラスは、evaluateResponse()メソッドで必要なLDAPロジックを実装する必要があります。 を正しく設定すると、これがユーザープリンシパルになり、completetruePlainSaslServer.evaluateResponse()のように)を設定します。

+0

これはどこで実施されていますか? – John

+0

残念ながら私は共有できる例はありませんが、すべてを設定する方法の詳細が追加されました。あなたはいくつかのクラスを定義する必要がありますが、ほとんどロジックを持たないスカフォールディングです。 –

+0

本当にありがとうございます - PlainSaslServerがPlainLoginModuleへの依存関係をハードコーディングし、失敗した認証エラーを得る困難な方法を学んだので、LoginModuleだけでなく、これらのクラスをすべて実装する必要があることを記録することは良いことですDEBUGを有効にしない限り、バージョン John

関連する問題