A lightweight alternative to installing the full Globus Toolkit (GT) is to only install the Java WS Core component of GT4, 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 the following guide shows how to layer GridShib for GT on top of Java WS Core.
This "Quick Start" guide gives detailed instructions for installing, configuring, and using Java WS Core 4.0.4, GridShib for GT v0.6.0, and GridShib SAML Tools v0.1.4. This software stack will run on a wide variety of platforms, including Windows. Software requirements include JDK 1.4.2 (or higher) and Ant 1.6 (or higher), which we assume are already installed on the platform of choice.
Like the Globus Toolkit Quick Start guide, the following Quick Start will show how to install and configure the software on two systems, which we call local host and remote host. In addition to the general software requirements mentioned above, we assume local host has Java Web Start installed so that we can leverage the GridShib CA to obtain credentials. Please check for Java Web Start on local host before continuing.
For the purposes of this Quick Start, we will assume that local host is a Windows system while remote host is a UNIX system. Other platform combinations are possible of course.
Contents
GLOBUS_LOCATION environment variable (which is case sensitive, even on Windows in this case):
> cd c:\globus\ws-core-4.0.4-bin\ws-core-4.0.4 > set GLOBUS_LOCATION=%CD% > echo %GLOBUS_LOCATION%
log4j.category.org.globus.gridshib.gt=DEBUG
> bin\globus-start-container -nosec Starting SOAP server at: http://141.142.251.212:8080/wsrf/services/ With the following services: [1]: http://141.142.251.212:8080/wsrf/services/AdminService [2]: http://141.142.251.212:8080/wsrf/services/AuthzCalloutTestService [3]: http://141.142.251.212:8080/wsrf/services/ContainerRegistryEntryService [4]: http://141.142.251.212:8080/wsrf/services/ContainerRegistryService [5]: http://141.142.251.212:8080/wsrf/services/CounterService [6]: http://141.142.251.212:8080/wsrf/services/ManagementService [7]: http://141.142.251.212:8080/wsrf/services/NotificationConsumerFactoryService [8]: http://141.142.251.212:8080/wsrf/services/NotificationConsumerService [9]: http://141.142.251.212:8080/wsrf/services/NotificationTestService [10]: http://141.142.251.212:8080/wsrf/services/PersistenceTestSubscriptionManager [11]: http://141.142.251.212:8080/wsrf/services/SampleAuthzService [12]: http://141.142.251.212:8080/wsrf/services/SecureCounterService [13]: http://141.142.251.212:8080/wsrf/services/SecurityTestService [14]: http://141.142.251.212:8080/wsrf/services/ShutdownService [15]: http://141.142.251.212:8080/wsrf/services/SubscriptionManagerService [16]: http://141.142.251.212:8080/wsrf/services/TestAuthzService [17]: http://141.142.251.212:8080/wsrf/services/TestRPCService [18]: http://141.142.251.212:8080/wsrf/services/TestService [19]: http://141.142.251.212:8080/wsrf/services/TestServiceRequest [20]: http://141.142.251.212:8080/wsrf/services/TestServiceWrongWSDL [21]: http://141.142.251.212:8080/wsrf/services/Version [22]: http://141.142.251.212:8080/wsrf/services/WidgetNotificationService [23]: http://141.142.251.212:8080/wsrf/services/WidgetService [24]: http://141.142.251.212:8080/wsrf/services/gsi/AuthenticationServicePress Ctrl-C to abort the container.
> dir "%USERPROFILE%\.globus\certificates" ... 02/19/2007 10:15 PM 1,667 bfcd1f28.0 02/19/2007 10:15 PM 239 bfcd1f28.signing_policy
> echo %GLOBUS_LOCATION% > bin\globus-start-container -nosec Starting SOAP server at: http://141.142.251.212:8080/wsrf/services/ With the following services...
> cd c:\globus\ws-core-4.0.4-bin\ws-core-4.0.4 > set GLOBUS_LOCATION=%CD% > echo %GLOBUS_LOCATION% > bin\globus-stop-container -s http://localhost:8080/wsrf/services/ShutdownService Error: ; nested exception is: GSSException: Defective credential detected [Caused by: Proxy file (C:\DOCUME~1\TOMSCA~1\LOCALS~1\Temp\x509up_u_tom scavo) not found.]
> bin\globus-stop-container -s http://localhost:8080/wsrf/services/ShutdownService Error: ; nested exception is: java.net.ConnectException: Connection refused: connect
> bin\globus-stop-container -s http://localhost:8080/wsrf/services/ShutdownService -m msg
> 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
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.> echo %GLOBUS_LOCATION% > bin\globus-start-container Starting SOAP server at: https://141.142.250.163:8443/wsrf/services/ With the following services...
> copy "%TEMP%\x509up_u_%USERNAME%" c:\temp\testcredential.pem
> set X509_USER_PROXY=c:\temp\testcredential.pem
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
---------
Response:
---------
Security context for identity '/DC=edu/DC=uiuc/DC=ncsa/DC=computer/O=Shibboleth User
/OU=urn:mace:inqueue:shib13.openidp.org
/CN=trscavo@openidp.org'
SAMLIdentity {
issuer='CN=GridShib CA,O=Certificate Authority,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: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>'
}
Principal {
username='/DC=edu/DC=uiuc/DC=ncsa/DC=computer/O=Shibboleth User
/OU=urn:mace:inqueue:shib13.openidp.org
/CN=trscavo@openidp.org'
}> cd c:\gridshib\gridshib-saml-tools-0_1_4 > set GRIDSHIB_HOME=%CD% > ant install
# an EEC issued by the GridShib CA certLocation=file:/%TEMP%/x509up_u_%USERNAME% keyLocation=file:/%TEMP%/x509up_u_%USERNAME%Replace the placeholders
%TEMP% and %USERNAME% with their actual values, changing the backslashes to forward slashes for proper URL syntax.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
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password> set X509_USER_PROXY=c:\temp\testcredential.pem
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
You should receive a total of six (6) items in the response:
SAMLIdentity items, corresponding to the NameIdentifier elements in the bound SAML assertionsSAMLAuthnContext item, corresponding to the SAMLAuthenticationStatement element in the SAML assertion bound to the proxy certificateBasicAttribute items, corresponding to the SAMLAttribute elements bound to the proxy certificatePrincipal item, the Subject DN of your GridShib CA-issued EEC
BasicAttribute items are labeled (raw). This is because these attributes have not yet been subjected to policy and are therefore only provisionally accepted by GridShib for GT.$ cd $ gunzip /tmp/ws-core-4.0.4-bin.tar.gz $ tar xvf /tmp/ws-core-4.0.4-bin.tar
GLOBUS_LOCATION environment variable (which is case sensitive):
$ cd ~/ws-core-4.0.4 $ export GLOBUS_LOCATION=`pwd` $ echo $GLOBUS_LOCATION
log4j.category.org.globus.gridshib.gt=DEBUG
> ./bin/globus-start-container -nosec Starting SOAP server at: http://141.142.251.212:8080/wsrf/services/ With the following services: [1]: http://141.142.251.212:8080/wsrf/services/AdminService [2]: http://141.142.251.212:8080/wsrf/services/AuthzCalloutTestService [3]: http://141.142.251.212:8080/wsrf/services/ContainerRegistryEntryService [4]: http://141.142.251.212:8080/wsrf/services/ContainerRegistryService [5]: http://141.142.251.212:8080/wsrf/services/CounterService [6]: http://141.142.251.212:8080/wsrf/services/ManagementService [7]: http://141.142.251.212:8080/wsrf/services/NotificationConsumerFactoryService [8]: http://141.142.251.212:8080/wsrf/services/NotificationConsumerService [9]: http://141.142.251.212:8080/wsrf/services/NotificationTestService [10]: http://141.142.251.212:8080/wsrf/services/PersistenceTestSubscriptionManager [11]: http://141.142.251.212:8080/wsrf/services/SampleAuthzService [12]: http://141.142.251.212:8080/wsrf/services/SecureCounterService [13]: http://141.142.251.212:8080/wsrf/services/SecurityTestService [14]: http://141.142.251.212:8080/wsrf/services/ShutdownService [15]: http://141.142.251.212:8080/wsrf/services/SubscriptionManagerService [16]: http://141.142.251.212:8080/wsrf/services/TestAuthzService [17]: http://141.142.251.212:8080/wsrf/services/TestRPCService [18]: http://141.142.251.212:8080/wsrf/services/TestService [19]: http://141.142.251.212:8080/wsrf/services/TestServiceRequest [20]: http://141.142.251.212:8080/wsrf/services/TestServiceWrongWSDL [21]: http://141.142.251.212:8080/wsrf/services/Version [22]: http://141.142.251.212:8080/wsrf/services/WidgetNotificationService [23]: http://141.142.251.212:8080/wsrf/services/WidgetService [24]: http://141.142.251.212:8080/wsrf/services/gsi/AuthenticationServicePress Ctrl-C to abort the container.
> dir "%USERPROFILE%\.globus\certificates" ... 02/19/2007 10:15 PM 1,667 bfcd1f28.0 02/19/2007 10:15 PM 239 bfcd1f28.signing_policy
> echo %GLOBUS_LOCATION% > bin\globus-start-container -nosec Starting SOAP server at: http://141.142.251.212:8080/wsrf/services/ With the following services...
> cd c:\globus\ws-core-4.0.4-bin\ws-core-4.0.4 > set GLOBUS_LOCATION=%CD% > echo %GLOBUS_LOCATION% > bin\globus-stop-container Error: ; nested exception is: GSSException: Defective credential detected [Caused by: Proxy file (C:\DOCUME~1\TOMSCA~1\LOCALS~1\Temp\x509up_u_tom scavo) not found.]
> bin\globus-stop-container Error: ; nested exception is: java.net.ConnectException: Connection refused: connect
> bin\globus-stop-container -s http://localhost:8080/wsrf/services/ShutdownService -m msg
> 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
[in progress]
SecurityContextEchoService on remote host.
SecurityContextEchoService is configured to accept all attributes (i.e., no policy is applied). We now expand the authorization chain to include attribute acceptance policy. This policy check is enabled by adding another PIP to the authorization chain<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP"/>and uncomment this line
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP"/>
This enables AttributeAcceptancePIP in the authorization chain.SecurityContextEchoService, authenticating with a level 1 proxy credential issued on local host.
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password
> set X509_USER_PROXY=c:\temp\testcredential.pem
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
The response will consist of one SAMLIdentity item issued by the GridShib CA-issued EEC. Although the proxy certificate contains a SAML assertion, the SAML attributes in the proxy were filtered by the AttributeAcceptancePIP since the proxy issuer is not a trusted SAML authority.AttributeAcceptancePIP on remote host.
entityID is on this list. By default, the GridShib CA's entityID is on this list. We now add a proxy issuer to the list of trusted SAML authorities.> %GLOBUS_LOCATION%\bin\rfc2253dn
SecurityContextEchoService again.
NameIdentifier from the assertion bound to the EEC, plus two attributes and a NameIdentifier bound to the level 1 proxy.> echo %X509_USER_PROXY%
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
As before, you should receive a total of six (6) items in the response: two (2) SAMLIdentity items, one (1) SAMLAuthnContext item, two (2) BasicAttribute items, and one (1) Principal item. Note that the BasicAttribute items are no longer labeled (raw) since, by virtue of the AttributeAcceptancePIP, they have been subjected to Attribute Acceptance Policy.SecurityContextEchoService on remote host.
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP"/>
and uncomment this line
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP"/>
This enables SAMLBlacklistPDP in the authorization chain.<parameter name="secctxecho-enableBlacklisting" value="false"/>with this line
<parameter name="secctxecho-enableBlacklisting" value="true"/>This enables blacklisting in the
SecurityContextEchoService.SecurityContextEchoService, authenticating with a level 1 proxy credential issued on local host.
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password --address 111.111.111.111
> echo %X509_USER_PROXY%
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
Error: org.globus.wsrf.impl.security.authorization.exceptions.AuthorizationException:
"/DC=edu/DC=uiuc/DC=ncsa/DC=computer/O=Shibboleth User/OU=entityID/CN=ePPN"
is not authorized to use operation:
{http://wsrf.globus.org/2005/04/secctxecho}echo on this service
Since the IP address is on the blacklist, the request is denied.SecurityContextEchoService again.
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password --address 255.255.255.255
> echo %X509_USER_PROXY%
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
As before, you should receive a total of six (6) items in the response: two (2) SAMLIdentity items, one (1) SAMLAuthnContext item, two (2) BasicAttribute items, and one (1) Principal item.SecurityContextEchoService on remote host.
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP"/>
and uncomment this line
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP
secctxecho:org.globus.gridshib.SAMLMapPIP"/>
This enables SAMLMapPIP in the authorization chain.SecurityContextEchoService again.
> echo %X509_USER_PROXY%
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
You should receive a total of seven (7) items in the response: two (2) SAMLIdentity items, one (1) SAMLAuthnContext item, two (2) BasicAttribute items, and two (2) Principal items. The new Principal item is a username mapped to an attribute in the policy file.SecurityContextEchoService on remote host.
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP
secctxecho:org.globus.gridshib.SAMLMapPIP"/>
and uncomment this line
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP
secctxecho:org.globus.gridshib.SAMLMapPIP
secctxecho:org.globus.gridshib.SAMLAttributePDP"/>
This enables SAMLAttributePDP in the authorization chain.# a principal name identifier Format=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified formatting.template=%PRINCIPAL% # FriendlyName="eduPersonEntitlement" Attribute.ROLE.Namespace=urn:mace:shibboleth:1.0:attributeNamespace:uri Attribute.ROLE.Name=urn:mace:dir:attribute-def:eduPersonEntitlement Attribute.ROLE.Value=http://www.teragrid.org/names/roles/admin # an issuing credential (EEC or proxy) certLocation=file:/C:/temp/testcredential.pem keyLocation=file:/C:/temp/testcredential.pem
SecurityContextEchoService, authenticating with a level 1 proxy credential issued on local host.
> copy "%TEMP%\x509up_u_%USERNAME%" c:\temp\testcredential.pem
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password
--config file:/c:/temp/gridshib-saml-issuer.properties
> echo %X509_USER_PROXY%
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
Error: org.globus.wsrf.impl.security.authorization.exceptions.AuthorizationException:
"/DC=edu/DC=uiuc/DC=ncsa/DC=computer/O=Shibboleth User/OU=entityID/CN=ePPN"
is not authorized to use operation:
{http://wsrf.globus.org/2005/04/secctxecho}echo on this service
Since the supplied attribute does not satisfy policy, the request is denied.SecurityContextEchoService again.
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password
> echo %X509_USER_PROXY%
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
You should receive a total of seven (7) items in the response: two (2) SAMLIdentity items, one (1) SAMLAuthnContext item, two (2) BasicAttribute items, and two (2) Principal items.SecurityContextEchoService on remote host.
GridShibPDP is functionally equivalent to the authorization chain configured previously. (Actually, GridShibPDP does much more, as we shall see.)<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP
secctxecho:org.globus.gridshib.SAMLMapPIP
secctxecho:org.globus.gridshib.SAMLAttributePDP"/>
and uncomment this line
<authz value="secctxecho:org.globus.gridshib.GridShibPDP"/>This enables the master PDP
GridShibPDP.SecurityContextEchoService, authenticating with a level 1 proxy credential via Secure Message.
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
> %GLOBUS_LOCATION%\bin\gridshibecho -d -z none -m msg
-s https://localhost:8443/wsrf/services/SecurityContextEchoService
Both requests should produce a total of seven (7) items in the response: two (2) SAMLIdentity items, one (1) SAMLAuthnContext item, two (2) BasicAttribute items, and two (2) Principal items.SecurityContextEchoService on remote host.
<authz value="secctxecho:org.globus.gridshib.GridShibPDP"/>and uncomment this line
<authz value="secctxecho:org.globus.gridshib.SAMLAssertionPushPIP
secctxecho:org.globus.gridshib.AttributeAcceptancePIP
secctxecho:org.globus.gridshib.SAMLBlacklistPDP
secctxecho1:org.globus.gridshib.SAMLMapPIP
secctxecho2:org.globus.gridshib.SAMLMapPIP
secctxecho1:org.globus.gridshib.SAMLAttributePDP
secctxecho2:org.globus.gridshib.SAMLAttributePDP
secctxecho3:org.globus.gridshib.SAMLAttributePDP"/>
This enables SAMLAttributePDP three times in the authorization chain. Each invocation of SAMLAttributePDP is associated with its own policy file. (See $GLOBUS_LOCATION/etc/gridshib-gt-echo-0_6_0/server-config.wsdd for the policy file configuration.)SecurityContextEchoService, authenticating with a level 2 proxy credential issued on local host.
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--authn --x509 --outfile c:\temp\testcredential.pem
--authnMethod urn:oasis:names:tc:SAML:1.0:am:password
> %GRIDSHIB_HOME%\bin\gridshib-saml-issuer --user trscavo
--x509 --outfile c:\temp\testcredential.pem
--config file:/c:/temp/gridshib-saml-issuer.propertiesSAMLIdentity items (one from each certificate), one (1) SAMLAuthnContext item (from the level 1 proxy), three (3) BasicAttribute items (two from the level 1 proxy and one from the level 2 proxy), and three (3) Principal items (two of which are username mappings).