Guides: Debian GNU/Linux 6.0 from sources Windows with IIS Solaris from sources
URL: https://help.switch.ch/aai/docs/shibboleth/SWITCH/2.4/sp/deployment/windows-iis.html Author: Lukas Hämmerle - SWITCH $Date: 2012-07-30 11:07:13 +0200 (Mo, 30 Jul 2012) $ $Revision: 1858 $
This guide describes the installation and configuration of a
Shibboleth Sevice Provider (SP)
2.4.3 on a Windows with IIS system.
It covers the installation of the Shibboleth web server module as
well as the Shibboleth daemon and their configuration for the SWITCHaai or AAI Test
federation.
For further information about the Shibboleth Sevice Provider, please have a look at the references.
openssl
and not gnutls
.
In order make configuration easier and more convenient we kindly ask you to provide some information about your environment. This allows aut-generating and custom-tailoring some of the configuration files.
If you are in a hurry and know the whole setup process, you can download all relevant configuration files directly here:
w32time
) has to be activated and well configured.
Servers running Shibboleth
To update, e.g. Shibboleth 2.0 to 2.4.3, use the post-install
archive:
http://shibboleth.net/downloads/service-provider/2.4.3/win32/shibboleth-sp-2.4.3-win32-postinstall.zip or
http://shibboleth.net/downloads/service-provider/2.4.3/win64/shibboleth-sp-2.4.3-win64-postinstall.zip
Services (IIS and Shibboleth) will have to be stopped before the update and
started afterwards.
First of all, download the latest Shibboleth .msi
package from Internet2:
http://shibboleth.net/downloads/service-provider/2.4.3/win32/shibboleth-sp-2.4.3-win32.msi
or
http://shibboleth.net/downloads/service-provider/2.4.3/win64/shibboleth-sp-2.4.3-win64.msi
C:\opt\shibboleth-sp\
as destination folder1600
as port number.sso
as file extension
After rebooting, IIS should be configured for basic support (if you asked it to do so).
If you have problems, need to manually configure it or want to verify what happened, the IIS steps are described here.
For an instant test, if the Shibboleth deamon and ISAPI Filter are working access with your browser to https://localhost/Shibboleth.sso/Metadata. This URL should return the dynamically generated XML metadata of this Service Provider.
Check C:\opt\shibboleth-sp\var\log\shibboleth\
, if the logfiles are created. If not check the permissions.
For creating a self signed certificate follow these steps:
cd C:\opt\shibboleth-sp\etc\shibboleth\ $SHIB_HOME/etc\shibboleth\keygen.bat -h sp.example.org -y 3 -e https://sp.example.org/shibboleth
The Shibboleth Apache module log is configured by C:\opt\shibboleth-sp\etc\shibboleth\native.logger:
... log4j.appender.native_log.fileName=C:\opt\shibboleth-sp\var\log\shibboleth\native.log ... log4j.appender.warn_log.fileName=C:\opt\shibboleth-sp\var\log\shibboleth\native_warn.log ...
The Shibboleth daemon log (shibd.log) and the transaction log (transaction.log) are configured in the file C:\opt\shibboleth-sp\etc\shibboleth\shibd.logger:
... log4j.appender.shibd_log.fileName=C:\opt\shibboleth-sp\var\log\shibboleth\shibd.log ... log4j.appender.warn_log.fileName=C:\opt\shibboleth-sp\var\log\shibboleth\shibd_warn.log ... log4j.appender.tran_log.fileName=C:\opt\shibboleth-sp\var\log\shibboleth\transaction.log ... log4j.appender.sig_log.fileName=C:\opt\shibboleth-sp\var\log\shibboleth\signature.log ...
<SPConfig xmlns="urn:mace:shibboleth:2.0:native:sp:config" xmlns:conf="urn:mace:shibboleth:2.0:native:sp:config" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" clockSkew="180"> <!-- By default, in-memory StorageService, ReplayCache, ArtifactMap, and SessionCache are used. See example-shibboleth2.xml for samples of explicitly configuring them. --> <!-- The OutOfProcess section contains properties affecting the shibd daemon. --> <OutOfProcess logger="C:\opt\shibboleth-sp\etc\shibboleth\shibd.logger"/> <!-- The InProcess section contains settings affecting web server modules. Required for IIS, but can be removed when using other web servers. --> <InProcess logger="C:\opt\shibboleth-sp\etc\shibboleth\native.logger"> <ISAPI normalizeRequest="true" safeHeaderNames="true"> <!-- Maps IIS Instance ID values to the host scheme/name/port. The name is required so that the proper <Host> in the request map above is found without having to cover every possible DNS/IP combination the user might enter. --> <Site id="1" name="sp.example.org"/> <!-- When the port and scheme are omitted, the HTTP request's port and scheme are used. If these are wrong because of virtualization, they can be explicitly set here to ensure proper redirect generation. --> <!-- <Site id="42" name="virtual.example.org" scheme="https" port="443"/> --> </ISAPI> </InProcess> <!-- To customize behavior for specific resources on Apache, and to link vhosts or resources to ApplicationOverride settings below, use web server options/commands. See https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPConfigurationElements for help. For more examples of the RequestMap XML syntax instead, see the example-shibboleth2.xml file, and the https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPRequestMapHowTo topic. --> <RequestMapper type="Native"> <RequestMap applicationId="default"> <!-- The example below requires a session for documents in /secure on the containing host with http and https on the default ports. Note that the name and port in the <Host> elements MUST match Apache's ServerName and Port directives or the IIS Site name in the <ISAPI> element below. --> <Host name="sp.example.org"> <Path name="secure" authType="shibboleth" requireSession="true"/> </Host> </RequestMap> </RequestMapper> <!-- The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined. --> <ApplicationDefaults entityID="https://sp.example.org/shibboleth" homeURL="https://sp.example.org/" REMOTE_USER="uniqueID persistent-id targeted-id" signing="back" requireTransportAuth="false"> <!-- Controls session lifetimes, address checks, cookie handling, and the protocol handlers. You MUST supply an effectively unique handlerURL value for each of your applications. The value defaults to /Shibboleth.sso, and should be a relative path, with the SP computing a relative value based on the virtual host. Using handlerSSL="true", the default, will force the protocol to be https. You should also add a cookieProps setting of "; path=/; secure" in that case. Note that while we default checkAddress to "false", this has a negative impact on the security of the SP. Stealing cookies/sessions is much easier with this disabled. --> <Sessions lifetime="28800" timeout="3600" checkAddress="false" consistentAddress="true" relayState="ss:mem" handlerSSL="true" cookieProps="; path=/; secure; HttpOnly"> <!-- In order to use a default Identity Provider add an attribute like: entityID="https://idp.example.org/shibboleth" to the SSO element. It's value should be the entityID of the default Identity Provider. --> <SSO discoveryProtocol="SAMLDS" discoveryURL="https://wayf.switch.ch/SWITCHaai/WAYF"> SAML2 SAML1 </SSO> <!-- SAML and local-only logout. --> <Logout>SAML2 Local</Logout> <!-- In addition to the standard SessionInitiator it is also possible to define custom SessionInitiators to enforce specific settings. More information is available at: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPSessionInitiator --> <!-- <SessionInitiator type="Chaining" Location="/DS" id="DS" relayState="cookie" isDefault="true"> <SessionInitiator type="SAML2" acsByIndex="false" acsIndex="1" template="bindingTemplate.html" /> <SessionInitiator type="Shib1" acsIndex="5"/> <SessionInitiator type="SAMLDS" URL="https://wayf.switch.ch/SWITCHaai/WAYF"/> </SessionInitiator> --> <!-- Extension service that generates "approximate" metadata based on SP configuration. --> <Handler type="MetadataGenerator" Location="/Metadata" signing="false"/> <!-- Status reporting service. --> <!-- Please note that the IP 130.59.138.32 is used by the AAI Resource Registry. By allowing the Resource Registry to periodically access the status handler, it is possible to monitor this Service Provider and to specifically alert administrators in case of configuration or security relevant issues. If you feel uncomfortable with this, set acl="127.0.0.1" --> <Handler type="Status" Location="/Status" acl="127.0.0.1 ::1 130.59.138.32"/> <!-- Session diagnostic service. --> <Handler type="Session" Location="/Session" showAttributeValues="false"/> <!-- JSON feed of discovery information. --> <!-- <Handler type="DiscoveryFeed" Location="/DiscoFeed"/> --> </Sessions> <!-- Allows overriding of error template information/filenames. You can also add attributes with values that can be plugged into the templates. --> <Errors supportContact="aai@example.org" logoLocation="https://www.switch.ch/aai/design/images/SWITCHaai.gif" styleSheet="https://www.switch.ch/aai/design/shib-error.css"/> <!-- Example of locally maintained metadata. --> <!-- <MetadataProvider type="XML" file="partner-metadata.xml"/> --> <MetadataProvider type="XML" validate="true" uri="http://metadata.aai.switch.ch/metadata.switchaai.xml" backingFilePath="C:\opt\shibboleth-sp\etc\shibboleth\metadata.switchaai.xml" reloadInterval="3600"> <MetadataFilter type="RequireValidUntil" maxValidityInterval="604800"/> <MetadataFilter type="Signature" verifyName="false"> <TrustEngine type="StaticPKIX" certificate="C:\opt\shibboleth-sp\etc\shibboleth\SWITCHaaiRootCA.crt.pem" verifyDepth="2" checkRevocation="fullChain"/> </MetadataFilter> </MetadataProvider> <!-- Map to extract attributes from SAML assertions. --> <AttributeExtractor type="XML" validate="true" reloadChanges="false" path="C:\opt\shibboleth-sp\etc\shibboleth\attribute-map.xml"/> <!-- Use a SAML query if no attributes are supplied during SSO. --> <AttributeResolver type="Query" subjectMatch="false"/> <!-- Default filtering policy for recognized attributes, lets other data pass. --> <AttributeFilter type="XML" validate="true" reloadChanges="false" path="C:\opt\shibboleth-sp\etc\shibboleth\attribute-policy.xml"/> <!-- Simple file-based resolver for using a single keypair. --> <CredentialResolver type="File" key="C:\opt\shibboleth-sp\etc\shibboleth\sp-key.pem" certificate="C:\opt\shibboleth-sp\etc\shibboleth\sp-cert.pem"/> <!-- The default settings can be overridden by creating ApplicationOverride elements (see the https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPApplicationOverride topic). Resource requests are mapped by web server commands, or the RequestMapper, to an applicationId setting. Example of a second application (for a second vhost) that has a different entityID. Resources on the vhost would map to an applicationId of "admin": --> <!-- <ApplicationOverride id="admin" entityID="https://admin.example.org/shibboleth"/> --> </ApplicationDefaults> <!-- Policies that determine how to process and authenticate runtime messages. --> <SecurityPolicyProvider type="XML" validate="true" reloadChanges="false" path="C:\opt\shibboleth-sp\etc\shibboleth\security-policy.xml"/> <!-- Low-level configuration about protocols and bindings available for use. --> <ProtocolProvider type="XML" validate="true" reloadChanges="false" path="C:\opt\shibboleth-sp\etc\shibboleth\protocols.xml"/> </SPConfig>
Download attribute-map.xml to the C:\opt\shibboleth-sp\etc\shibboleth\ directory.
Download attribute-policy.xml to the directory C:\opt\shibboleth-sp\etc\shibboleth\.
Download the trust anchor certificate to verify metadata signatures from
http://ca.aai.switch.ch/SWITCHaaiRootCA.crt.pem
to C:\opt\shibboleth-sp\etc\shibboleth\.
Compare the certificate fingerprint with the fingerprint of the SWITCHaai Root CA certificate shown on https://www.switch.ch/pki/aai/:
openssl.exe x509 -in C:\opt\shibboleth-sp\etc\shibboleth\SWITCHaaiRootCA.crt.pem -fingerprint -sha1 -noout
SHA1 Fingerprint=3C:E2:5A:E0:9D:B4:BB:2B:FD:33:3C:22:80:39:F7:FC:4A:F9:2C:E9
According to the convention, the entityID should have the form of a URL. If the entityID is used as a URL (https://sp.example.org/shibboleth), this URL should return an entity's metadata. In order for this to work, the web server must be configured accordingly.
shibboleth
with the
following properties: (Credits to Mathias Rufer from UNINE) C:\opt\shibboleth-sp\sbin\shibd.exe -check -config C:\opt\shibboleth-sp\etc\shibboleth\shibboleth2.xml
net start shibd_Default
net stop W3SVC net start W3SVC
In order to activate the Service Provider within the federation it is necessary to register it with the Resource Registry. After this procedure, the metadata of this Service Provider will be included in the federation metadata. Therefore, all AAI components will learn about this new Service Provider.
The purpose of the Resource Registry is to have an up-to date list of all Identity Providers and Service Providers in the SWITCHaai Federation.
(See the information about the Resource Registry) in order to generate federation metadata and various configuration files.
If some of the above tests are unsuccessful, we recommend the following procedure:
log4j.appender.native_log.fileName
defined in log4j.appender.shibd_log.fileName
set in
WARN
and ERROR
messages.
C:\opt\shibboleth-sp\var\log\shibboleth\native.log
and C:\opt\shibboleth-sp\var\log\shibboleth\shibd.log
.
log4j.rootCategory
) of C:\opt\shibboleth-sp\etc\shibboleth\native.logger and
C:\opt\shibboleth-sp\etc\shibboleth\shibd.logger to DEBUG
. WARN
or INFO
to prevent your log files from growing too big.
In case you don't understand or don't find the cause of the error, have a look at the NativeSPTroubleshootingCommonErrors web page.
Some good practices according Service Provider productionalization:
<Errors session="sessionError.html" metadata="metadataError.html" access="accessError.html" ssl="sslError.html" localLogout="localLogout.html" globalLogout="globalLogout.html" supportContact="aai@example.org" logoLocation="https://www.switch.ch/aai/design/images/SWITCHaai.gif" styleSheet="https://www.switch.ch/aai/design/shib-error.css"/>Adjust at minimum the logoLocation and styleSheet. You may want to fully customize the html pages.
-- $Id: index.php 1858 2012-07-30 09:07:13Z haemmer $