Apacheã®BASICèªè¨¼ã§htdigest/htpasswdã使ããã«ãLDAPã¸åãåãããäºã«ãããLDAPã ã¨AD飿ºãåºæ¥ãã便å©ãã ãã©ãLDAPãã¼ã¿ãã¼ã¹ã¯æ¤ç´¢é ãã
äºåè¨å®ã§å¿ è¦ãªãã¨(apache2.conf ã¾ãã¯httpd.conf)
#ã¢ã¸ã¥ã¼ã«ãã¼ã LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so #è¨å® LDAPVerifyServerCert Off #ãªã¬ãªã¬è¨¼ææ¸ã§ã¨ã©ã¼ã«ããªã LDAPOpCacheTTL 1 #è¨å®ãã¹ãä¸ãªã®ã§LDAPåãåããããã£ãã·ã¥1ç§
èªè¨¼ã«å¿ è¦ãªè¨å®(.htaccessãªã©)
AuthName "User/Password" #Basicèªè¨¼ã®ãã¤ã¢ãã°ã§åºã¦ãã AuthType Basic #Basicèªè¨¼ãããï¼ AuthBasicProvider ldap #ãã¹ã¯ã¼ãã¯LDAP使ããï¼ AuthzLDAPAuthoritative off #LDAP以å¤ã®èªè¨¼ã¯çµã¿åãããªããï¼ AuthLDAPURL ldaps://ldap.example.ac.jp/ou=Students,dc=example,dc=ac,dc=jp?uid #æ¤ç´¢ã¯ã¨ãªã解説ã¯å¾ã§ AuthLDAPBindDN "cn=sso_admin,dc=example,dc=ac,dc=jp" #bind dn AuthLDAPBindPassword "bind_password" #bind_dn ã®ãã¹ã¯ã¼ã require valid-user #ã¦ã¼ã¶ã¼èªè¨¼ãéãã
.htaccess ã«æ¸ãã.htaccessã«æããã¨è¨ããã¨ã¯ãLocation/Directoryã§ãããããã
Apache-LDAP飿ºæ¹æ³ã¯ï¼ã¤
飿ºæ¹æ³ã¯ï¼ã¤ããã¾ããLDAPæ¥ç¶ããã®ã«ãã ãã®ID/PWã§æ¥ç¶ãããã§éã
- ãã©ã¦ã¶ããå ¥åãããã¢ãã使ãã
- äºåã«æ±ºããID/PWã§æ¥ç¶ãããã©ã¦ã¶ããå ¥åãããã¦ã¼ã¶ã¼ãæ¤ç´¢ãã¦ãPASSWDãä¸è´ããã調ã¹ã.
ã©ã£ã¡ã§ããããã©ãLDAPã¨ããã°é常å¾è
ããªã
å¾è
ã®å ´å
AuthLDAPBindDN "cn=sso_admin,dc=example,dc=ac,dc=jp" #bind dn AuthLDAPBindPassword "bind_password" #bind_dn ã®ãã¹ã¯ã¼ã
ãè¨å®ãããããè¨å®ããããã¨ã¯èªåçã«compareãªã¯ã¨ã¹ãçºè¡ãã¦ããã便å©ã
æ¤ç´¢URI
LDAPã¯URIã§è¡¨ç¾ããããã¤ã¾ããªã½ã¼ã¹ãURIã£ã¦äºã¯RESTfulã§ãããHTTPã§ã¯ãªãã§ãããURIã§è¡¨ç¾ã§ããã®ã§ä¾¿å©ã§ãã
ldaps://ldap.example.ac.jp/ou=Students,dc=example,dc=ac,dc=jp?uid
ã¯è¦ãã¾ããªåè§£ããã¦
ldaps:// | ldaps/ldapã§ã¹ãã¼ã ãæå® |
ldap.example.ac.jp | ãã¹ãå |
/ou=Students,dc=example,dc=ac,dc=jp | ãã¹ãã¤ã¾ãLDAPãã¼ã,search base dn ã |
?uid | æ¤ç´¢æ¡ä»¶ã»ã»ã»å±æ§,ã¹ã³ã¼ã,ãã£ã«ã¿, |
ãã¼ãã®ã¨ã³ããªã®objectclassã«ãuserPassword,uidãããã°ããããid/pwã«ä½¿ãã¾ããApacheã®mod_ldap+mod_auth_ldapã¯è³¢ããã
uid以å¤ãæå®ãããã¨ãåºæ¥ããã©ããã¾ããããªãããã
ldapsã®å ´å
ldapsã®å ´åã¯ããªã¬ãªã¬è¨¼ææ¸ã«æ³¨æãããèªå·±è¨¼ææ¸ãåãå ¥ããè¨å®ã¨ãauthã®è¨å®ã¯å ´æãéãã®ã§ãã
æ¡ä»¶æå®ãåºæ¥ã
LDAPã®å±æ§å¤ã«åºã¥ããæ¡ä»¶æå®ãæããã
require valid-user #èªè¨¼åºæ¥ãã¦ã¼ã¶ã¼ require ldap-attribute is_active=on #æå¹ã¢ã«ã¦ã³ãã ã
ä»ã«ããLDAPã®URIã®ãã£ã«ã¿ã§æå®ãã¦ãã¤ã¤
èªè¨¼åºæ¥ããã©ãããã®
èªè¨¼åºæ¥ãããã¦ã¼ã¶ã¼IDã¨ãã¹ã¯ã¼ããApacheã®ç°å¢å¤æ°ã«å ¥ããCGI/PHPããã¯ãApacheç°å¢å¤æ°ãè¦ãã°ä½¿ããã¨ãåºæ¥ãã
<?php echo $_SERVER["AUTHENTICATE_UID"] #=> takuya_1st ãã㯠mod_authnz_ldapæä¾ echo $_SERVER["PHP_AUTH_USER"] #=> takuya_1st Basicèªè¨¼ãã echo $_SERVER["PHP_AUTH_PW"] # => my_password Basicèªè¨¼ãã ?>
ã¨ãã£ã¦ãããã°ã»mod_rewrite ã§ä½¿ããã¨ãæ®ã©ãApacheããè²°ãããããªããé常ã¯CGIã§åãããPHP/rubyãããLDAPã«bindãã¦Compareãã¡ããã
https ã¨çµã¿åãã
Basicèªè¨¼ãªã®ã§å½ç¶HTTPSã¨çµã¿åããã¦ä½¿ãããHTTPã§ã®ã¢ã¯ã»ã¹ã¯æå¦ããªãã¨ããããã§ããã©ã¦ã¶ã¯éããã¨ããããBASICã¯ä¸¸è¦ããã¦ã¼ã¶ã¼ãä¸ç¨æã«HTTPã§éã£ã¡ãããããããªãããªã®ã§ãå®é¨ãçµã£ããDigestã«ãã¦ããããã
LDAPã§digestã¯ããè§£ããªãã
LDAP-Apache飿ºããã£ã¦ã¿ã¦ã
ADãæ¢åã®ã·ã¹ãã ã§ãããªããLDAPå´ã«ãã©ã¼ãã¦ä½¿ããã®ã§ä¾¿å©ãLDAPã«éç´ãããã¨ããããã©LDAPæ¤ç´¢ã¯é ãã®ã§æå¤ã¨ä¸ä¾¿ãããããªããSambaãã¤ããããã©ãLDAPã ã¨å¤ç¨ãªã¢ãã¨é£æºã§ãããOAuthã¨LDAPã¯ããããã¬ã¤ã¤ï¼ã§ãã£ããããèªè¨¼ã®é£æºãåºæ¥ããSSOãå¯è½ã«ãªãããã ããCookieã¨éã£ã¦ãèªè¨¼æ¸ã¿ï¼authenticatedãã®ç¶æ ãã©ã表ç¾ããããã¾ã é£ããããã®è¾ºãè«æã«ãªãããªãã
軽éã§æ±ããããã¨èª¬æãããLDAPã ãã©ãä»çµã¿ãçè§£ããã®ã¯é¢åã§ãã
åãªãKVSãªLDAP
LDAPã ã£ã¦Windowsã®ã¬ã¸ã¹ããªã¨åããããªã¼åã®ã¹ãã¬ã¼ã¸ãªãã ãã©ã»ã»ã»åãã¼ãæ
å ±ãæ¨ªæçã«æ¤ç´¢ããæ©è½ãæã¤ããã ããã®æ¤ç´¢ãé
ãã
ã¬ã¸ã¹ããªããã¡ã¤ã«æ¤ç´¢ã¨åãããªã§æ¤ç´¢ããã®ã§ãé
ãããã¡ããäºåINDEX使ããã°æ©ããã ãã©ã
ãã¤ã³ããã¯ã¹ä½æãã¦èªè¨¼ã«ä½¿ããªããKVSãMySQLã§MyISAM使ã£ãæ¹ãæ©ããããã»ã»ã»LDAPãã¿ããããã³ããé«é¡åæãããã®è¦æ ¼ã«ãªã£ã¦ãã