--- myst: html_meta: "description lang=en": "Google OpenID setup guide for Workspaces authentication." "keywords": "Kasm, Google, OIDC, OpenID" "property=og:locale": "en_US" --- ```{title} Google OpenID Setup ``` ## Google OpenID Setup ```{include} /guide/oidc/warning.md ``` This guide walks through a basic setup allowing Google users to authenticate with your Kasm deployment. Reference Docs: - ### Creating a Google OAuth App 1. Login to the Google Developer Console: 2. Select **OAuth consent screen**. 3. Select **External** then click **Create**. ```{warning} In this example, we walk through creating an integration where any Google user can auth with the Kasm app. This is ideal for a public facing deployment. Choose **Internal** if only user from your Google Workspaces corporate account should be allowed to authenticate. ``` ```{figure} /images/oidc/google/oauth_consent_create.png :align: center **OAuth Consent** ``` 4. Provide values for the **App Name** , **User support email**, and **Developer Contact email**. 5. In the **Authorized Domains** section, enter your deployment's top private domain (e.g {code}`example.com`). 6. Click **Save and Continue**. ```{figure} /images/oidc/google/oauth_consent_registration.png :align: center **App Registration** ``` 7. Click **Add or Remove Scopes**. 8. In the **Update Selected Scopes** window check {code}`.../auth/userinfo.email` , then click Update. ```{figure} /images/oidc/google/oauth_consent_scopes.png :align: center **Update Selected Scopes** ``` 09. Click **Save and Continue**. 10. Until the app is fully verified and published it can only be used to auth specific test accounts. Click **Add Users** to authorize several test google accounts. 11. Click **Save and Continue**. 12. In the **APIs & Services** menu, select **Credentials**. 13. Select **Create Credentials**, then **OAuth client ID**. ```{figure} /images/oidc/google/select_oauth_client_id.png :align: center **Create Credentials** ``` 14. Select {code}`Web Application` as the **Application type**, then give the client a name (e.g {code}`Kasm`). 15. Click **Add URI** in the **Authorized redirect URIs** section, and enter {code}`https:///api/oidc_callback`. 16. Click **Create**. ```{figure} /images/oidc/google/create_oauth_client.png :align: center **Create OAuth Client** ``` 17\. A dialogue will display with a **Client ID** and **Client Secret**. Save these values for the next configuration steps. The JSON download will also include URLs needed for the next configuration steps. ```{figure} /images/oidc/google/client_secret.png :align: center **Client ID and Client Secret** ``` ### Kasm OpenID Config 1. Log into the Kasm UI as an administrator. 2. Select **Access Management** -> **Authentication** -> **OpenID** -> **Add Config**. 3. Update the form with the following entries, using the **Client ID** and **Client Secret** gathered in the previous section. ```{eval-rst} +------------------------+-----------------------------------------------------------+ | **Property** | **Value** | +------------------------+-----------------------------------------------------------+ | **Display Name** | Continue with Google | +------------------------+-----------------------------------------------------------+ | **Logo URL** | :code:`https://www.google.com/favicon.ico` | +------------------------+-----------------------------------------------------------+ | **Enabled** | Checked | +------------------------+-----------------------------------------------------------+ | **Auto Login** | Unchecked | +------------------------+-----------------------------------------------------------+ | **Hostname** | | +------------------------+-----------------------------------------------------------+ | **Default** | Checked | +------------------------+-----------------------------------------------------------+ | **Client ID** | | +------------------------+-----------------------------------------------------------+ | **Client Secret** | | +------------------------+-----------------------------------------------------------+ | **Authorization URL** | :code:`https://accounts.google.com/o/oauth2/auth` | +------------------------+-----------------------------------------------------------+ | **Token URL** | :code:`https://oauth2.googleapis.com/token` | +------------------------+-----------------------------------------------------------+ | **User Info URL** | :code:`https://www.googleapis.com/oauth2/v1/userinfo` | +------------------------+-----------------------------------------------------------+ | **Scope** | :code:`openid` | | | :code:`https://www.googleapis.com/auth/userinfo.email` | | | :code:`https://www.googleapis.com/auth/userinfo.profile` | +------------------------+-----------------------------------------------------------+ | **Username Attribute** | :code:`email` | +------------------------+-----------------------------------------------------------+ | **Groups Attribute** | Unchecked | +------------------------+-----------------------------------------------------------+ | **Debug** | Unchecked | +------------------------+-----------------------------------------------------------+ ``` ```{figure} /images/oidc/google/kasm_oidc_configuration.webp :align: center **Kasm OIDC Configurations** ``` 6. Click **Save** to save the changes. ### Google Login Test 1. Logout of the Kasm to display the login screen. The OpenID configuration should be shown. ```{figure} /images/oidc/google/login.webp :align: center **Login Screens** ``` 2. Click **Continue with Google**. 3. The user is redirected to Google for auth. ```{figure} /images/oidc/google/authorization.png :align: center **Google Auth** ``` 4. Upon completion, the user is logged into the Kasm app.