問題タブ [spring-security-ldap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 属性値のパターンを取得できる LdapUserDetailsMapper を作成するにはどうすればよいですか?
などの追加のプロパティを含むLdapUserDetailsMapper
カスタム クラスに拡張プロパティをマップするカスタム クラスを作成しました。に対してプロパティにアクセスすることにより、これらのプロパティを設定することができました。UserDetails
displayName
telephoneNumber
department
DirContextOperation
ただし、これをハードコーディングしたくはありません。これらのプロパティを構成可能にしたいと考えています。これは問題ありませんが、LDAP 式を使用して、その式の結果の値を返すことも必要です。つまり、
もちろん、これは機能しません。手動でパターンを解析し、連結の前にコンポーネントを取得することもできますが、これは、フレームワークが既に提供できる作業のように思えます。
java - spring security ldap で基本認証を無効にする
ログインフォームを使用して基本的な spring-security-ldap 認証を設定しようとしていますが、ログインしようとすると、ログインを許可しない http-basic ポップアップが表示されます。
私のsecurity.xml:
web.xml から:
これはリファクタリング ジョブの一部であり、リファクタリング前のデプロイ済みバージョンと比較すると、URL(server):(port)/(webapproot)/j_security_check
は利用できませんが、リファクタリング後に利用可能になり、基本的なログイン ボックスが表示されます。ログインページからログインしようとしています。
ログインボックスからログインしようとすると、サーバーログに次のスタックトレースが記録されます:
基本ログインを無効にするにはどうすればよいですか? LDAP サーバーに対して認証を行うために何が欠けていますか?
アップデート:
GlassFish のセキュリティ レルムを ldap-realm に変更し、古い GlassFish サーバーにそのままセットアップしました。また、グラスフィッシュの「セキュリティマネージャー」を無効にしました。今でも追加のポップアップ ログイン ボックスが表示されますが、スタック トレースの見栄えは良くなります。
しかし、glassfish のセキュリティ メカニズムをすべて無効にして、Spring のセキュリティ メカニズムだけに頼るにはどうすればよいでしょうか。
更新 #2: 犯人が見つかりました。これは、glassfish インストールの default-web.xml にありました。
それを削除し、ログインボックスはもうありません:)次の問題に進みます:p
login - 春のセキュリティ; custom-filterとuser-service-refが連携していない
カスタムフィルターを使用してSpringセキュリティ認証を実装しようとしています。
security.xml
CustomUserDetailsService
}
MyAuthenticationEntryPoint
MyAuthenticationSuccessHandler
MyAuthenticationFailureHandler
ログインしようとすると、CustomUserDetailsServiceが表示され、データベースからユーザーの詳細を正常に取得できます。
ただし、資格情報が正しいかどうかに関係なく、常にauthenticationFailureHandlerにアクセスします。(INFO : com.my.org.MyAuthenticationFailureHandler - point-3
)
誰かがこれについて私を助けてくれますか?ありがとう
grails - Grails で Spring Security によって作成された PERSON テーブルと LDAP ユーザーを統合する方法は?
ユーザーが Active Directory 資格情報を使用してログインできるようにする grails アプリケーションを作成しています。さらに、このアプリケーションのビジネス オーナーが特定のリンク (アクション) にアクセスできるユーザーを制御できるようにしたいと考えています。このため、grails アプリケーションで次のプラグインを使用しています。
- Spring セキュリティ コア
- Spring セキュリティ LDAP
- Spring セキュリティ UI
ビジネス ユーザーが必要に応じて特定の権限 (アクション) を持つカスタマイズされたロールをその場で作成できるようにしたいので、最適な Spring セキュリティ構成はRequestmap データベース ベースのアプローチであると考えています。
これまでのところ、次のように達成しています。
- Active Directory に対して正常に認証できています。
- spring-security-ui プラグインの UI インターフェースを介して、さまざまなロール (ROLE_XXX) に対してさまざまなリクエスト マッピングを作成することもできました。
問題/質問
spring-security-core プラグインは、次のテーブルを作成しました。
- 人
- 権限
- PERSON_AUTHORITY
- リクエストマップ
これらは、ロールの作成、ロールへの URL の割り当てをサポートするテーブルです。ただし、慣例名としての Person_Authoritity テーブルは、PERSON と AUTHORITY (ROLE) の間の多対多の関係であることを暗示しています。私の問題は、人物が既に Active Directory (外部ソース) に存在し、アプリケーションで作成されていないため、人物がないことです。
認証されたユーザーを PERSON にする方法はありますか? 春のセキュリティ ソリューションでは、Person 行またはオブジェクトが必要ですが、それを参照することを好みます。
ここにも質問を投稿しました:
ありがとう、
java - LDAP over TLS 経由で Active Directory に対して認証する方法は?
テスト サーバーで LDAP を介して Active Directory に対して正常に認証できる動作中の概念実証アプリケーションがありますが、運用アプリケーションは TLS を介して認証する必要があります。ドメイン コントローラーは、TLS を介して開始されない接続をすべて閉じます。
私は Eclipse に LDAP ブラウザーをインストールしました。確かに TLS を使用して自分自身としてバインドできますが、アプリケーションで TLS を使用する方法を一生理解できません。
ldap.xml :
OverrideActiveDirectoryLdapAuthenticationProvider
ActiveDirectoryLdapAuthenticationProvider
何らかの理由で指定されているSpring のクラスのコピーを拡張するオーバーライド クラスfinal
です。オーバーライドする理由は、パーミッション/権限がユーザー オブジェクトに入力される方法をカスタマイズすることに関係しています (関連するグループのグループ メンバーシップを使用してユーザーのパーミッションを構築するか、AD ユーザー オブジェクトのフィールドから読み取ります)。その中で、私はメソッドをオーバーライドしているだけですが、メソッドまたは場合によってはメソッドloadUserAuthorities()
もオーバーライドする必要があるのではないかと思います。bindAsUser()
doAuthentication()
XML と 1 つのオーバーライド クラスは、Spring に作業を任せるのではなく、私のアプリケーションによって認証が管理されている唯一の 2 つの場所です。TLSを有効にするためにDefaultTlsDirContextAuthenticationStrategy
クラスを拡張する必要があるいくつかの場所を読みましたが、どこに接続すればよいですか? 名前空間ソリューションはありますか? まったく別のことをする必要がありますか (つまり、Spring の使用を放棄し、ActiveDirectoryLdapAuthenticationProvider
代わりに を使用しますLdapAuthenticationProvider
)?
どんな助けでも大歓迎です。
java - Spring Security で LDAP 経由で Active Directory に対して認証するときにカスタム UserDetails オブジェクトを実装するにはどうすればよいですか?
以前の 質問のように、Spring Security を既存のアプリケーションに統合するという濁った水の中を歩き続けます。アプリケーションは最終的に LDAP (TLS 経由) を介して Active Directory に対して認証し、グループ メンバーシップまたはユーザー オブジェクトのカスタム AD フィールドに格納された文字列。
私の現在の問題は、上記のすべてを正常に管理できましたが、セッションに保存されたカスタム権限を持つ User オブジェクトを取得できなかったことです。これは、追加の作業をしなくても、すべてのユーザーが最後にログインしたユーザーが利用できる権限を享受できることを意味します。
ユーザー権限をHashtable<username, permissions>
オブジェクトに保存することでこの問題を回避しました。これは、ゲッター/セッターに で注釈を付けることで保護できます@PreAuthorize("isAuthenticated() and principal.name == #username")
が、これは明らかに理想的ではありません。AD から収集したカスタム情報を、カスタム ユーザー オブジェクトの一部としてセッションに保存したいと考えています。しかし、どのように?
security.xml
myとconfigurationの関連部分はldap.xml
、それぞれ次のとおりです。
と
私が予見した問題の 1 つは、loadUserAuthorities()
(AD フィールドのカスタム使用のためにオーバーライドされた) メソッドが呼び出されると、SecurityContextHolder.getContext().getAuthentication()
が返されることnull
です。これは問題です。これは、認証プロセスが完了しておらず、認証対象のユーザーに関連するセッション ID が生成されていないことを示しています (Spring のセッションの処理を理解しているため)。つまり、Spring は認証時に匿名セッションをクリアして新しいセッション ID を優先しますが、そのセッションloadUserAuthorities()
は実行時に明らかに利用できません。
それで、私は何をしましょうか?私が言ったように、私のハックは機能し、安全であるように見えますが (適切な注釈があれば)、理想的とは言えません。カスタム ユーザー情報をセッション スコープのユーザー オブジェクトに適切に保存しながら、LDAP 経由 (TLS 経由) で AD に対する認証を維持するにはどうすればよいですか?
いつものように、私は SO コミュニティから受けるすべての支援を愛し、感謝しています。
authentication - javax.naming.AuthenticationException: [LDAP: エラー コード 49 - 無効な資格情報] spring security3 で LDAP 経由で認証中
LDAP 経由でユーザーを認証し、Database.LDAP ディレクトリ経由で承認しようとしています。対応するグループを持つユーザーが含まれており、認証が成功したときにこのグループを取得し、認証後にデータベースから対応するグループで ROLE を取得したいと考えています。
私の春のセキュリティ設定ファイルは以下です。
アプリケーション全体をデバッグしているときに、BindAuthenticator によって呼び出される AbstractContextSource の DirContext の null 値を取得しました。
過去 2 日間、このエラーに悩まされていました。何か助けをいただければ幸いです。追加情報が必要な場合は、教えてください。私の LDAP ディレクトリ構造が間違っている可能性があります。どこが間違っているのかわかりません。 ?
java - Spring-Integration のセキュリティ モデル
Spring 統合でセキュリティがどのように実装されているかを理解してください。フローが JMS Queue -> Spring-integration -> Webservice であると仮定すると、JMS 用と WS 用の spring-integration の 2 つのチャネルが接続されます。これらのチャネルは、認証トークンの種類の詳細をエンドポイント (JMS および WS) に提供し、ルーティングを実行するようです。spring-integration のセキュリティに関する役立つ情報があれば共有してください
ありがとう