This GridShib Installation Guide shows how to install Globus Java WS Core 4.0, GridShib for GT v0.6, and GridShib SAML Tools v0.3 on Windows. We use the GridShib CA v0.5 to bootstrap your X.509 environment, which is required to run a Globus container or issue an X.509-bound SAML token.
Software requirements include JDK 1.4.2 (or higher) and Ant 1.6 (or higher), which we assume are already installed. In addition to these general software requirements, we assume that you have Java Web Start installed so that we can leverage the GridShib CA to obtain credentials via the browser. Please check for a proper installation of Java Web Start before continuing.
A lightweight alternative to installing the full Globus Toolkit (GT) is to install Java WS Core 4.0 and then install GridShib for GT on top of that. In fact, this is the only option under Windows, which does not support the full Globus Toolkit, so this document shows how to layer GridShib for GT on top of Java WS Core on a Windows system.
Contents
We will install each of the software components (JWS Core, GridShib for GT, GridShib SAML Tools) as the globus user:
> echo %USERPROFILE% C:\Documents and Settings\globus
You may install the software as any user you want as long as that same user starts and stops the container.
This section shows how to install a JWS Core 4.0 container on a Windows system.
We extract the JWS Core archive into c:\globus. If this folder does not exist on your system, create it now.
GLOBUS_LOCATION environment variable (which is case sensitive, even on Windows in this particular case):
> cd c:\globus\ws-core-4.0.7-bin\ws-core-4.0.7 > set GLOBUS_LOCATION=%CD% > echo %GLOBUS_LOCATION%
%GLOBUS_LOCATION%\container-log4j.properties:
log4j.category.org.globus.gridshib=DEBUG
> bin\globus-start-container -nosec Starting SOAP server at: http://141.142.250.163:8080/wsrf/services/ With the following services: [1]: http://141.142.250.163:8080/wsrf/services/AdminService [2]: http://141.142.250.163:8080/wsrf/services/AuthzCalloutTestService [3]: http://141.142.250.163:8080/wsrf/services/ContainerRegistryEntryService [4]: http://141.142.250.163:8080/wsrf/services/ContainerRegistryService [5]: http://141.142.250.163:8080/wsrf/services/CounterService [6]: http://141.142.250.163:8080/wsrf/services/JWSCoreVersion [7]: http://141.142.250.163:8080/wsrf/services/ManagementService [8]: http://141.142.250.163:8080/wsrf/services/NotificationConsumerFactoryService [9]: http://141.142.250.163:8080/wsrf/services/NotificationConsumerService [10]: http://141.142.250.163:8080/wsrf/services/NotificationTestService [11]: http://141.142.250.163:8080/wsrf/services/PersistenceTestSubscriptionManager [12]: http://141.142.250.163:8080/wsrf/services/SampleAuthzService [13]: http://141.142.250.163:8080/wsrf/services/SecureCounterService [14]: http://141.142.250.163:8080/wsrf/services/SecurityTestService [15]: http://141.142.250.163:8080/wsrf/services/ShutdownService [16]: http://141.142.250.163:8080/wsrf/services/SubscriptionManagerService [17]: http://141.142.250.163:8080/wsrf/services/TestAuthzService [18]: http://141.142.250.163:8080/wsrf/services/TestRPCService [19]: http://141.142.250.163:8080/wsrf/services/TestService [20]: http://141.142.250.163:8080/wsrf/services/TestServiceRequest [21]: http://141.142.250.163:8080/wsrf/services/TestServiceWrongWSDL [22]: http://141.142.250.163:8080/wsrf/services/Version [23]: http://141.142.250.163:8080/wsrf/services/WidgetNotificationService [24]: http://141.142.250.163:8080/wsrf/services/WidgetService [25]: http://141.142.250.163:8080/wsrf/services/gsi/AuthenticationServicePress Ctrl-C to abort the container.
> dir "%USERPROFILE%\.globus\certificates\bfcd1f28.*" ... 02/19/2007 10:15 PM 1,667 bfcd1f28.0 02/19/2007 10:15 PM 239 bfcd1f28.signing_policy
-nosec) than to stop a secure container.> echo %GLOBUS_LOCATION% > bin\globus-start-container -nosec Starting SOAP server at: http://141.142.250.163:8080/wsrf/services/ With the following services...
> cd c:\globus\ws-core-4.0.5-bin\ws-core-4.0.5
> set GLOBUS_LOCATION=%CD%
> echo %GLOBUS_LOCATION%
> bin\globus-stop-container -m msg
-s http://localhost:8080/wsrf/services/ShutdownService
2008-04-25 15:23:31,817 ERROR securemsg.X509SignHandler
[main,handleMessage:109] Failed to sign message
org.globus.gsi.GlobusCredentialException: Proxy file
(C:\DOCUME~1\GLOBUS\LOCALS~1\Temp\x509up_u_globus) not found.
> echo %TEMP%\x509up_u_%USERNAME% C:\DOCUME~1\GLOBUS\LOCALS~1\Temp\x509up_u_globus > dir "%TEMP%\x509up_u_%USERNAME%" 04/25/2008 03:47 PM 8,051 x509up_u_globus
> bin\globus-stop-container -m msg
-s http://localhost:8080/wsrf/services/ShutdownService
> echo %GLOBUS_LOCATION% > bin\globus-start-container Starting SOAP server at: https://141.142.250.163:8443/wsrf/services/ With the following services...
> echo %GLOBUS_LOCATION% > bin\globus-stop-container
SecureCounterService, authenticating with your EEC via Secure Conversation.
> echo %GLOBUS_LOCATION% > bin\globus-start-container Starting SOAP server at: https://141.142.250.163:8443/wsrf/services/ With the following services...
> echo %GLOBUS_LOCATION%
> bin\counter-client -m conv -z none
-s https://localhost:8443/wsrf/services/SecureCounterService
Got notification with value: 3
Counter has value: 3
Got notification with value: 13> bin\globus-stop-container
This section shows how to deploy GridShib for GT v0.6 into a JWS Core 4.0 container on a Windows system. Follow these steps regardless of the underlying Globus Java WS Core version. The GridShib for GT installer will auto-detect the JWS Core version and install the appropriate files in the correct locations.
%GLOBUS_LOCATION%.
> cd c:\gridshib\gridshib-gt-X_X_X-src\gridshib-gt-X_X_X > echo %GLOBUS_LOCATION% > ant undeploy > ant undeploy-echoservice > ant undeploy-tests
> cd c:\gridshib\gridshib-gt-0_6_0-src\gridshib-gt-0_6_0 > echo %GLOBUS_LOCATION% > ant deploy > ant deploy-echoservice
SecurityContextEchoService, authenticating with your EEC.
NameIdentifier element in the bound assertion. There will also be two attributes in the logs.> bin\globus-start-container Starting SOAP server at: https://141.142.250.163:8443/wsrf/services/ With the following services: [1]: https://141.142.250.163:8443/wsrf/services/AdminService [2]: https://141.142.250.163:8443/wsrf/services/AuthzCalloutTestService [3]: https://141.142.250.163:8443/wsrf/services/ContainerRegistryEntryService [4]: https://141.142.250.163:8443/wsrf/services/ContainerRegistryService [5]: https://141.142.250.163:8443/wsrf/services/CounterService [6]: https://141.142.250.163:8443/wsrf/services/ManagementService [7]: https://141.142.250.163:8443/wsrf/services/NotificationConsumerFactoryService [8]: https://141.142.250.163:8443/wsrf/services/NotificationConsumerService [9]: https://141.142.250.163:8443/wsrf/services/NotificationTestService [10]: https://141.142.250.163:8443/wsrf/services/PersistenceTestSubscriptionManager [11]: https://141.142.250.163:8443/wsrf/services/SampleAuthzService [12]: https://141.142.250.163:8443/wsrf/services/SecureCounterService [13]: https://141.142.250.163:8443/wsrf/services/SecurityContextEchoService [14]: https://141.142.250.163:8443/wsrf/services/SecurityTestService [15]: https://141.142.250.163:8443/wsrf/services/ShutdownService [16]: https://141.142.250.163:8443/wsrf/services/SubscriptionManagerService [17]: https://141.142.250.163:8443/wsrf/services/TestAuthzService [18]: https://141.142.250.163:8443/wsrf/services/TestRPCService [19]: https://141.142.250.163:8443/wsrf/services/TestService [20]: https://141.142.250.163:8443/wsrf/services/TestServiceRequest [21]: https://141.142.250.163:8443/wsrf/services/TestServiceWrongWSDL [22]: https://141.142.250.163:8443/wsrf/services/Version [23]: https://141.142.250.163:8443/wsrf/services/WidgetNotificationService [24]: https://141.142.250.163:8443/wsrf/services/WidgetService [25]: https://141.142.250.163:8443/wsrf/services/gsi/AuthenticationServiceNote that the
SecurityContextEchoService is now running in the container.%TEMP%\testcredential.pem), set your environment, and request the service:
> copy "%TEMP%\x509up_u_%USERNAME%" %TEMP%\testcredential.pem
> set X509_USER_PROXY=%TEMP%\testcredential.pem
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
---------
Response:
---------
Principal {
name='/DC=edu/DC=uiuc/DC=ncsa/DC=computer/O=Shibboleth User
/OU=https://idp.protectnetwork.org/protectnetwork-idp
/CN=trscavo@idp.protectnetwork.org'
}
(untrusted) SAMLIdentity {
issuer='https://test-sp.ncsa.uiuc.edu/shibboleth'
nameID='<NameIdentifier
xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName">
CN=trscavo@idp.protectnetwork.org,
OU=https://idp.protectnetwork.org/protectnetwork-idp,
O=Shibboleth User,DC=computer,DC=ncsa,DC=uiuc,DC=edu
</NameIdentifier>'
}
(untrusted) BasicAttribute {
issuer='https://test-sp.ncsa.uiuc.edu/shibboleth'
name='http://gridshib.globus.org/testAttribute'
nameFormat='urn:mace:shibboleth:1.0:attributeNamespace:uri'
value #1='testValueTwo'
value #2='testValue'
}
(untrusted) BasicAttribute {
issuer='https://test-sp.ncsa.uiuc.edu/shibboleth'
name='http://gridshib.globus.org/testAttributeTwo'
nameFormat='urn:mace:shibboleth:1.0:attributeNamespace:uri'
value #1='testValue'
}
There are a total of four (4) items in the above response:
Principal item, the Subject DN of your GridShib CA-issued EECSAMLIdentity item, corresponding to the <NameIdentifier> element in the bound SAML assertionBasicAttribute items, corresponding to the SAML <Attribute> elements in the bound SAML assertionPrincipal item are labeled (untrusted). This is because these items have not yet been subjected to policy and are therefore only provisionally accepted by GridShib for GT.The principal name in the above response is the Subject DN of the authenticated user.
This section shows how to deploy GridShib SAML Tools v0.3 on Windows.
We extract the GridShib SAML Tools archive into c:\gridshib. If this folder does not exist on your system, create it now.
c:\gridshib).> cd c:\gridshib\gridshib-saml-tools-0_3_x > set GRIDSHIB_HOME=%CD% > ant installSee the GridShib SAML Tools Installation Notes for more information.
> echo %TEMP%\x509up_u_%USERNAME% C:\DOCUME~1\GLOBUS\LOCALS~1\Temp\x509up_u_globus > echo %USERPROFILE%\Local Settings\Temp\x509up_u_%USERNAME% C:\Documents and Settings\globus\Local Settings\Temp\x509up_u_globus
%GRIDSHIB_HOME%\etc\test-saml-issuer.properties) with the following lines:
# BEGIN test-saml-issuer.properties # SAML NameIdentifier NameID.Format=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified NameID.Format.template=%PRINCIPAL% # FriendlyName="mail" Attribute.mail.Namespace=urn:mace:shibboleth:1.0:attributeNamespace:uri Attribute.mail.Name=urn:oid:0.9.2342.19200300.100.1.3 Attribute.mail.Value=trscavo@gmail.com # X.509 Issuing Credential certLocation=file:///C:/Documents%20and%20Settings/globus/Local%20Settings/Temp/x509up_u_globus keyLocation=file:///C:/Documents%20and%20Settings/globus/Local%20Settings/Temp/x509up_u_globus # END test-saml-issuer.propertiesBe sure to use proper URI syntax by converting backslashes (to forward slashes) and encoding spaces as illustrated above.
SecurityContextEchoService, authenticating with a level 1 proxy credential.
SecurityContextEchoService will be the combined security information from both the GridShib CA-issued EEC and the proxy certificate.> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer
--user trscavo --holder-of-key
--config %GRIDSHIB_HOME%\etc\test-saml-issuer.properties
--x509 --outfile %TEMP%\testcredential.pem
As indicated by the --holder-of-key option, an implicit holder-of-key SAML assertion will be bound to the proxy certificate. Since the requester is the subject (as indicated by the holder-of-key assertion), the security information in the proxy is said to be self-asserted.> set X509_USER_PROXY=%TEMP%\testcredential.pem
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
---------
Response:
---------
Principal {
name='/DC=edu/DC=uiuc/DC=ncsa/DC=computer/O=Shibboleth User/
OU=urn:mace:inqueue:shib13.openidp.org/CN=trscavo@openidp.org'
}
(untrusted) SAMLIdentity {
issuer='CN=trscavo@openidp.org,
OU=urn:mace:inqueue:shib13.openidp.org,O=Shibboleth User,
DC=computer,DC=ncsa,DC=uiuc,DC=edu'
nameID='<NameIdentifier
xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">
trscavo</NameIdentifier>'
}
(untrusted) SAMLIdentity {
issuer='https://test-sp.ncsa.uiuc.edu/shibboleth'
nameID='<NameIdentifier
xmlns="urn:oasis:names:tc:SAML:1.0:assertion"
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"
xmlns:samlsap="urn:oasis:names:tc:SAML:1.1:profiles:assertion:subject"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName">
CN=trscavo@openidp.org,OU=urn:mace:inqueue:shib13.openidp.org,
O=Shibboleth User,DC=computer,DC=ncsa,DC=uiuc,DC=edu</NameIdentifier>'
}
(untrusted) BasicAttribute {
issuer='https://test-sp.ncsa.uiuc.edu/shibboleth'
name='http://gridshib.globus.org/testAttribute'
nameFormat='urn:mace:shibboleth:1.0:attributeNamespace:uri'
value #1='testValueTwo'
value #2='testValue'
}
(untrusted) BasicAttribute {
issuer='https://test-sp.ncsa.uiuc.edu/shibboleth'
name='http://gridshib.globus.org/testAttributeTwo'
nameFormat='urn:mace:shibboleth:1.0:attributeNamespace:uri'
value #1='testValue'
}
(untrusted) BasicAttribute {
issuer='CN=trscavo@openidp.org,
OU=urn:mace:inqueue:shib13.openidp.org,O=Shibboleth User,
DC=computer,DC=ncsa,DC=uiuc,DC=edu'
name='urn:oid:0.9.2342.19200300.100.1.3'
nameFormat='urn:mace:shibboleth:1.0:attributeNamespace:uri'
value #1='trscavo@gmail.com'
}
As you can see, there are a total of six (6) items in the above response:
Principal item, the Subject DN of your GridShib CA-issued EECSAMLIdentity items, corresponding to the NameIdentifier elements in the bound SAML assertionsBasicAttribute item, one corresponding to the SAMLAttribute element bound to the proxy certificate and the other two asserted by the GridShib CASAMLIdentity items and the BasicAttribute item are labeled (untrusted). This is because these items have not yet been subjected to policy and are therefore only provisionally accepted by GridShib for GT.)