1

問題: Grails ADMIN は LDAP 経由でログインしますが、他のアカウントはログインしません。システム = Win 7、grails 2.2.1、Active Dir ライトウェイト

シンプルな grails デフォルト アプリケーションを作成し、最新の grails スプリング セキュリティと LDAP プラグインをインストールしました。次に、次のチュートリアルに従って、Spring セキュリティのセットアップを構成しました。http://blog.springsource.com/2010/08/11/simplified-spring-security-with-grails/にあるチュートリアル

とにかく、春のセキュリティがかなり速く機能するようになりました。次のステップは LDAP を設定して anonymousAuthenticationProvider を使用することでした。これにより、grails アプリは独自の DB のパスワードをチェックせずに LDAP のみでログインできるようになりました。Windows Active Directory を使用しています。とにかく、この構成セットアップに従ってください http://grails-plugins.github.io/grails-spring-security-ldap/docs/manual/guide/2.%20Usage.html. 正しくログインしているように見える唯一のユーザーが管理者であり、他のユーザーが機能していないことを除いて、すべてが正常に開始されているようです。そのユーザー名/パスワードエラーでユーザーが見つかりません。春のセキュリティのためにエラー、警告、および情報ログ出力を追加しましたが、実際に機能する管理者アカウントを除いて、多くの情報をまったく提供していないようです。spring security dbパスワードにldapパスワードとは異なるパスワードを指定したため、機能することを確認しました.ldapが構成されたら、管理者に対して機能する唯一のパスワードはldapパスワードでした。残念ながら、他のユーザーは機能しませんでした。

ここに私のgrailsの設定があります:

    // Added by the Spring Security Core plugin:
    grails.plugins.springsecurity.userLookup.userDomainClassName = 'org.example.SecUser'
   grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'org.example.SecUserSecRole'
   grails.plugins.springsecurity.authority.className = 'org.example.SecRole'


   grails.plugins.springsecurity.ldap.context.managerDn = 'CN=admin,OU=people,OU=imApp,DC=example,DC=org'
   grails.plugins.springsecurity.ldap.context.managerPassword = 'password'
   grails.plugins.springsecurity.ldap.context.server = 'ldap://localhost:55000/'
   grails.plugins.springsecurity.ldap.authorities.ignorePartialResultException = true
   grails.plugins.springsecurity.ldap.search.base = 'OU=people,OU=imApp,DC=example,DC=org'
   grails.plugins.springsecurity.ldap.search.filter='uid={0}'  //ad use sAMAccountName instead of uid
   grails.plugins.springsecurity.ldap.search.searchSubtree =true
   grails.plugins.springsecurity.ldap.auth.hideUserNotFoundExceptions= false
   grails.plugins.springsecurity.ldap.search.derefLink = true
   // specify this when you want to skip attempting to load from db and only use LDAP
   grails.plugins.springsecurity.providerNames = ['ldapAuthProvider', 'anonymousAuthenticationProvider'] 
   grails.plugins.springsecurity.conf.ldap.authorities.retrieveGroupRoles = false
   grails.plugins.springsecurity.conf.ldap.authorities.retrieveDatabaseRoles = false
   //grails.plugins.springsecurity.ldap.authorities.groupSearchBase =   'ou=groups,ou=imApp,dc=mcommunity,dc=org'
  //role specific ldap config
  grails.plugins.springsecurity.ldap.useRememberMe = false

この構成のいくつかのバリエーションを試しました。たとえば、Active Dirにはsearch.filterとしてsAMAccountNameが必要だと書かれていますが、これを使用するとアカウントが機能しません。完全にコメントアウトすると、すでにメモリとして機能し、管理者はログインしますが、他にはログインしませんアカウントが行います。springsecurity.providerNames を削除すると、アプリは起動しますが、DB をパスワード認証プロバイダーとして使用します。モデルクラスとデータベースのパスワードを削除する、またはヌル可能にすることについて言及しているブログに出くわしましたが、試してみましたが、結果には影響しませんでした。

私のアクティブなディレクトリ構造は次のとおりです。

    DC=example,dc=org
      OU=imApp
        OU=groups
        OU=people
          CN=admin   user   CN=admin,OU=people,OU=imApp,DC=example,DC=org
          CN=user1   user   CN=user1,OU=people,OU=imApp,DC=example,DC=org
    CN=LostAndFound
    CN= NTDS Quotas
    CN=Roles

各アカウントに LDAP パスワードを与え、ユーザー名 (CN) に一致するパラメーター uid を追加しました。カスタム UserDetailsContextMapper は使用していません。デフォルトです。ただし、カスタム UserDetailsContextMapper を試してみたところ、同じ問題に遭遇したため、標準のみを使用するように戻しました。また、Active Dir には org の小文字の dc があることに気付いたので、Grails の構成で同じ小文字の dc を使用しようとしましたが、結果は同じでした。

誰かがこの問題に遭遇したか、私がどこに行くのか知っていますか? どんな助けでも感謝します。

最高、Marklw16

4

1 に答える 1

0

次の設定を試してください。

grails.plugins.springsecurity.ldap.authorities.groupSearchBase ='DC=example,dc=org'
grails.plugins.springsecurity.ldap.authorities.groupSearchFilter = 'member={0}'
于 2013-06-11T16:46:34.013 に答える