待辦事項 #28564

DN の途中に日本語が含まれている場合に、chpasswd へのログインに失敗

啟用日期: 2012-05-30 12:03 最後更新: 2012-05-30 12:03

回報者:
負責人:
(無)
類型:
狀態:
開啟
元件:
(無)
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
檔案:

細節

http://www.secioss.co.jp/2008/01/lismactive_directoryopenldap.html にある設定例を元に、Active Directory と OpenLDAP の連携をしようとして設定(但し、Active Directory に対するストレージの設定では、<storage name="AD" hash="AD"> とした)し、chpasswd の basedn を AD 側を指定した時に、chpasswd のログイン画面で認証に失敗する。

仮に、cn=テストユーザ,ou=テストグループ,ou=ad,dc=example,dc=com という DN で、saMAccountName が testuser だった場合、chpasswd のユーザ名を testuser としてログインしようとすると、LISM.pm の sub bind 中の $binddn が、「cn=テストユーザ」の部分が文字化けしたものになっていた。「ou=テストグループ」の部分は正常。

この DN の生成は、おそらく、LISM/Handler/Rewrite.pm の _rewriteParse 中で

  1. $tmpstr =~ s/$match/$subst/gi;
としているところで、$tmpstr、$match、$subst の utf8 フラグが揃っていない時に、前述のような文字化けした文字列が生成されるらしい。

回避ポイントを探したところ、LISM/Handler.pm の _searchLdap 中と、LISM/Storage/LDAP.pm 中の _do_search の間で、Net::LDAP の結果に対する処理に違いがあり、LISM/Storage/LDAP.pm の場合には、検索結果に対して

  1. my $dn = decode('utf8', $entry->dn);
といった処理が入っているのに対し、LISM/Handler.pm では何もしていなかった。

LISM/Handler.pm の処理を LISM/Storage/LDAP.pm に合わせるように、下記のように修正すると、chpasswd へのログインができた。

  1. if ($msg->count) {
  2. my $entry = $msg->entry(0);
  3. my $tmpdn = Encode::decode_utf8($entry->dn);
  4. if ($ldapopts->{attr} eq 'dn') {
  5. # $values[0] = $entry->dn;
  6. $values[0] = $tmpdn;
  7. } elsif ($ldapopts->{attr} eq 'parentrdn') {
  8. # @values = ($entry->dn =~ /^[^,]+,([^,]+)/);
  9. @values = ($tmpdn =~ /^[^,]+,([^,]+)/);
  10. } else {
  11. # @values = $entry->get_value($ldapopts->{attr});
  12. foreach my $value ($entry->get_value($ldapopts->{attr})) {
  13. my $tmpval = Encode::decode_utf8($value);
  14. push(@values, $tmpval);
  15. }
  16. }
  17. if (!defined($values[0])) {
  18. @values = ('');
  19. }
  20. }

Ticket History (1/1 Histories)

2012-05-30 12:03 Updated by: julymori
  • New Ticket "DN の途中に日本語が含まれている場合に、chpasswd へのログインに失敗" created

Attachment File List

No attachments

編輯

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登入