Add documentation for google connector
This commit is contained in:
		
							
								
								
									
										53
									
								
								Documentation/connectors/google.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								Documentation/connectors/google.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					# Authentication through Google
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Overview
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Dex is able to use Google's OpenID Connect provider as an authentication source.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The connector uses the same authentication flow as the OpenID Connect provider but adds Google specific features such as Hosted domain support and reading groups using a service account.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					connectors:
 | 
				
			||||||
 | 
					- type: google
 | 
				
			||||||
 | 
					  id: google
 | 
				
			||||||
 | 
					  name: Google
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Connector config values starting with a "$" will read from the environment.
 | 
				
			||||||
 | 
					    clientID: $GOOGLE_CLIENT_ID
 | 
				
			||||||
 | 
					    clientSecret: $GOOGLE_CLIENT_SECRET
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Dex's issuer URL + "/callback"
 | 
				
			||||||
 | 
					    redirectURI: http://127.0.0.1:5556/callback
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Google supports whitelisting allowed domains when using G Suite
 | 
				
			||||||
 | 
					    # (Google Apps). The following field can be set to a list of domains
 | 
				
			||||||
 | 
					    # that can log in:
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # hostedDomains:
 | 
				
			||||||
 | 
					    #  - example.com
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Google does not support the OpenID Connect groups claim and only supports
 | 
				
			||||||
 | 
					    # fetching a user's group membership with a service account.
 | 
				
			||||||
 | 
					    # This service account requires an authentication JSON file and the email
 | 
				
			||||||
 | 
					    # of a G Suite admin to impersonate:
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    #serviceAccountFilePath: googleAuth.json
 | 
				
			||||||
 | 
					    #adminEmail: super-user@example.com
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Fetching groups from Google
 | 
				
			||||||
 | 
					To allow Dex to fetch group information from Google, you will need to configure a service account for Dex to use.
 | 
				
			||||||
 | 
					This account needs Domain-Wide Delegation and permission to access the `https://www.googleapis.com/auth/admin.directory.group.readonly` API scope.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To get group fetching set up:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Follow the [instructions](https://developers.google.com/admin-sdk/directory/v1/guides/delegation) to set up a service account with Domain-Wide Delegation
 | 
				
			||||||
 | 
					  - During service account creation, a JSON key file will be created that contains authentication information for the service account. This needs storing in a location accessible by Dex and you will set the `serviceAccountFilePath` to point at it.
 | 
				
			||||||
 | 
					  - When delegating the API scopes to the service account, delegate the `https://www.googleapis.com/auth/admin.directory.group.readonly` scope and only this scope. If you delegate more scopes to the service account, it will not be able to access the API.
 | 
				
			||||||
 | 
					2. Enable the [Admin SDK](https://console.developers.google.com/apis/library/admin.googleapis.com/)
 | 
				
			||||||
 | 
					3. Add the `serviceAccountFilePath` and `adminEmail` configuration options to your Dex config.
 | 
				
			||||||
 | 
					  - `serviceAccountFilePath` should point to the location of the service account JSON key file
 | 
				
			||||||
 | 
					  - `adminEmail` should be the email of a G Suite super user. The service account you created earlier will impersonate this user when making calls to the admin API. A valid user should be able to retrieve a list of groups when [testing the API](https://developers.google.com/admin-sdk/directory/v1/reference/groups/list#try-it).
 | 
				
			||||||
		Reference in New Issue
	
	Block a user