Skip to content
Data Apps

Authentication

Control who can open your Keboola app: a shared password, single sign-on with Google, Microsoft Entra ID, Okta or Auth0, or GitHub, GitLab and JumpCloud accounts.

Once an app is deployed, its URL is publicly available. Protect it so only the right people can open it, and choose the method that fits your audience. You set it in the app’s configuration under Authentication → Authentication Type, which offers six options.

The Authentication Type dropdown in an app's configuration, listing None, Basic, OIDC, GitLab, GitHub, and JumpCloud

  • None (Public Access)the app is public to anyone with the URL. You can still add your own authorization inside the app; for Streamlit, use the Streamlit authenticator (example).
  • Basic (Password)the default for new apps. Keboola generates a shared password; users enter it before the app opens. Once the app is deployed, the password is shown on the app’s configuration page next to Open App, ready to copy — and when Kai builds an app, it shows the password as the last step.
  • OIDC (Custom)users sign in with your identity provider (Google, Microsoft Entra ID, Okta, Auth0, or any other OIDC provider). Recommended for anything beyond a quick share.
  • GitHubrestrict access with GitHub OAuth by organization, team, repository, or allowed users.
  • GitLabrestrict access with GitLab OAuth by groups, projects, or roles.
  • JumpCloudrestrict access with JumpCloud OIDC, with optional role-based filtering.

OIDC lets users log into your app through your single sign-on (SSO) provider. Keboola has ready-made provider options for Google (Google SSO), Microsoft Entra ID (Azure OIDC), Okta, and Auth0, plus Generic OIDC for any other OpenID Connect provider. Users sign in with the provider you configured; if an app has more than one provider, they first pick an Authentication Provider.

The app's sign-in page asking the user to select an authentication provider, one button per configured provider

The flow is the same everywhere: create the app in Keboola, register it with your provider using the app’s callback URL, paste the provider’s credentials into the app’s Authentication settings, and deploy.

Step 1 — Create the app and copy its callback URL

Section titled “Step 1 — Create the app and copy its callback URL”

Your provider needs the app’s callback URL, so create the app first.

  1. In your Keboola project, open Apps, click + Create App, and create the app manually. The app opens on its configuration page. (Adding sign-in to an existing app? Open its configuration instead.)

  2. Scroll to the App URL block. It shows the app’s host as a URL prefix plus a generated part, for example toy-store-sales and -74016144.hub.europe-west3.gcp.keboola.com. Your callback URL is https://, that whole host, and /_proxy/callback:

    https://<url-prefix>-<app-id>.hub.<stack-host>/_proxy/callback

    For example: https://toy-store-sales-74016144.hub.europe-west3.gcp.keboola.com/_proxy/callback

    The block is there from the moment the app exists; you don’t have to deploy first.

The app's configuration page with the App URL block: the URL prefix, the generated host, and a copy button

Keep this tab open. Each app has its own callback URL, so register every app with your provider separately.

Pick your provider:

Let people sign in with their Google account.

Before you start — you need a Google Cloud project where you can manage the consent screen and OAuth clients: the project Owner role, or the OAuth Config Editor role. Decide who should get in, too. To limit sign-in to your Google Workspace organization, the Google Cloud project must belong to that organization and you pick the Internal audience below. Otherwise the audience is External: any Google account can sign in once you publish the app.

Set up the consent screen:

  1. Open the Google Cloud console, select your project, and open Google Auth Platform (search for it in the console’s top bar).
  2. First time in this project? Click Get started and fill in the wizard: App name and User support email, the Audience (Internal for your Google Workspace organization only, External for any Google account), and a contact email, then click Create.
  3. Open Branding. Under Authorized domains, add keboola.com, the domain your App URL belongs to, and save. If Google refuses the redirect URI in the next step, it’s because the domain is missing here.
  4. Chose External? Open Audience and add yourself and your testers under Test users (up to 100), or click Publish app to let anyone with a Google account sign in. Until you do one of these, Google turns everyone else away.

Create the OAuth client:

  1. Open Clients and click Create client.
  2. Set Application type to Web application and give the client a name, for example Keboola app - Toy store sales.
  3. Under Authorized redirect URIs, click Add URI and paste the callback URL from step 1. It has to match exactly: https, the full host, and /_proxy/callback with no trailing slash.
  4. Click Create. Copy the Client ID and the Client secret now; Google shows the secret only at creation. If you lose it, open the client and click Add Secret.

Back in Keboola — on the app’s configuration page, under Authentication, set Authentication Type to OIDC (Custom), select Google SSO in the Provider dropdown, and paste the Client ID and Client secret. There’s no issuer field for this option; Keboola uses https://accounts.google.com. Click Save.

If sign-in fails:

  • Error 400: redirect_uri_mismatch — the URI in the OAuth client differs from the app’s callback URL. Compare them character by character (scheme, host, /_proxy/callback, no trailing slash) and fix the client.
  • “Access blocked: … has not completed the Google verification process”, or a colleague can’t get past Google — the audience is External and the app is still in Testing, so only listed Test users can sign in. Add them on the Audience page, or click Publish app.
  • Someone outside your organization can’t sign in — expected with the Internal audience. Switch to External on the Audience page if that’s not what you want.
  • invalid_client, or a token error right after signing in — the Client ID or Client secret in Keboola doesn’t match the OAuth client. Paste them again, or add a new secret in Google Cloud and update the app.

Changed the redirect URI or the audience on Google’s side later? No redeploy needed; Google says such changes take from a few minutes to a few hours to apply.

  1. Set the app’s code source and click Deploy App; the short wizard asks for the backend size and an inactivity timeout. (Details: Create an app manually. Just testing sign-in? A Streamlit app with a one-line inline script is the quickest thing to deploy.)
  2. When the status turns Active, click Open App. Your provider asks you to sign in, then sends you into the app.

Changing the authentication settings of an app that’s already deployed? Click Redeploy App so the change takes effect.

ProviderKeboola provider optionWhat you enter besides Client ID and Client secret
Google CloudGoogle SSONothing; the issuer https://accounts.google.com is preset
Microsoft Entra IDAzure OIDCTenant ID; Keboola derives the issuer https://login.microsoftonline.com/<tenant ID>/v2.0
OktaOktaDomain/Org URL: https://<yourOktaDomain>/oauth2/default
Auth0Auth0Issuer URL: https://<yourAuth0Domain>/
Any otherGeneric OIDCIssuer URL from the provider; Logout URL optional

<yourOktaDomain> and <yourAuth0Domain> are your tenant hosts, for example acme.okta.com or acme.us.auth0.com.

Restrict access to your app using GitHub OAuth. Users authenticate via their GitHub account, and you can optionally restrict access to specific organizations, teams, repositories, or individual users.

FieldDescriptionExample
Client IDClient ID from GitHub Developer Settings > OAuth Apps.Ov23liABCDEF123456
Client SecretClient Secret from the same GitHub OAuth App.(paste your GitHub secret)
FieldDescriptionExample
GitHub URLYour GitHub Enterprise Server URL. Leave empty for public GitHub.https://github.com
OrganizationURL slug of your GitHub organization. Restricts access to organization members.my-company
TeamURL slug of the team within the organization. Requires Organization to be set.data-engineers
RepositoryRestrict to repository collaborators. Format: owner/repo-name.my-company/analytics
Access TokenRequired for private org/team/repo restrictions. Needs read:org scope. Generate at GitHub > Settings > Developer Settings > Personal Access Tokens.ghp_...
Allowed UsersComma-separated GitHub usernames. If set, only these users can log in.jane-smith, john-doe
  1. Go to your GitHub account Settings > Developer Settings > OAuth Apps and create a new OAuth App.
  2. Set the Authorization callback URL to: https://<dataAppId>.hub.<keboolaConnectionHost>/_proxy/callback (e.g., https://my-app-12345678.hub.north-europe.azure.keboola.com/_proxy/callback).
  3. Copy the Client ID and Client Secret from the created OAuth App.
  4. In your Keboola app configuration, select GitHub as the authentication method.
  5. Paste the Client ID and Client Secret.
  6. Optionally configure organization, team, repository, or allowed users restrictions.
  7. If you use organization, team, or repository restrictions with a private organization, provide an Access Token with read:org scope.
  8. Save and redeploy your app.

Restrict access to your app using GitLab OAuth. Users authenticate via their GitLab account, and you can optionally restrict access by groups, projects, or roles.

FieldDescriptionExample
Client IDApplication ID from GitLab > Settings > Applications.a1b2c3d4e5f6...
Client SecretApplication secret from the same GitLab application.gloas-xxxxxxxxxxxxxxxxxxxxxxxxxxxx
GitLab Instance URLUse https://gitlab.com for public GitLab, or your self-hosted URL.https://gitlab.com
FieldDescriptionExample
GroupsOnly members of these groups can access the app. Use the URL path, not the display name. Separate multiple groups with commas.my-org/data-team
ProjectsRestrict access to members of these projects. Format: namespace/project-slug.my-org/analytics-app
Allowed RolesLeave empty to allow any role. Valid values: guest, reporter, developer, maintainer, owner.developer, maintainer
  1. Go to your GitLab instance Settings > Applications and create a new application.
  2. Set the Redirect URI to: https://<dataAppId>.hub.<keboolaConnectionHost>/_proxy/callback (e.g., https://my-app-12345678.hub.north-europe.azure.keboola.com/_proxy/callback).
  3. Ensure the openid, profile, and email scopes are selected. If you use group or project restrictions, also select read_api.
  4. Copy the Application ID and Secret.
  5. In your Keboola app configuration, select GitLab as the authentication method.
  6. Paste the Client ID, Client Secret, and GitLab Instance URL.
  7. Optionally configure groups, projects, or allowed roles restrictions.
  8. Save and redeploy your app.

Restrict access to your app using JumpCloud OIDC. Users authenticate via their JumpCloud account, and you can optionally restrict access by roles.

FieldDescriptionExample
Client IDClient ID from JumpCloud Admin Console > SSO > your app.6507c80f5f2b490a...
Client SecretClient Secret from JumpCloud Admin Console > SSO > your app > SSO tab. Treat like a password.(paste your JumpCloud secret)
Issuer URLPre-filled. For custom tenants, ask your JumpCloud admin for the correct issuer URL.https://oauth.id.jumpcloud.com/
Logout URLPre-filled. Change only if your JumpCloud admin provides a different logout endpoint.https://oauth.id.jumpcloud.com/oauth2/sessions/logout
FieldDescriptionExample
Allowed RolesRole values must match exactly what is set in JumpCloud’s attribute mapping. Leave empty to allow any authenticated user.data-analyst, admin
  1. In the JumpCloud Admin Console, go to SSO and create a new application (or use an existing one).
  2. Configure the application as an OIDC application.
  3. Set the Redirect URI to: https://<dataAppId>.hub.<keboolaConnectionHost>/_proxy/callback (e.g., https://my-app-12345678.hub.north-europe.azure.keboola.com/_proxy/callback).
  4. Copy the Client ID and Client Secret from the SSO tab.
  5. In your Keboola app configuration, select JumpCloud as the authentication method.
  6. Paste the Client ID, Client Secret, Issuer URL, and Logout URL.
  7. Optionally configure allowed roles to restrict access.
  8. Save and redeploy your app.

All authentication methods that use OAuth or OIDC require a callback URL. The format is always:

https://<dataAppId>.hub.<keboolaConnectionHost>/_proxy/callback

For example: https://my-app-12345678.hub.north-europe.azure.keboola.com/_proxy/callback

<dataAppId> stands for the whole host shown in the App URL block on the app’s configuration page: the URL prefix, a hyphen, and the App ID (for example toy-store-sales-74016144). Take that host, add https:// in front and /_proxy/callback at the end.


Next: Publish and share →

Ask Kai

Hi, I'm Kai — Keboola's AI assistant for the docs. Ask me anything and I'll answer from the documentation and cite the pages I use.

Kai is an AI and can make mistakes. Check the sources it links.