SSO with multiple Google domains
David Gersic
dgersic at niu.edu
Tue Jan 20 12:50:29 EST 2015
Is this actually two separate domains in Google? Or one domain (dev.mysiteA.ca<http://dev.mysiteA.ca>) in Google with a subdomain (dev.mysiteB.com<http://dev.mysiteB.com>) in it? If it's actually only one domain, then this is working correctly as designed.
________________________________
From: users-bounces at shibboleth.net <users-bounces at shibboleth.net> on behalf of Andrew Cheung <acheung at brookfieldres.com>
Sent: Monday, January 19, 2015 9:21 AM
To: users at shibboleth.net
Subject: SSO with multiple Google domains
Hi. I need help in configuring Shibboleth for SSO to multiple Google domains. Here is my scenario :
Shibboleth version used : 2.4.3
At Google, the primary domain is: dev.mysiteA.ca<http://dev.mysiteA.ca>
We also have a secondary domain : dev.mysiteB.com<http://dev.mysiteB.com>
We have 1 IDP set up on RHEL 6.5, on tomcat7. We also integration with Novell eDirectory (this is our user store) using LDAP.
Before I did anything for the secondary domain, the configuration that I have set up for the primary domain works and I can SSO to the primary domain works fine (I go to http://mail.google.com/a/dev.mysiteA.ca, put in my credentials and can log into my email account at dev.mysiteA.ca<http://dev.mysiteA.ca>).
Howerver, when I tried adding in the configuration for the secondary domain (see below for the configurations), and then go to “http://mail.google.com/a/dev.mysiteB.com, I got the error “Invalid Email”.
I used SAML tracer in firefox to examine the SAML requests, and observed that the first SAML request has
AssertionConsumerServiceURL="https://www.google.com/a/dev.mysiteA.ca/acs"
although I am trying to access http://mail.google.com/dev.mysiteB.com
The SAML response has
<saml2p:Response Destination="https://www.google.com/a/dev.mysiteA.ca/acs"
instead of the secondary domain (dev.mysiteB.com<http://dev.mysiteB.com>) as well.
My question is : How should I configure the secondary domain so that users in either the primary domain or the secondary domain can SSO to their respective domains properly?
Any help is appreciated.
-Andrew
---------------------------------------------------------
The configuration I used that yields the above behaviour is as follows:
attribute-filter.xml :
<!-- Google dev.mysiteA.ca<http://dev.mysiteA.ca> -->
<afp:AttributeFilterPolicy id="releaseTransientIdToAnyoneGoogleA">
<afp:PolicyRequirementRule xsi:type="basic:NOT">
<basic:Rule xsi:type="basic:AttributeRequesterString" value="mail.google.com/a/dev.mysiteA.ca<http://mail.google.com/a/dev.mysiteA.ca>" />
</afp:PolicyRequirementRule>
<afp:AttributeRule attributeID="transientId">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
</afp:AttributeFilterPolicy>
<!-- Google dev.mysiteB.com-->
<afp:AttributeFilterPolicy id="releaseTransientIdToAnyoneGoogleB">
<afp:PolicyRequirementRule xsi:type="basic:NOT">
<basic:Rule xsi:type="basic:AttributeRequesterString" value="mail.google.com/a/dev.mysiteB.com<http://mail.google.com/a/dev.mysiteB.com>" />
</afp:PolicyRequirementRule>
<afp:AttributeRule attributeID="transientId">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
</afp:AttributeFilterPolicy>
<!-- Google -->
<afp:AttributeFilterPolicy id="releaseGoogleNameID">
<afp:PolicyRequirementRule xsi:type="basic:NOT">
<basic:Rule xsi:type="basic:AttributeRequesterString" value="google.com<http://google.com>"/>
</afp:PolicyRequirementRule>
<afp:AttributeRule attributeID="GoogleNameID">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
</afp:AttributeFilterPolicy>
-----------------------------
attribute-resolver.xml :
<!-- Google -->
<resolver:AttributeDefinition id="GoogleNameID" xsi:type="ad:Simple" sourceAttributeID="cn">
<resolver:Dependency ref="myLDAP" />
<resolver:AttributeEncoder xsi:type="enc:SAML1StringNameIdentifier" nameFormat="urn:mace:shibboleth:1.0:nameIdentifier"/>
<resolver:AttributeEncoder xsi:type="enc:SAML2StringNameID" nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
</resolver:AttributeDefinition>
….
<resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"
ldapURL="ldap://1.2.3.4:389<http://1.2.3.4:389>"
baseDN="ou=users,o=myCompany"
principal="cn=loginuser,ou=users,o=myCompany"
principalCredential="mypassword">
<dc:FilterTemplate>
<![CDATA[
(cn=$requestContext.principalName)
]]>
</dc:FilterTemplate>
---------------------------------------
handler.xml :
<ph:LoginHandler xsi:type="ph:UsernamePassword"
jaasConfigurationLocation="file:///opt/shibboleth-idp/conf/login.config">
<ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</ph:AuthenticationMethod>
</ph:LoginHandler>
--------------------------------
relying-party.xml :
<rp:ProfileConfiguration xsi:type="saml:SAML2SSOProfile" includeAttributeStatement="true"
assertionLifetime="PT5M" assertionProxyCount="0"
signResponses="always" signAssertions="always"
encryptAssertions="never" encryptNameIds="never"
includeConditionsNotBefore="true"/>
<!-- Google -->
<rp:RelyingParty id="google.com<http://google.com>"
provider="https://idp.mycompany.com/idp/shibboleth"
defaultSigningCredentialRef="IdPCredential">
<rp:ProfileConfiguration xsi:type="saml:SAML2SSOProfile" encryptAssertions="never" encryptNameIds="never" />
</rp:RelyingParty>
<!-- Load the IdP's own metadata. This is necessary for artifact support. -->
<metadata:MetadataProvider id="IdPMD" xsi:type="metadata:FilesystemMetadataProvider"
metadataFile="/opt/shibboleth-idp/metadata/idp-metadata.xml"
maxRefreshDelay="P1D" />
<metadata:MetadataProvider xsi:type="FilesystemMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata" id="GoogleMD" metadataFile="/opt/shibboleth-idp/metadata/googledev-metadata.xml" />
<security:Credential id="IdPCredential" xsi:type="security:X509Filesystem">
<security:PrivateKey>/opt/shibboleth-idp/credentials/idp.key</security:PrivateKey>
<security:Certificate>/opt/shibboleth-idp/credentials/idp.crt</security:Certificate>
</security:Credential>
-----------------
googledev-metadata.xml:
<EntityDescriptor entityID="google.com<http://google.com>" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
<SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</NameIDFormat>
<AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://www.google.com/a/dev.mysiteA.ca/acs" />
<AssertionConsumerService index="2" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://www.google.com/a/dev.mysiteB.com/acs" />
</SPSSODescriptor>
</EntityDescriptor>
--
Andrew Cheung
Senior Developer
Royal LePage Real Estate Services / Brookfield Real Estate Services
39 Wynford Drive, Toronto, ON M3C 3K5
T 416.510.5734 V 415734
Email: acheung at b<mailto:X at royallepage.ca>rookfieldres.com<http://rookfieldres.com>
www.royallepage.ca<http://www.royallepage.ca/>
Download our iPhone App<https://itunes.apple.com/ca/app/royal-lepage-canada/id810365559?mt=8>
Join Royal LePage on:
Facebook<https://www.facebook.com/royallepage> | LinkedIn<http://www.linkedin.com/company/royal-lepage> | Twitter<https://twitter.com/royal_Lepage> | Google+<https://plus.google.com/u/0/+royallepage/posts> | Pinterest<http://www.pinterest.com/rlpcanada/> | YouTube<https://www.youtube.com/user/RoyalLePageCanada> | Instagram<http://www.instagram.com/royal_lepage>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://shibboleth.net/pipermail/users/attachments/20150120/24313da1/attachment-0001.html
More information about the users
mailing list