Google Search Appliance Authentication/Authorization for Enterprise SPI Guide Google Search Appliance software version 6.
Google, Inc. 1600 Amphitheatre Parkway Mountain View, CA 94043 www.google.com October 2010 © Copyright 2012 Google, Inc. All rights reserved. Google and the Google logo are registered trademarks or service marks of Google, Inc. All other trademarks are the property of their respective owners. Use of any Google solution is governed by the license agreement included in your original contract.
Contents Authentication/Authorization for Enterprise SPI Guide ...................................................
Authentication/Authorization for Enterprise SPI Guide The SAML Authentication and Authorization Service Provider Interfaces (SPIs) enable a Google Search Appliance to communicate with an existing access control infrastructure via standard Security Assertion Markup Language (SAML) messages. The Authentication and Authorization SPIs are also required to support Windows Integrated Authentication with the Google SAML Bridge for Windows.
• SAML 2.0: An XML-based standard whose primary use case is inter-domain single sign-on. [http:// www.oasis-open.org/specs/#samlv2.0] • SOAP 1.1: The Simple Object Access Protocol is an XML-based protocol for exchanging information over the Internet. [http://www.w3.org/TR/2003/REC-soap12-part1- 20030624/] • GSA Universal Login with SPI: The GSA’s security-manager providing universal login forms/SPI.
Authentication Purpose of the Google Search Authentication SPI When implemented, the Authentication SPI allows search users to authenticate to the search appliance. It is designed to allow customers to integrate the search appliance into an existing access control infrastructure. Instead of authenticating search users itself, the search appliance redirects the user to an Identity Provider (IdP), a customer-implemented server, where the actual authentication takes place.
• Depending on the SAML Binding option: Artifact Binding • The Identity Provider redirects the user back to the Security Manager providing a SAMLArtifact token. • The Security Manager uses this SAMLArtifact and sends an ArtifactResolve request to the identity provider’s Artifact Resolution URL. • The Identity Provider responds with a SAML element to the Security Manager. The in the response contains the identity of the search user.
Assume no prior search appliance session or SSO cookie has been granted. http://gsa.yourdomain.com/search?q=secure&btnG=Google Search&access=s&client=default_frontend&output=xml_no_dtd&proxystylesheet=defaul t_frontend&sort=date: D:L:d1&entqr=3&oe=UTF-8&ie=UTF-8&ud=1&site=default_collection GET /search?q=secure&btnG=Google +Search&access=a&client=default_frontend&output=xml_no_dtd&proxystylesheet=defau lt_frontend&sort=date %3AD%3AL%3Ad1&entqr=3&oe=UTF-8&ie=UTF-8&ud=1&site=default_collection HTTP/1.
GET /security-manager/samlauthn? SAMLRequest=fZJNT8MwDEDvSPyHKPeuHxIMRWvRYJrYBKhAQYJb1rltRuKUOB3w7+k6EHCAq2P7PduZ nL4ZzbbgSFlMeTyKOAMs7 VphnfL7Yh6c8NPs8GBC0uhWTDvf4C28dECe9ZVIYnhIeedQWEmKBEoDJHwp7qZXlyIZRaJ11tvSas4Ws 5SvVlJvTLOpn7G2gPhsjT IV6o2tNK4aJSsjy3bTcPbwpZXstBZEHSyQvETfh6I4CqJxEB8XUSKiIxHFT5zln6QzhfsJ/ tNa7ZNIXBRFHkydV5Us/dBkq9bgrvu KlNfW1hpGpTU7hVwSqW0frqQm4NmwFzGouR8L+R/ c94CeZpFnjfetCMNvSAjowbVOEYQ1ybBIgutxcnZzk+SPy7tlMQl/ELPPs +xMF7PcalW+s6nW9vXcgfS9pncdcDa3zkj/t1Q8ioeIWgfVkCo6pBZKVSlYcxZme+rv+/e
HTTP/1.x 302 Moved Temporarily Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=DBF3B9029E3F442CDB78FABDFD4CFDE6; Path=/security-manager Date: Fri, 16 Jul 2010 02:05:02 GMT Cache-Control: no-cache, no-store Pragma: no-cache Location: http://idp.yourdomain.
The SAMLRequest is first DEFLATE-compressed, then Base 64 encoded, then URL encoded. It must be decoded and parsed if using the security manager. The following lines of code in python and c# demonstrate the conversion: python: def dec_b64_inflate(bstring): d_data = base64.b64decode(bstring) return zlib.decompress(d_data, -15) C#: public string Decompress(byte[] input) { using (MemoryStream inputStream = new MemoryStream(input)) { using (DeflateStream gzip = new DeflateStream(inputStream, CompressionMode.
After Authentication, the IdP can either use Artifact Binding or POST Binding depending on what mechanism its setup for. HTTP Artifact Binding [6a] With Artifact Binding, the IdP generates a random-looking string called an artifact, then associates it with the response from the authentication step. This association is used later to look up the response.
GET /security-manager/ samlassertionconsumer?SAMLart=emwjzal36b2dfyoc8en74xmvg9kps5qr HTTP/1.1 Host: gsa.yourdomain.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/ 2010031422 Firefox/3.0.19 (.NET CLR 4.0.20506) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://gsa.yourdomain.
An artifact must not be reusable. Once an artifact is dereferenced, the Identity Provider must reject attempts to dereference the same artifact again. PAGE 15 HTTP POST Binding [6d] [6e] With POST Binding, the IdP sends a digitally signed authentication Assertion identifying the user to the security manager via an HTML form POST through the browser. That is, the Assertion is digitally signed (XML Digital Signature) using the private key of the IdP. The signed assertion is embedded as a hidden variable (SAMLResponse) in an HTML form and transmitted directly to the user’s browser.