問題
- 問題は、Liferay Portal 6.2 が NTLM と NTLMv2 をサポートしているかどうかです。
Environment
- Liferay ポータル 6.2
解決策
- Liferay Portal 6.2 で使用されるライブラリは、NTLM と NTLMv2 の両方をサポートします
- クライアントで LMCompatibility を制御するために portal-ext.properties に設定できるプロパティがあります ( NtlmFilter はそれをロードしてを適用します):
jcifs.smb.lmCompatibility
Java CIFS クライアント ライブラリのドキュメント ( あまり使用されないプロパティ セクションの下) を参照してください。このクライアントは、NTLM および LMv2 認証を実行できます。 デフォルトの動作では、NTLM バージョン 1 が使用されます。 これは、セキュリティの「レベル」を指定する整数でこのプロパティを使用することによって変更できます。
- 0,1 – LM および NTLM 応答を送信します。 これがデフォルトの動作です。
- 2 – NTLM 応答のみを送信します。 これは、暗号的に弱い LM 応答を排除するため、レベル 0 および 1 よりも安全です。
- 3,4,5 – LMv2 応答のみを送信します。 これにより、より高いレベルのセキュリティが提供されます。
これらの値は、同じ目的で使用される Windows レジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa で使用される値を反映しています。 これらの認証メカニズムの技術的な説明については、 The NTLM Authentication Protocol というタイトルのページを参照してください。
古いバージョンの Samba (3.0.x) では未加工の NTLMSSP をサポートしておらず、現在 JCIFS は SPNEGO をサポートしていないように見えるため、これを 0 に設定する必要があります。
-
http://davenport.sourceforge.net/ntlm.html#ntlmVersion2によると、このプロパティ設定はまったく必要ない場合があります。
(...) すべてのレベルで、NTLM2 セッション セキュリティがサポートされ、利用可能な場合はネゴシエートされます (利用可能なドキュメントのほとんどは、NTLM2 セッション セキュリティがレベル 1 以上でのみ有効になっていることを示していますが、実際にはレベル 0 でも見られます) (...)
追加情報
- 上記を考慮すると、推奨される方法は NTLM の代わりに Kerberos を使用することです。
- Java CIFS クライアント ライブラリのドキュメント
- NTLM 認証プロトコル