Skip to main content

Authentication Setup

Outline supports multiple authentication methods. This guide covers all available authentication options and their configuration.

Authentication Methods​

Outline supports the following authentication providers:

  • Google: Google OAuth2 authentication
  • Azure: Microsoft Entra ID (Azure AD) authentication
  • OIDC: Generic OpenID Connect authentication
  • Slack: Slack OAuth authentication
  • GitHub: GitHub OAuth authentication
  • GitLab: GitLab OAuth authentication
  • Gitea: Gitea OAuth authentication
  • Keycloak: Keycloak OIDC authentication
  • Discord: Discord OAuth authentication
  • Auth0: Auth0 OIDC authentication
  • SAML: SAML 2.0 authentication

Google Authentication​

Configure Google OAuth2 authentication:

auth:
google:
enabled: true
clientId: "your-google-client-id"
clientSecret: "your-google-client-secret"
info

Create a Google OAuth2 application in the Google Cloud Console and configure the redirect URI as https://your-domain.com/auth/google.callback.

Azure Authentication​

Configure Microsoft Entra ID (Azure AD) authentication:

auth:
azure:
enabled: true
clientId: "your-azure-client-id"
clientSecret: "your-azure-client-secret"
resourceAppId: "optional-resource-app-id" # Optional
tenantId: "optional-tenant-id" # Optional
tip

For Azure AD, configure the redirect URI as https://your-domain.com/auth/azure.callback in your Azure application.

OpenID Connect (OIDC)​

Configure generic OpenID Connect authentication:

auth:
oidc:
enabled: true
clientId: "your-client-id"
clientSecret: "your-client-secret"
authUri: "https://your-auth-server/auth"
tokenUri: "https://your-auth-server/token"
userInfoUri: "https://your-auth-server/userinfo"
usernameClaim: "preferred_username"
displayName: "OpenID Connect"
scopes:
- openid
- profile
- email

Slack Authentication​

Configure Slack OAuth authentication:

auth:
slack:
enabled: true
clientId: "your-slack-client-id"
clientSecret: "your-slack-client-secret"
info

Create a Slack app in the Slack API Console and configure the redirect URI as https://your-domain.com/auth/slack.callback.

GitHub Authentication​

Configure GitHub OAuth authentication:

auth:
github:
enabled: true
clientId: "your-github-client-id"
clientSecret: "your-github-client-secret"
appName: "your-app-name" # Optional
appId: "your-app-id" # Optional
appPrivateKey: "your-private-key" # Optional
tip

For GitHub Apps, you can also configure GitHub App authentication with additional parameters.

GitLab Authentication​

Configure GitLab OAuth authentication:

auth:
gitlab:
enabled: true
clientId: "your-gitlab-client-id"
clientSecret: "your-gitlab-client-secret"
baseUrl: "https://gitlab.com" # Optional, for self-hosted instances

Gitea Authentication​

Configure Gitea OAuth authentication:

auth:
gitea:
enabled: true
clientId: "your-gitea-client-id"
clientSecret: "your-gitea-client-secret"
baseUrl: "https://gitea.com" # Optional, for self-hosted instances

Keycloak Authentication​

Configure Keycloak OIDC authentication:

auth:
keycloak:
enabled: true
clientId: "your-keycloak-client-id"
clientSecret: "your-keycloak-client-secret"
baseUrl: "https://your-keycloak-server"
realmName: "your-realm"

Discord Authentication​

Configure Discord OAuth authentication:

auth:
discord:
enabled: true
clientId: "your-discord-client-id"
clientSecret: "your-discord-client-secret"
serverId: "your-server-id"
serverRoles: []
info

Discord authentication requires a server ID and can optionally restrict access to specific server roles.

Auth0 Authentication​

Configure Auth0 OIDC authentication:

auth:
auth0:
enabled: true
clientId: "your-auth0-client-id"
clientSecret: "your-auth0-client-secret"
baseUrl: "https://your-auth0-domain"

SAML Authentication​

Configure SAML 2.0 authentication:

auth:
saml:
enabled: true
ssoEndpoint: "https://your-saml-provider/sso"
cert: "your-saml-certificate"
warning

SAML configuration requires the SSO endpoint URL and the certificate from your SAML identity provider.

Multiple Authentication Methods​

You can enable multiple authentication methods simultaneously. Users will see all enabled options on the login page:

auth:
google:
enabled: true
clientId: "your-google-client-id"
clientSecret: "your-google-client-secret"

github:
enabled: true
clientId: "your-github-client-id"
clientSecret: "your-github-client-secret"

slack:
enabled: true
clientId: "your-slack-client-id"
clientSecret: "your-slack-client-secret"

Environment Variables​

The chart automatically sets the following environment variables based on your authentication configuration:

VariableDescriptionSource
GOOGLE_CLIENT_IDGoogle OAuth client IDauth.google.clientId
GOOGLE_CLIENT_SECRETGoogle OAuth client secretauth.google.clientSecret
AZURE_CLIENT_IDAzure AD client IDauth.azure.clientId
AZURE_CLIENT_SECRETAzure AD client secretauth.azure.clientSecret
OIDC_CLIENT_IDOIDC client IDauth.oidc.clientId
OIDC_CLIENT_SECRETOIDC client secretauth.oidc.clientSecret
SLACK_CLIENT_IDSlack OAuth client IDauth.slack.clientId
SLACK_CLIENT_SECRETSlack OAuth client secretauth.slack.clientSecret
GITHUB_CLIENT_IDGitHub OAuth client IDauth.github.clientId
GITHUB_CLIENT_SECRETGitHub OAuth client secretauth.github.clientSecret

Common OAuth Provider Setup​

Google OAuth2 Setup​

  1. Go to Google Cloud Console
  2. Create a new OAuth 2.0 Client ID
  3. Add authorized redirect URIs:
    • https://your-domain.com/auth/google.callback
  4. Copy the Client ID and Client Secret to your values.yaml

GitHub OAuth Setup​

  1. Go to GitHub Developer Settings
  2. Create a new OAuth App
  3. Set the Authorization callback URL to:
    • https://your-domain.com/auth/github.callback
  4. Copy the Client ID and Client Secret to your values.yaml

Slack OAuth Setup​

  1. Go to Slack API Console
  2. Create a new app
  3. Add OAuth & Permissions
  4. Set the Redirect URLs to:
    • https://your-domain.com/auth/slack.callback
  5. Copy the Client ID and Client Secret to your values.yaml

Troubleshooting Authentication​

Common Issues​

  1. Invalid Redirect URI: Ensure the redirect URI in your OAuth provider matches exactly
  2. Client ID/Secret Errors: Verify credentials are correct and the application is properly configured
  3. CORS Issues: Ensure your domain is properly configured in the OAuth provider
  4. SSL Certificate Issues: Use proper SSL certificates for production

Debug Mode​

Enable debug logging for authentication issues:

logging:
level: debug
extraDebug:
- http
- router

Testing Authentication​

  1. Check Environment Variables:

    kubectl exec -it <pod-name> -- env | grep -E "(GOOGLE|AZURE|OIDC|SLACK|GITHUB)"
  2. Check Application Logs:

    kubectl logs <pod-name> | grep -i auth
  3. Verify Secrets:

    kubectl get secret <release-name>-auth-secret -o yaml

Security Considerations​

warning
  • Store OAuth credentials securely using Kubernetes Secrets
  • Use HTTPS in production
  • Regularly rotate client secrets
  • Implement proper RBAC for access control

Next Steps​