0

LDAP認証にSpringSecurityを使用しているカスタムGrailsアプリケーションがあります。ユーザーDNにはカンマが含まれていますが(例: "CN = Smith \、John、CN = Users、DC = example、DC = com")、管理者ユーザーのDNには含まれていません(例: "CN = peadmin、CN = Users、DC = example、DC = com ")。基本的にTomcatであるGrailsサーバーからアプリケーションを実行すると、すべてが正常に認証されます。WARを構築してWebSphereAS7にデプロイする場合、ログインできるのはadminユーザーのみです。ログの例外は、予期しないコンマについて文句を言います。これは、WASで実行しているときに、アプリケーションがDNを適切に解析/エスケープしていないことを示しています。

Spring Security 3.0.4にアップグレードした後、次のような特定の例外メッセージが表示されます。

2011-04-07 20:58:41,975 [WebContainer:0]エラーcontroller.LoginController-org.springframework.security.authentication.AuthenticationServiceException:DNの解析に失敗しました。ネストされた例外はorg.springframework.ldap.core.ParseExceptionです:行1、列20で ""が発生しました。予期していたもの:..。

4

1 に答える 1

0

まずは火遊びです。DN はユーザーの安定した属性ではないため、DN を何かの基礎として使用することは決してありません。つまり、すぐに壊れます。ツリー内でユーザーを移動します。AD では samAccountName を使用し、TDS (および残りのほとんど) では uid を使用する必要があります。これは現在の問題の原因ではありませんが、それが実際のアプリケーションであり、作業を続けたい場合は、変更を開始してください。そうしないと、後で後悔することになります。

第 2 に、LDAP クエリで特別な文字であるコンマを使用することを主張する場合は、RFC 2254 に従って自分でエスケープする必要があります。Tomcat はユーザーを返すときにこれを行いますが、WAS は行いません。

于 2011-04-08T21:17:21.503 に答える