#author("2020-06-06T18:11:16+09:00","default:tanak0to","tanak0to") RIGHT:[[フリーソフトウェアのコンパイル]] 参考: https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=20021624 環境: RHEL7 *あらかじめ必要なもの [#b5407dc6] -openldap をインストール **jdk のインストール [#p430ece4] # yum install java-1.8.0-openjdk **tomcat 7のインストール [#o4166de3] # yum install tomcat # systemctl enable tocmat /etc/sysconfig/tomcatを編集し、JAVA_OPTSを設定 #JAVA_OPTS="-Xminf0.1 -Xmaxf0.3" JAVA_OPTS="-server -Xmx1500m -XX:+UseG1GC " /etc/profile.d/java-tomcat.sh という新規ファイルを以下の内容で作成 # /etc/profile.d/java-tomcat.sh JAVA_HOME=/usr/lib/jvm/jre #export MANPATH=$MANPATH:/usr/java/default/man CATALINA_HOME=/usr/share/tomcat CATALINA_BASE=$CATALINA_HOME PATH=$JAVA_HOME/bin:$CATALINA_BASE/bin:$CATALINA_HOME/bin:$PATH export PATH JAVA_HOME CATALINA_HOME CATALINA_BASE server.xmlの修正 <!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> --> Connector port="8009"に以下のように追加 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" enableLookups="false" tomcatAuthentication="false" address="127.0.0.1" maxPostSize="100000" /> **httpd をインストール [#o61abc52] /etc/httpd/conf/httpd.conf の修正 #ServerName idp.example.jp:80 ←ホスト名 ↑コメントアウト(#)を削除 /etc/httpd/conf.d/ssl.conf の修正 <VirtualHost _default_:443> (省略) #ServerName idp.example.jp:443 ←ホスト名 ↑コメントアウト(#)を削除 ProxyPass /idp/ ajp://localhost:8009/idp/ ←追加 (省略) SSLProtocol all -SSLv2 -SSLv3 /etc/httpd/conf.d/virtualhost-localhost80.conf を以下の内容で作成 <VirtualHost localhost:80> ProxyPass /idp/ ajp://localhost:8009/idp/ </VirtualHost> ------------------------- *Shibbolethのインストール [#tc54d06f] # tar xzvf shibboleth-identity-provider-3.?.?.tar.gz # cd shibboleth-identity-provider-3.?.? # ./bin/install.sh -Didp.conf.filemode=640 Source (Distribution) Directory: [/root/PKG/shibboleth-identity-provider-3.1.2] [Enter] ←入力なし Installation Directory: [/opt/shibboleth-idp] [Enter] ←入力なし Hostname: [idp.example.jp] [Enter] ←入力なし SAML EntityID: [https://idp.example.jp/idp/shibboleth] [Enter] ←入力なし Attribute Scope: [example.jp] [Enter] ←入力なし Backchannel PKCS12 Password: *******[Enter] ←任意のパスワード Re-enter password: ******[Enter] Cookie Encryption Key Password: ******[Enter] ←任意のパスワード Re-enter password: *******[Enter] (省略) BUILD SUCCESSFUL Total time: 2 minutes 9 seconds **パーミッションの調整 [#k794cbd0] # chown -R tomcat:tomcat /opt/shibboleth-idp/logs # chgrp -R tomcat /opt/shibboleth-idp/conf # chmod -R g+r /opt/shibboleth-idp/conf # find /opt/shibboleth-idp/conf -type d -exec chmod -R g+s {} \; # chgrp tomcat /opt/shibboleth-idp/metadata # chmod g+w /opt/shibboleth-idp/metadata # chmod +t /opt/shibboleth-idp/metadata **jakarta-taglibs-core.jar と jakarta-taglibs-standard.jar の配置 [#n2a27219] # yum install jakarta-taglibs-standard # ln -s /usr/share/java/jakarta-taglibs-core.jar /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/jakarta-taglibs-core.jar # ln -s /usr/share/java/jakarta-taglibs-standard.jar /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/jakarta-taglibs-standard.jar # /opt/shibboleth-idp/bin/build.sh Installation Directory: [/opt/shibboleth-idp] [Enter] ←入力なし Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done BUILD SUCCESSFUL Total time: 3 seconds **idp.war の登録 [#rbd71297] ${CATALINA_BASE}/conf/Catalina/localhost/idp.xml という 新規ファイルを以下の内容で作成し,idp.war を Tomcat が認識できるようにする. <Context docBase="/opt/shibboleth-idp/war/idp.war" privileged="true" antiResourceLocking="false" swallowOutput="true"> <Manager pathname="" /> <!-- For Tomcat 8.0: work around lack of Max-Age support in IE/Edge --> <CookieProcessor alwaysAddExpires="true" /> </Context> 以下のエラーは無視してよい WARNING: No rules found matching 'Context/CookieProcessor'. httpd の再起動と Tomcat の起動 # systemctl restart httpd # systemctl start tomcat ------------------------- *設定 [#y03e8e8a] **1. metadata-providers.xml [#i23c99ea] 運用フェデレーション メタデータのダウンロード URL: https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml 検証用証明書 /opt/shibboleth-idp/credentials/gakunin-signer-2017.cer **2. idp.proprties [#h9cd1564] IdPのentityIDやScopeや証明書などのプロパティ値を idp.properties ファイルに設定 entityID や Scope は,インストール時に入力した値で設定されているので, 証明書の設定だけでいいはず. **3. 証明書 [#pd5880c1] 参照先ディレクトリ(/opt/shibboleth-idp/credentials/)に, サーバ証明書(server.crt)と秘密鍵(server.key)をそれぞれのファイル名でコピー. また,Tomcat が "tomcat" ユーザで起動されるようになっている場合は, 秘密鍵にアクセス権限をかけるとともに "tomcat" ユーザで参照できるように設定する. chown root:tomcat /opt/shibboleth-idp/credentials/server.key chmod 640 /opt/shibboleth-idp/credentials/server.key /opt/shibboleth-idp/conf/idp.properties ファイルを以下のように編集. idp.signing.key= %{idp.home}/credentials/server.key idp.signing.cert= %{idp.home}/credentials/server.crt idp.encryption.key= %{idp.home}/credentials/server.key idp.encryption.cert= %{idp.home}/credentials/server.ctr idp.entityID.metadataFile を空にし, entityID を URL としてアクセスした際に /opt/shibboleth-idp/metadata/idp-metadata.xml の内容が返される機能を無効化する. **4. ldap.properties [#o4fd32d9] 認証先LDAPの設定 (ldapURL,useStartTLS, baseDN, subtreeSearch, userFilter, bindDN, bindDNCredential idp.authn.LDAP.authenticator = ldapURL idp.authn.LDAP.ldapURL = ldap://ldap01.example.jp ldap://ldap02.example.jp idp.authn.LDAP.useStartTLS = false #idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt #idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore idp.authn.LDAP.baseDN = ou=Poeple,dc=ldap,dc=example,dc=jp idp.authn.LDAP.subtreeSearch = true idp.authn.LDAP.bindDN = cn=ldapProxy,dc=ldap,dc=example.jp idp.authn.LDAP.bindDNCredential = ****** **5. saml-nameid.properties [#f773bc15] 主な設定内容: idp.persistentIdの設定 現状は設定変更していない感じだが...学認の手順どおりに変更しておく idp.persistentId.sourceAttribute = uid idp.persistentId.salt = *********************** idp.persistentId.encoding = BASE64 **6. attribute-resolver.xml [#j58d3e54] 主な設定内容: IdPで取り扱う属性情報の設定 属性情報の取得元の設定(LDAP,ComputedID等) 学認のテンプレートと入れ替える **7. attribute-filter.xml [#d940eb82] 主な設定内容: attribute-resolverで設定した属性情報のうち,送信する属性を各SP毎に設定. 学認のテンプレートと入れ替える