Idp | OpenAM Nightly Build 2012-01-08 (10.0) | http://app.example.com:8080/openam |
Sp | simpleSAMLphp 1.8.1 | http://app.example.com/simplesaml |
Idp | OpenAM Nightly Build 2012-01-08 (10.0) | https://app.example.com:8443/openam |
Sp | simpleSAMLphp 1.8.1 | http://app.example.com/simplesaml |
Idp | OpenAM 9.5.3 | http://pine.hondou.homedns.org:9080/openam/ |
Sp | SimpleSAMLphp 1.8.0 | http://pine.hondou.homedns.org/simplesaml/ |
Idp | OpenAM 9.5.4 | http://pine.hondou.homedns.org:9080/openam/ |
Sp | SimpleSAMLphp 1.8.1 | http://pine.hondou.homedns.org/simplesaml/ |
SimpleSAML_Error_Error: UNHANDLEDEXCEPTION
Backtrace:
0 /var/simplesamlphp/www/module.php:180 (N/A)
Caused by: Exception: Reference validation failed
Backtrace:
8 /var/simplesamlphp/lib/xmlseclibs.php:1001 (XMLSecurityDSig::validateReference)
7 /var/simplesamlphp/lib/SAML2/Utils.php:52 (SAML2_Utils::validateElement)
6 /var/simplesamlphp/lib/SAML2/Assertion.php:469 (SAML2_Assertion::parseSignature)
5 /var/simplesamlphp/lib/SAML2/Assertion.php:240 (SAML2_Assertion::__construct)
4 /var/simplesamlphp/lib/SAML2/Response.php:37 (SAML2_Response::__construct)
3 /var/simplesamlphp/lib/SAML2/Message.php:471 (SAML2_Message::fromXML)
2 /var/simplesamlphp/lib/SAML2/HTTPPost.php:98 (SAML2_HTTPPost::receive)
1 /var/simplesamlphp/modules/saml/www/sp/saml2-acs.php:16 (require)
0 /var/simplesamlphp/www/module.php:135 (N/A)
Host | Mac OS X 10.7 | (172.16.26.1) |
VM1 | Scientific Linux 6.1 | app.example.com (172.16.26.100) |
VM2 | Scientific Linux 6.1 | sso.example.com (172.16.26.101) |
# yum -y install system-config*
# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.26.100 app.example.com 172.16.26.101 sso.example.com
[~]$ ping app.example.com PING app.example.com (172.16.26.100): 56 data bytes 64 bytes from 172.16.26.100: icmp_seq=0 ttl=64 time=0.532 ms [~]$ ping sso.example.com PING sso.example.com (172.16.26.101): 56 data bytes 64 bytes from 172.16.26.101: icmp_seq=0 ttl=64 time=0.539 ms
# chmod +x jdk-6u30-linux-x64-rpm.bin # ./jdk-6u30-linux-x64-rpm.bin
# java -version java version "1.6.0_30" Java(TM) SE Runtime Environment (build 1.6.0_30-b12) Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)(/usr/java/jdk1.6.0_30 に展開され、/usr/bin/java からシンボリックリンクが張られている)
# mkdir /opt/openam # cd /opt/openam/ # tar -xf /home/kagyuu/ダウンロード/apache-tomcat-6.0.35.tar.gz起動スクリプト (/etc/rc.d/init.d/openam)
#!/bin/sh # # openam # # chkconfig: 35 95 5 # description: Manage OpenAM SSO Server CATALINA_HOME=/opt/openam/apache-tomcat-6.0.35 export CATALINA_HOME JAVA_HOME=/usr/java/jdk1.6.0_30 export JAVA_HOME JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=256m" export JAVA_OPTS CATALINA_OPTS="-Dcom.iplanet.am.cookie.c66Encode=true" export CATALINA_OPTS case "${1}" in start) "${CATALINA_HOME}/bin/startup.sh" exit ${?} ;; stop) "${CATALINA_HOME}/bin/shutdown.sh" exit ${?} ;; *) echo "Usage: $0 { start | stop }" exit 1 ;; esacchkconfig を使って、/etc/rc3.d/、/etc/rc5.d/ に登録
# chmod +x /etc/rc.d/init.d/openam # /sbin/chkconfig --add openam # /sbin/chkconfig --list openam openam 0:off 1:off 2:off 3:on 4:off 5:on 6:off
# cp /home/kagyuu/ダウンロード/openam_954.war /opt/openam/apache-tomcat-6.0.35/webapps/openam.war
# /etc/rc.d/init.d/openam start Using CATALINA_BASE: /opt/openam/apache-tomcat-6.0.35 Using CATALINA_HOME: /opt/openam/apache-tomcat-6.0.35 Using CATALINA_TMPDIR: /opt/openam/apache-tomcat-6.0.35/temp Using JRE_HOME: /usr/java/jdk1.6.0_30 Using CLASSPATH: /opt/openam/apache-tomcat-6.0.35/bin/bootstrap.jar
# keytool -list -keystore /root/openam/openam/keystore.jks -v キーストアのパスワードを入力してください: キーストアのタイプ: JKS キーストアのプロバイダ: SUN キーストアには 1 エントリが含まれます。 別名: test 作成日: 2008/07/17 エントリタイプ: PrivateKeyEntry 証明連鎖の長さ: 1 証明書[1]: 所有者: CN=test, OU=OpenSSO, O=Sun, L=Santa Clara, ST=California, C=US 発行者: CN=test, OU=OpenSSO, O=Sun, L=Santa Clara, ST=California, C=US シリアル番号: 478d074b 有効期間の開始日: Wed Jan 16 04:19:39 JST 2008 終了日: Sat Jan 13 04:19:39 JST 2018 証明書のフィンガープリント: MD5: 8D:89:26:BA:5C:04:D8:CC:D0:1B:85:50:2E:38:14:EF SHA1: DE:F1:8D:BE:D5:47:CD:F3:D5:2B:62:7F:41:63:7C:44:30:45:FE:33 署名アルゴリズム名: MD5withRSA バージョン: 1 ******************************************* *******************************************
[root@app openam]# pwd /root/openam/openam
[root@app openam]# keytool -genkey -keyalg RSA -alias saml -keystore keystore.jks キーストアのパスワードを入力してください: changeit 姓名を入力してください。 [Unknown]: Mari TACHIBANA 組織単位名を入力してください。 [Unknown]: WebAdmin 組織名を入力してください。 [Unknown]: Example 都市名または地域名を入力してください。 [Unknown]: Vonbrown 州名または地方名を入力してください。 [Unknown]: Moon この単位に該当する 2 文字の国番号を入力してください。 [Unknown]: MR CN=Mari TACHIBANA, OU=WebAdmin, O=Example, L=Vonbrown, ST=Moon, C=MR でよろしいですか? [no]: yes <saml> の鍵パスワードを入力してください。 (キーストアのパスワードと同じ場合は RETURN を押してください):
[root@app openam]# keytool -selfcert -alias saml -keystore keystore.jks -validity 3650 -storepass changeit
[root@app openam]# keytool -list -v -keystore keystore.jks -storepass changeit キーストアのタイプ: JKS キーストアのプロバイダ: SUN キーストアには 2 エントリが含まれます。 別名: saml 作成日: 2012/01/08 エントリタイプ: PrivateKeyEntry 証明連鎖の長さ: 1 証明書[1]: 所有者: CN=Mari TACHIBANA, OU=WebAdmin, O=Example, L=Vonbrown, ST=Moon, C=MR 発行者: CN=Mari TACHIBANA, OU=WebAdmin, O=Example, L=Vonbrown, ST=Moon, C=MR シリアル番号: 4f0965cc 有効期間の開始日: Sun Jan 08 18:45:48 JST 2012 終了日: Wed Jan 05 18:45:48 JST 2022 証明書のフィンガープリント: MD5: 89:9C:6D:77:E6:50:5B:05:25:AE:14:C4:72:94:8E:75 SHA1: 4D:6B:E0:32:29:4A:27:13:5C:C2:4C:9B:C6:1E:76:5B:F9:F7:C4:93 署名アルゴリズム名: SHA1withRSA バージョン: 3 ******************************************* ******************************************* 別名: test 作成日: 2008/07/17 エントリタイプ: PrivateKeyEntry 証明連鎖の長さ: 1 証明書[1]: 所有者: CN=test, OU=OpenSSO, O=Sun, L=Santa Clara, ST=California, C=US 発行者: CN=test, OU=OpenSSO, O=Sun, L=Santa Clara, ST=California, C=US シリアル番号: 478d074b 有効期間の開始日: Wed Jan 16 04:19:39 JST 2008 終了日: Sat Jan 13 04:19:39 JST 2018 証明書のフィンガープリント: MD5: 8D:89:26:BA:5C:04:D8:CC:D0:1B:85:50:2E:38:14:EF SHA1: DE:F1:8D:BE:D5:47:CD:F3:D5:2B:62:7F:41:63:7C:44:30:45:FE:33 署名アルゴリズム名: MD5withRSA バージョン: 1 ******************************************* *******************************************
# yum -y install httpdchkconfig を使って、/etc/rc3.d/、/etc/rc5.d/ に登録
# /sbin/chkconfig --level 35 httpd on # /sbin/chkconfig --list httpd httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
# yum -y install php*
$ wget http://simplesamlphp.googlecode.com/files/simplesamlphp-1.8.1.tar.gz
# cd /var # tar -xf /home/kagyuu/ダウンロード/simplesamlphp-1.8.1.tar.gz # chown -R apache:apache simplesamlphp-1.8.1/SELinux が有効な場合には、simpleSAMLphp のアクセスベクタを /var/www/html と同じにします
# ls -ldZ /var/www/html drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html # chcon -u system_u -Rt httpd_sys_content_t /var/simplesamlphp-1.8.1
# cd /etc/httpd/conf.d/ # ls README mod_dnssd.conf php.conf simplesamlphp.conf welcome.conf
# cat /etc/httpd/conf.d/simplesamlphp.conf Alias /simplesaml "/var/simplesamlphp-1.8.1/www" <Directory "/var/simplesamlphp-1.8.1/www"> Options Multiviews AllowOverride None Order allow,deny allow from all </Directory>
key | デフォルト値 | 変更値 | 備考 | |
'baseurlpath' | => | 'simplesaml/' | ||
'auth.adminpassword' | => | '123' | 'samlpass' | '123'のままだとログインできない |
'secretsalt' | => | 'defaultsecretsalt' | eay5trurouz5cgmm1q2leneg6kj3dxz3 | (*1) |
'technicalcontact_name' | => | 'Administrator' | ||
'technicalcontact_email' | => | 'na@example.org' | 'root@app.example.com' | とりあえずローカルのメールアドレス |
'language.default' | => | 'en' | 変更不要 | |
'timezone' | => | null | 変更不要 | (*2) |
$ tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | dd bs=32 count=1 2>/dev/null;echo eay5trurouz5cgmm1q2leneg6kj3dxz3
; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://www.php.net/manual/en/mail.configuration.php#ini.sendmail-path sendmail_path = /usr/sbin/sendmail -t -i
# cd /var/simplesamlphp-1.8.1/cert # openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem # ls saml.crt saml.pem server.crt server.pem
# cat /var/simplesamlphp-1.8.1/config/authsources.php <?php $config = array( (中略) 'default-sp' => array( 'saml:SP', // The entity ID of this SP. // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL. 'entityID' => NULL, // The entity ID of the IdP this should SP should contact. // Can be NULL/unset, in which case the user will be shown a list of available IdPs. 'idp' => 'http://sso.example.com:8080/openam', // The URL to the discovery service. // Can be NULL/unset, in which case a builtin discovery service will be used. 'discoURL' => NULL, 'privatekey' => 'saml.pem', 'certificate' => 'saml.crt', ), /* 'example-sql' => array( (後略)
# /etc/rc.d/init.d/httpd start
# mv saml20-idp-remote.php saml20-idp-remote.php_ # vi saml20-idp-remote.php 1 <?php 2 3 $metadata['http://sso.example.com:8080/openam'] = array ( 4 'entityid' => 'http://sso.example.com:8080/openam', 5 'contacts' => 6 array ( 7 ), 8 'metadata-set' => 'saml20-idp-remote', 9 'SingleSignOnService' => 10 array ( (以下略)
Wordpress | Sp項目 | Idp項目 |
ユーザ名 | uid | uid |
メール | ||
名 | givenName | givenName |
姓 | sn | sn |
権限 | eduPersonEntitlement? | memberOf |
# yum -y install httpd php-* mysql-*
# /sbin/chkconfig --level 35 httpd on # /sbin/chkconfig --level 35 mysqld on # /sbin/chkconfig --list httpd httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # /sbin/chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:on 4:off 5:on 6:off
# /etc/rc.d/init.d/httpd start # /etc/rc.d/init.d/mysqld start
# /usr/bin/mysqladmin -u root password 'mysqlpassword'
# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database wordpressdb; Query OK, 1 row affected (0.00 sec) mysql> grant all on wordpressdb.* to 'wpadmin'@'localhost' identified by 'wppassword'; Query OK, 0 rows affected (0.00 sec) mysql> exit; Bye
$ wget http://ja.wordpress.org/wordpress-3.3-ja.tar.gz
# cd /var/www/html/ # tar -xf /home/kagyuu/ダウンロード/wordpress-3.3-ja.tar.gz # ls wordpress # chown -R apache:apache wordpresswordpress ディレクトリの所有者を apache:apache にするのを忘れずに (wordpress が設定ファイルを書き込めない)
30 $simplesaml_authentication_opt = get_option('simplesaml_authentication_options'); 31 + 32 $simplesaml_authentication_opt = array( + 33 'new_user' => TRUE, + 34 'slo' => FALSE, + 35 'redirect_url' => '', + 36 'email_suffix' => 'example.com', + 37 'sp_auth' => 'default-sp', + 38 'include_path' => '/var/simplesamlphp-1.8.1', + 39 'admin_entitlement' => 'cn=wpadmin,ou=groups,dc=opensso,dc=java,dc=net', + 40 ); 41 42 $simplesaml_configured = true; 43 44 // try to configure the simpleSAMLphp client 45 if ($simplesaml_authentication_opt['include_path'] == '') {Nさんによると、plugin のソースコードを書き換えなくても、Wordpress の [設定] で、同様の設定ができるらしい