前提条件:
<bean id="contextSource" class="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource">の定義を以下のように書きかえます.
<property name="userName" value="BIND_USERNAME_FOR_AUTHENTICATION" />の value を「ユーザ認証のために LDAP サーバにアクセスする時の Bind User Name」に書き換えます.
<property name="password" value="BIND_PASSOWRD_FOR_AUTHENTICATION" />の value を「ユーザ認証のために LDAP サーバにアクセスする時の Bind User のパスワード」に書き換えます.
<property name="url">の list 内にある value を「LDAP サーバの URL」に書き換えます.
認証方法は複数の設定が可能です. さらに, 次の2種類の認証方法があります.
いずれの場合にも, 適切に記述を変更することで, 種々の認証方法を利用することが可能です. (ここに記述されているものは単なる例に過ぎません)
<bean id="authenticationManager" class="org.jasig.cas.authentication.AuthenticationManagerImpl"> <property name="credentialsToPrincipalResolvers"> <list> <bean class="jp.ac.nagoya_u.cas.authentication.principal.GenericMapCredentialsToPrincipalResolver" /> </list> </property> <property name="authenticationHandlers"> <list> <bean class="jp.ac.nagoya_u.cas.adaptors.ldap.BindLdapAuthenticationHandler" > <!-- <property name="filter" value="(|(uid=%u)(mail=%u))" /> --> <property name="filter" value="(uid=%u)" /> <property name="searchBase" value="ou=people,dc=math,dc=nagoya-u,dc=ac,dc=jp" /> <property name="loginLevel" value="PIN_UID_AUTHENTICATION" /> <property name="contextSource" ref="contextSource" /> </bean> <bean class="jp.ac.nagoya_u.cas.adaptors.ldap.BindLdapAuthenticationHandler" > <property name="filter" value="(mail=%u)" /> <property name="searchBase" value="ou=people,dc=math,dc=nagoya-u,dc=ac,dc=jp" /> <property name="loginLevel" value="PIN_MAIL_AUTHENTICATION" /> <property name="contextSource" ref="contextSource" /> </bean> <bean class="jp.ac.nagoya_u.cas.adaptors.ldap.SubscriberIdLdapAuthenticationHandler" > <property name="cellerPhoneCheck" ref="cellerPhoneCheckBean" /> <property name="filter" value="(cellerPhoneSubscriberId=%u)" /> <property name="searchBase" value="ou=people,dc=math,dc=nagoya-u,dc=ac,dc=jp" /> <property name="loginLevel" value="CELLER_SUBSCRIBERID_AUTHENTICATION" /> <property name="contextSource" ref="contextSource" /> </bean> </list> </property> <property name="authenticationMetaDataPopulators"> <list> <bean class="jp.ac.nagoya_u.cas.authentication.GenericMapCredentialsMetaDataPopulator" /> </list> </property> </bean>
authenticationManager
の authenticationHandlers
にリストされた順序で認証を試みます.
認証結果が true
となった段階で認証ハンドラが終了します.
BindLdapAuthenticationHanlder
は LDAP サーバに対して "simple bind" を行なうことで認証を行ないます.
LDAP サーバ情報は contextSource
で定義されます.
LDAP に bind するための DN を検索するためには filter
で定義された文字列が用いられますが,
%u
は認証データの Principal 部分(通常は入力されたユーザ名)と置き換えられます.
SubscriberIdLdapAuthenticationHanlder
は LDAP サーバから「携帯電話 SubscriberID」を検索し,
格納された値と認証データの Credental 部分との比較を行ないます.
loginLevel
で定義された値に設定されます.
この設定は cas-servlet.xml
にあります.
<property name="nonInteractiveAuthenticationHandlers"> <list> <bean class="jp.ac.nagoya_u.cas.adaptors.x509.authentication.handler.X509NonInteractiveAuthenticationHandler"> <property name="credentialsToPrincipalResolver"> <bean class="jp.ac.nagoya_u.cas.adaptors.x509.authentication.principal.X509CredentialsToSerialNumberResolver"> <property name="loginLevel" value="X509_CLIENT_CERTIFICATION_WITH_SERIAL_NUMBER" /> </bean> </property> <property name="authenticationMetaDataPopulator"> <bean class="jp.ac.nagoya_u.cas.adaptors.ldap.handler.LdapMetaDataPopulator"> <property name="filter" value="(certificateSerialNumber=%u)" /> <property name="searchBase" value="ou=people,dc=math,dc=nagoya-u,dc=ac,dc=jp" /> <property name="contextSource" ref="contextSource" /> </bean> </property> </bean> <bean class="jp.ac.nagoya_u.cas.adaptors.x509.authentication.handler.X509NonInteractiveAuthenticationHandler"> <property name="credentialsToPrincipalResolver"> <bean class="jp.ac.nagoya_u.cas.adaptors.x509.authentication.principal.X509CredentialsToSubjectResolver"> <property name="loginLevel" value="X509_CLIENT_CERTIFICATION" /> <property name="postfix" value="L=Nagoya, ST=Aichi, C=JP" /> <property name="entryName" value="EMAILADDRESS" /> </bean> </property> <property name="authenticationMetaDataPopulator"> <bean class="jp.ac.nagoya_u.cas.adaptors.ldap.handler.LdapMetaDataPopulator"> <property name="filter" value="(uid=%U)" /> <property name="searchBase" value="ou=people,dc=math,dc=nagoya-u,dc=ac,dc=jp" /> <property name="contextSource" ref="contextSource" /> </bean> </property> </bean> </list> </property>
nonInteractiveAuthenticationHandlers
にリストされた順序で bean を利用して認証を試みます.
認証結果が true
となった段階で認証ハンドラが終了します.
EMAILADDRESS
フィールドを LDAP の "uid" 属性と比較することで認証を行ないます.
applicationContext_1.xml
で以下のように定義されています.
(変更可能です)
<bean id="checkLoginLevel" class="jp.ac.nagoya_u.cas.authentication.loginlevel.CheckLoginLevel"> <property name="loginLevels"> <list> <value>CELLER_SUBSCRIBERID_AUTHENTICATION</value> <value>PIN_MAIL_AUTHENTICATION</value> <value>PIN_UID_AUTHENTICATION</value> <value>X509_CLIENT_CERTIFICATION</value> <value>X509_CLIENT_CERTIFICATION_WITH_SERIAL_NUMBER</value> </list> </property> <property name="defaultLoginLevel" value="PIN_MAIL_AUTHENTICATION" /> </bean>
defaultLoginLevel
は CAS ACL において, login Leven が設定されていない場合に用いられるデフォールトの Login Level を示します.
現在のリリースでは, CAS ACL へのアクセス方法が以下の2種類が実装されています.
<bean id="aclReadHandler" class="jp.ac.nagoya_u.cas.acl.handler.PlainTextACLRegistryHandler"> <property name="fileName" value="/usr/public/www/www-tomcat/webapps/cas.ldif" /> </bean>
property name="fileName"
の value
を書き換えます.
<bean id="aclReadHandler" class="jp.ac.nagoya_u.cas.acl.handler.LdapACLRegistryHandler"> <property name="ldapURL" value="ldap://xxx.nagoya-u.ac.jp/" /> <property name="searchBase" value="ou=cas,dc=nagoya-u,dc=ac,dc=jp" /> <property name="filter" value="(objectclass=cas)" /> <property name="bindUser" value="BIND_USERNAME_FOR_CAS_ACL" /> <property name="bindPassword" value="BIND_PASSWORD_FOR_CAS_ACL" /> </bean>
BIND_USERNAME_FOR_CAS_ACL
と BIND_PASSWORD_FOR_CAS_ACL
を CAS ACL を読み出すための Bind User とパスワードに書き換えます.
さらに, ldapURL
, searchBase
を適切に書き換えます.
Return to Document TOP
Return to TOP
$Id: deployerConfigContext.html,v 1.2 2007-06-19 20:40:17+09 naito Exp $