2012年4月23日 星期一

用 simpleSAMLphp 實現 Google Apps 單一簽入

1. 安裝 simpleSAMLphp 1.8 於 /var/www/ simplesaml 底下
2. Edit apache 設定,增加 

Alias /sso /var/www/simplesaml/www


安裝如果正常可連結至 http://xxx.edu.tw/sso 看到以下畫面








3.Edit config.php 

#vi config/config.php
21 行
'baseurlpath'           => 'sso/',
60 行

 'auth.adminpassword'            => 'yourpassword',
72 行
使用 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo 產生


'secretsalt' => ' yourcode',
79 行
'technicalcontact_name'     => 'Admin',
'technicalcontact_email'    => 'admin@xxx.edu.tw',
89 行
 'timezone' => 'Asia/Taipei',

141 行

'enable.saml20-idp' => true, 

212 行
language.default'              => 'zh-tw',

4. 設定 SSL key
#openssl genrsa -des3 -out googleappsidp.key 1024 
#openssl rsa -in googleappsidp.key -out googleappsidp.pem 
#openssl req -new -key googleappsidp.key -out googleappsidp.csr 
#openssl x509 -req -days 9999 -in googleappsidp.csr -signkey googleappsidp.key -out googleappsidp.crt

then, copy key to /simplesaml/cert

5. 設定認證來源

#touch modules/ldap/enable
# vi config/authsources.php 182 行開始
        'example-ldap' => array(
                'ldap:LDAP',

                'hostname' => '123.123.123.123',
                'enable_tls' => FALSE,
                'debug' => FALSE,
                'timeout' => 0,
                'attributes' => NULL,
                'dnpattern' => 'uid=%username%',
                'search.enable' => TRUE,
                'search.base' => 'o=users',
                'search.attributes' => array('uid', 'mail','Password','givenName'),
                'search.username' => 'cn=manage,o=domain',
                'search.password' => 'youradminpassword',
                'priv.read' => FALSE,
                'priv.username' => NULL,
                'priv.password' => NULL,

        ),

6.設定 metadata for an SAML 2.0 IdP
#vi metadata/saml20-idp-hosted.php
17 行
        'privatekey' => 'googleappsidp.pem',
        'certificate' => 'googleappsidp.crt',
24 行
        'auth' => 'example-ldap',

7.設定 metadata for an SAML 2.0 IdP
#vi metadata/saml20-sp-remote.php
22 行
$metadata['google.com/a/xxx.edu.tw'] = array(
        'AssertionConsumerService' => 'https://www.google.com/a/xxx.edu.tw/acs',
        'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:email',
        'simplesaml.nameidattribute' => 'uid',
        'simplesaml.attributes' => FALSE,


8. 設定 Google apps single sign-on (SSO)
登入網頁 
http://xxx.edu.tw/sso/saml2/idp/SSOService.php
登出網頁 
http://xxx.edu.tw/sso/saml2/idp/initSLO.php?RelayState=/simplesaml/logout.php
變更密碼改為貴單位 LDAP 更改密碼頁面
上傳憑證 googleappsidp.crt 

9.測試登入頁面
http://mail.google.com/a/yourgoogleappsdomain.com

10.強烈建議網頁使用 SSL 

沒有留言: