| | 106 | |
| | 107 | |
| | 108 | == Shibboleth SP Installation == |
| | 109 | |
| | 110 | Install needed packages: |
| | 111 | |
| | 112 | {{{ apt install libapache2-mod-shib ntp --no-install-recommends }}} |
| | 113 | |
| | 114 | === Shibboleth SP Configuration === |
| | 115 | |
| | 116 | |
| | 117 | Both of these web apps will be connected to LIAF, therefore, download Federation Metadata Signing Certificate: |
| | 118 | |
| | 119 | {{{ |
| | 120 | cd /etc/shibboleth/ |
| | 121 | wget https://fr.ac.lk/signedmetadata/metadata-signer -O federation-cert.pem |
| | 122 | }}} |
| | 123 | |
| | 124 | Edit shibboleth2.xml opportunely: {{{ vim /etc/shibboleth/shibboleth2.xml }}} |
| | 125 | |
| | 126 | some code |
| | 127 | |
| | 128 | {{{ |
| | 129 | #!xml |
| | 130 | . . . |
| | 131 | |
| | 132 | <!-- The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined. --> |
| | 133 | <ApplicationDefaults entityID="https://wp.Your-Domain/shibboleth" |
| | 134 | REMOTE_USER="eppn subject-id pairwise-id persistent-id" |
| | 135 | cipherSuites="DEFAULT:!EXP:!LOW:!aNULL:!eNULL:!DES:!IDEA:!SEED:!RC4:!3DES:!kRSA:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1"> |
| | 136 | |
| | 137 | . . . |
| | 138 | |
| | 139 | <Sessions lifetime="28800" timeout="3600" relayState="ss:mem" |
| | 140 | checkAddress="false" handlerSSL="true" cookieProps="https"> |
| | 141 | |
| | 142 | . . . |
| | 143 | |
| | 144 | <SSO discoveryProtocol="SAMLDS" discoveryURL="https://fds.ac.lk"> |
| | 145 | SAML2 |
| | 146 | </SSO> |
| | 147 | |
| | 148 | . . . |
| | 149 | |
| | 150 | <Errors supportContact="you@you-domain" |
| | 151 | helpLocation="/about-this-service.html" |
| | 152 | styleSheet="/shibboleth-sp/main.css"/> |
| | 153 | |
| | 154 | . . . |
| | 155 | |
| | 156 | <MetadataProvider type="XML" url="https://fr.ac.lk/signedmetadata/metadata.xml" legacyOrgName="true" backingFilePath="test-metadata.xml" reloadInterval="600"> |
| | 157 | |
| | 158 | <MetadataFilter type="Signature" certificate="federation-cert.pem" verifyBackup="false"/> |
| | 159 | |
| | 160 | <MetadataFilter type="RequireValidUntil" maxValidityInterval="864000" /> |
| | 161 | </MetadataProvider> |
| | 162 | |
| | 163 | . . . |
| | 164 | |
| | 165 | <!-- Simple file-based resolvers for separate signing/encryption keys. --> |
| | 166 | <CredentialResolver type="File" use="signing" |
| | 167 | key="wp-signing-key.pem" certificate="wp-signing-cert.pem"/> |
| | 168 | <CredentialResolver type="File" use="encryption" |
| | 169 | key="wp-encrypt-key.pem" certificate="wp-encrypt-cert.pem"/> |
| | 170 | |
| | 171 | <ApplicationOverride id="mdl" entityID="https://mdl.Your-Domain/shibboleth"> |
| | 172 | <CredentialResolver type="File" use="signing" |
| | 173 | key="mdl-signing-key.pem" certificate="mdl-signing-cert.pem"/> |
| | 174 | <CredentialResolver type="File" use="encryption" |
| | 175 | key="mdl-encrypt-key.pem" certificate="mdl-encrypt-cert.pem"/> |
| | 176 | </ApplicationOverride> |
| | 177 | </ApplicationDefaults> |
| | 178 | |
| | 179 | <!-- Policies that determine how to process and authenticate runtime messages. --> |
| | 180 | <SecurityPolicyProvider type="XML" validate="true" path="security-policy.xml"/> |
| | 181 | |
| | 182 | }}} |
| | 183 | |
| | 184 | Above snippet defines two service providers for shibboleth under two different entity id's. |
| | 185 | |
| | 186 | Default application as {{{ entityID="https://wp.Your-Domain/shibboleth" }}} and the second as an override with id mdl {{{ <ApplicationOverride id="mdl" entityID="https://mdl.Your-Domain/shibboleth"> }}} |
| | 187 | |
| | 188 | Both entities will have common features like metadata providers, attribute maps. But they will have two different certificate sets. |
| | 189 | |
| | 190 | Now lets create those certificate pairs. |
| | 191 | |
| | 192 | * {{{ /usr/sbin/shib-keygen -n wp-signing -e https://wp.YOUR-DOMAIN/shibboleth }}} |
| | 193 | * {{{ /usr/sbin/shib-keygen -n wp-encrypt -e https://wp.YOUR-DOMAIN/shibboleth }}} |
| | 194 | * {{{ /usr/sbin/shib-keygen -n mdl-signing -e https://mdl.YOUR-DOMAIN/shibboleth }}} |
| | 195 | * {{{ /usr/sbin/shib-keygen -n mdl-encrypt -e https://mdl.YOUR-DOMAIN/shibboleth }}} |
| | 196 | |
| | 197 | Then check the shibboleth configuration for errors by, |
| | 198 | |
| | 199 | {{{ shibd -t /etc/shibboleth/shibboleth2.xml }}} |
| | 200 | |
| | 201 | Next, enable apache shibboleth module and restart apache. |
| | 202 | |
| | 203 | {{{ |
| | 204 | #!bash |
| | 205 | a2enmod shib2 |
| | 206 | systemctl reload apache2.service |
| | 207 | }}} |