私はGrailsを初めて使用していますが、Spring Security LDAPプラグインを使用しているときにldapサーバーのパスワードをプレーンテキストのみで受け入れることが確認されました。現在の課題は、初期化段階でプラグインが消費する前に復号化された暗号化されたパスワードを渡すことです。既存のGrailsプラグインの機能をカスタマイズしてdoWithSpringメソッドの動作を変更する方法
私は既にすべての可能なブログとstackoverflowの質問を検索しましたが、単純にdoWithSpring()メソッドをオーバーライドするようにメインプラグインクラスを拡張する方法を見つけることができなかったので、Ldapサーバーパスワード。ここでの助けに感謝します。
私はすでにjasyptプラグインを見て、試しましたが、パスワードがアプリケーションymlではなく外部ファイルに保存されているとうまく動作しません。だから私はSpringセキュリティプラグインのメインクラスを拡張し、必要な動作を追加し、カスタムクラスを登録するためのソリューションを探しています。
EDIT
私が上書きしようとしていますGrailsのLDAPセキュリティー・プラグインからのスニペットを追加します。したがって、プラグインがロードされる前にsecurityConfigオブジェクトの値を正常に更新できたら、その目的は解決されます。あなたは、既存のプラグインでdoWithSpring()
メソッドをオーバーライドする必要はありません
def conf = SpringSecurityUtils.securityConfig
...
...
contextSource(DefaultSpringSecurityContextSource, conf.ldap.context.server) { // 'ldap://localhost:389'
authenticationSource = ref('ldapAuthenticationSource')
authenticationStrategy = ref('authenticationStrategy')
userDn = conf.ldap.context.managerDn // 'cn=admin,dc=example,dc=com'
**password = conf.ldap.context.managerPassword // 'secret'**
contextFactory = contextFactoryClass
dirObjectFactory = dirObjectFactoryClass
baseEnvironmentProperties = conf.ldap.context.baseEnvironmentProperties // none
cacheEnvironmentProperties = conf.ldap.context.cacheEnvironmentProperties // true
anonymousReadOnly = conf.ldap.context.anonymousReadOnly // false
referral = conf.ldap.context.referral // null
}
ldapAuthenticationSource(SimpleAuthenticationSource) {
principal = conf.ldap.context.managerDn // 'cn=admin,dc=example,dc=com'
**credentials = conf.ldap.context.managerPassword // 'secret'**
}
ありがとうございますJeff、まずポストプロセッサをお試しください。結果に基づいて元に戻ります。 –
私はこれを試み、BeanPostProcessor内のSpringSecurityUtilsのconfigObjectクラスを取得して変更することができましたが、残念ながら、GrailsPluginsはBeanPostProcessor自体の前に読み込まれて初期化されているようです。 変更されたldapPasswordの値が取得されませんでした。 上記のクエリでgrailsプラグインのスニペットを追加しました。 –
"私はこれを試み、BeanPostProcessor内のSpringSecurityUtilsのconfigObjectクラスを取得して変更することができました。" - それを行うことはお勧めできません。私はbean定義を変更します。 –