[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[upki-fed:00524] Re: IdPが起動しません(テストフェデレーション)



upki-fed MLの皆様、赤木様、土屋様、中山様

 都医学研の赤沢です。
 ご助言ありがとうございます。

 まず、第1にお恥ずかしながら凡ミスがひとつありました。
 /etc/hosts.allow に
 ------------------------------
 slapd: localhost
 ------------------------------
 とあり、
 ------------------------------
 slapd: 127.0.0.1
 ------------------------------
 と書き直すことで ローカルから LDAPに接続できるようなりました。
 (/etc/hosts.deny では ALL:ALL で全て拒否設定になっています)

 昨日の段階やそれ以前の確認ではちゃんと接続できていたので、
 どこかの段階で /etc/hosts.allowと/etc/hosts.deny を加えたの
 だと思います。

 少なくとも現在は、次のように、ローカルからLDAP内のダミー職員の
 データを取得できています。(Apache HTTP server/tomcat/OpenLDAP/
 shibboleth は同一マシン内で稼働させています)
-----------------------------------------------------------------
# ldapsearch -x -H ldap://localhost -b dc=igakuken,dc=or,dc=jp -D
cn=test,ou=apps,dc=igakuken,dc=or,dc=jp -W uid=shinkei5
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=igakuken,dc=or,dc=jp> with scope subtree
# filter: uid=shinkei5
# requesting: ALL
#

# shinkei5, Users, igakuken.or.jp
dn: uid=shinkei5,ou=Users,dc=igakuken,dc=or,dc=jp
uid: shinkei5
igakGroupNum: 61
igakMid: 5
objectClass: inetOrgPerson
objectClass: igakKamikitaPerson
employeeNumber: 03330005
  << 後略 >>
-----------------------------------------------------------------

 しかし、これで解決はしませんでした。
 つまり、再び以下のように tomcat6 をスタートさせたときにERRORが
 発生します。
# service tomcat6 stop
# service httpd restart
# service tomcat6 start

 このときの
 /opt/shibboleth-idp/logs/idp-process.log は次のようになっていました。
-----------------------------------------------------------------------
11:50:00.720 - ERROR
 [edu.vt.middleware.ldap.pool.DefaultLdapFactory:109]
 - unabled to connect to the ldap
javax.naming.AuthenticationException:
 [LDAP: error code 49 - Invalid Credentials]
        at com.sun.jndi.ldap.LdapCtx.mapErrorCode
(LdapCtx.java:3067) ~[na:1.6.0_37]
        at com.sun.jndi.ldap.LdapCtx.processReturnCode
(LdapCtx.java:3013) ~[na:1.6.0_37]
  <<後略>>
-----------------------------------------------------------------------

 なんだ、LDAP接続時のパスワード間違いか、恥ずかしいと思いましたが
 /opt/shibboleth-id/conf/attribute-resolver.xml を見てみるとどうしても
 間違いを見つけられません。以下で伏せ字にした ***** は正しいパスワード
 が書いてあります。
-------------------------attribute-resolver.xml------------------------
<<前略>>
    <!-- Example LDAP Connector -->
    <!-- -->
    <resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory"
xmlns="urn:mace:shibboleth:2.0:resolver:dc"
        ldapURL="ldap://localhost" baseDN="dc=igakuken,dc=or,dc=jp"
principal="cn=test,ou=apps"
        principalCredential="*****">
        <FilterTemplate>
            <![CDATA[
                (uid=$requestContext.principalName)
            ]]>
        </FilterTemplate>
    </resolver:DataConnector>
   <!-- -->
<<後略>>
-----------------------------------------------------------------------


> まずは問題を切り分けるために,aacli.sh で動作チェックしてみたらどうで
> しょうか.shibboleth をインストールしたディレクトリに移動して,
>
>      cd /opt/shibboleth-idp
>      ./bin/aacli.sh --configDir=conf/ --principai=ユーザ名
>
> として,ちゃんと値がかえってくるかどうかを見てください.

 土屋様の↑のご指摘の点、以下のように確認してみました。
 XMLは帰って来ず、エラーが延々と出力されてしまいました。
-----------------------------------------------------------------------
#cd /opt/shibboleth-idp
# ./bin/aacli.sh --configDir=conf/ --principal="uid=shinkei5"
Exception in thread "main"
org.springframework.beans.factory.BeanCreationException:
 Error creating bean with name 'shibboleth.AttributeResolver':
 Invocation of init method failed; nested exception is
 edu.internet2.middleware.shibboleth.common.service.ServiceException:
 Configuration was not loaded for shibboleth.AttributeResolver service,
 error creating components.
	at org.springframework.beans.factory.support
 .AbstractAutowireCapableBeanFactory
 .initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
 <<後略>>
-----------------------------------------------------------------------

 aacli.sh --help は見てみましたが、--principal= の記法がよくわからない
 ので、以下の2通りも試しましたが、同様のエラーが発生しました。
-----------------------------------------------------------------------
# ./bin/aacli.sh --configDir=conf/
--principal="uid=shinkei5,ou=users,dc=igakuken,dc=or,dc=jp"
Exception in thread "main"
 org.springframework.beans.factory.BeanCreationException:
 Error creating bean with name 'shibboleth.AttributeResolver':
 Invocation of init method failed; nested exception is
 edu.internet2.middleware.shibboleth.common.service.ServiceException:
 Configuration was not loaded for shibboleth.AttributeResolver service,
 error creating components.
	at org.springframework.beans.factory.support
 .AbstractAutowireCapableBeanFactory
 .initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
 <<後略>>
-----------------------------------------------------------------------
# ./bin/aacli.sh --configDir=conf/ --principal="uid=shinkei5,ou=users"
Exception in thread "main"
 org.springframework.beans.factory.BeanCreationException:
 Error creating bean with name 'shibboleth.AttributeResolver':
 Invocation of init method failed; nested exception is
 edu.internet2.middleware.shibboleth.common.service.ServiceException:
 Configuration was not loaded for shibboleth.AttributeResolver service,
 error creating components.
	at org.springframework.beans.factory.support
 .AbstractAutowireCapableBeanFactory
 .initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
 <<後略>>
-----------------------------------------------------------------------

 現時点では attribute-resolver.xml の <resolver:DataConnector タグに
 おける、属性principalの値として LDAPに接続する際の dn を記載しているの
 ですが、これが間違っているような気がしています。

 そもそも、LDAPにおける principal とは何かがよくわかっておりません。
 Gooleで検索すると、WindowsのUser Principalとか、Keroberosのものとか
 Oracleのものとか、あまり関係なさそうなものが列挙されます。
 
  aacli.sh --help  で得られる、
    --principal  Principal name (user id) of the person
                 whose attributes will be retrieved
 が案外正解なのでしょうか。

 中山様がご指摘くださった、次の点もこれから確認したいと思います。

> LDAP接続箇所のエラーのようなのですが、
>
> 匿名BINDができないLDAPサーバの場合は
> login.configにbindDnとbindCredentialの設定も必要かも知れません。
--
公益財団法人東京都医学総合研究所 情報システム室
赤沢年一