Skip to content

website/docs: sources: add keycloak#19591

Merged
PeshekDotDev merged 6 commits intomainfrom
keycloak-source-integration
Jan 20, 2026
Merged

website/docs: sources: add keycloak#19591
PeshekDotDev merged 6 commits intomainfrom
keycloak-source-integration

Conversation

@PeshekDotDev
Copy link
Contributor

Details

Adds keycloak federated source steps


Checklist

  • Local tests pass (ak test authentik/)
  • The code has been formatted (make lint-fix)

If an API change has been made

  • The API schema has been updated (make gen-build)

If changes to the frontend have been made

  • The code has been formatted (make web)

If applicable

  • The documentation has been updated
  • The documentation has been formatted (make docs)

@PeshekDotDev PeshekDotDev self-assigned this Jan 20, 2026
@PeshekDotDev PeshekDotDev requested a review from a team as a code owner January 20, 2026 01:19
@BeryJu BeryJu changed the title docs/integrations: add keycloak as saml source steps integrations: add keycloak as saml source steps Jan 20, 2026
@netlify
Copy link

netlify bot commented Jan 20, 2026

Deploy Preview for authentik-integrations ready!

Name Link
🔨 Latest commit 29b0b83
🔍 Latest deploy log https://app.netlify.com/projects/authentik-integrations/deploys/696fc0222fb3ba000891176e
😎 Deploy Preview https://deploy-preview-19591--authentik-integrations.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jan 20, 2026

Deploy Preview for authentik-storybook ready!

Name Link
🔨 Latest commit 9c64c22
🔍 Latest deploy log https://app.netlify.com/projects/authentik-storybook/deploys/696ed83fb5869c0008c0fb1d
😎 Deploy Preview https://deploy-preview-19591--authentik-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jan 20, 2026

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit 29b0b83
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/696fc0224aefc60008b3ebdb
😎 Deploy Preview https://deploy-preview-19591--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@PeshekDotDev PeshekDotDev moved this from Todo to Needs review in authentik Core Jan 20, 2026
@codecov
Copy link

codecov bot commented Jan 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.27%. Comparing base (a908efb) to head (29b0b83).
⚠️ Report is 24 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #19591      +/-   ##
==========================================
- Coverage   93.31%   93.27%   -0.04%     
==========================================
  Files         949      949              
  Lines       52067    52131      +64     
==========================================
+ Hits        48585    48625      +40     
- Misses       3482     3506      +24     
Flag Coverage Δ
conformance 38.26% <ø> (+0.01%) ⬆️
e2e 44.11% <ø> (-0.09%) ⬇️
integration 23.21% <ø> (+0.01%) ⬆️
unit 91.50% <ø> (-0.01%) ⬇️
unit-migrate 91.53% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@dominic-r dominic-r self-requested a review January 20, 2026 01:37
@dominic-r dominic-r added the area:docs Features or issues related to Docusaurus label Jan 20, 2026

Because Keycloak is itself an identity platform, it can be integrated with authentik in two ways:

- **Use authentik to log into Keycloak**: Configure authentik as an identity provider for Keycloak (authentik is the source, Keycloak is the application).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We usually reserve integration guides for this use case, so the other might be a little interesting. Mabye, there could be a dedicated doc section?

Copy link
Contributor

@dewi-tik dewi-tik Jan 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I think that the keycloak source doc should be here with the others: https://docs.goauthentik.io/users-sources/sources/social-logins/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh I was completely oblivious to this. Let me fix this PR

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completely forgot about the user source docs lol

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same :x as a thought it may make sense to have these in a section in the integration guides instead of the regular docs. that organization makes more sense to me

Also, I updated the PR

@github-actions
Copy link
Contributor

github-actions bot commented Jan 20, 2026

authentik PR Installation instructions

Instructions for docker-compose

Add the following block to your .env file:

AUTHENTIK_IMAGE=ghcr.io/goauthentik/dev-server
AUTHENTIK_TAG=gh-29b0b836267b15e877f31c6a112720f220d230de
AUTHENTIK_OUTPOSTS__CONTAINER_IMAGE_BASE=ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s

Afterwards, run the upgrade commands from the latest release notes.

Instructions for Kubernetes

Add the following block to your values.yml file:

authentik:
    outposts:
        container_image_base: ghcr.io/goauthentik/dev-%(type)s:gh-%(build_hash)s
global:
    image:
        repository: ghcr.io/goauthentik/dev-server
        tag: gh-29b0b836267b15e877f31c6a112720f220d230de

Afterwards, run the upgrade commands from the latest release notes.

@PeshekDotDev PeshekDotDev force-pushed the keycloak-source-integration branch from 9c64c22 to cb97290 Compare January 20, 2026 14:56
@dominic-r dominic-r changed the title integrations: add keycloak as saml source steps website/docs: sources: add keycloak Jan 20, 2026

```
-----BEGIN CERTIFICATE-----
<Copied Keycloak Public Key Certificate Content>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so keycloak's exported cert comes without the header and footer. interesting

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah idk why they do that

2. Navigate to **Clients** and click **Create client**.
3. Configure the client with the following settings:
- Set **Client type** to `SAML`.
- Set **Client ID** to `https://authentik.company/source/saml/keycloak/metadata/`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets use a placeholder for the keycloak slug here and throughout the doc

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

2. Configure the following settings:
- Enable **Sign documents**.
- Enable **Sign assertions**.
- Enable **Encrypt assertions** (optional, for encrypted SAML).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

feels weird to say "Enable", then say "optional"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed


### Upload the authentik certificate to Keycloak

1. In the client settings, navigate to the **Keys** tab.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we remind how to navigate to the client settings tab

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah I put an update in for that


1. In the client settings, navigate to the **Keys** tab.
2. Configure the following settings:
- Enable **Client signature required** if you want Keycloak to verify signatures from authentik.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why sign the responses if you don't want keycloak to verify the signature

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

1. In the client settings, navigate to the **Keys** tab.
2. Configure the following settings:
- Enable **Client signature required** if you want Keycloak to verify signatures from authentik.
- Click **Import** and upload the authentik certificate you exported earlier. This allows Keycloak to verify signatures on requests from authentik.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do they limit the upload to a specific file extension or something? if so, would be essential to tell the user to save it with the .pem extension or whatever

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nah it lets you select any file extension

2. Configure the following settings:
- Enable **Client signature required** if you want Keycloak to verify signatures from authentik.
- Click **Import** and upload the authentik certificate you exported earlier. This allows Keycloak to verify signatures on requests from authentik.
- If encryption is enabled, click **Import** under the encryption key and upload the authentik certificate.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we remind the user in parenthesis how to determine wether encryption is enabled

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed the wording. The key import and encryption are enabled/uploaded in the same spot. and ive changed the wording to make all encryption and signature verification required/implied, so this is good now


1. Navigate to **Directory** > **Federation and Social login** and click **Create**.
2. Select **SAML Source** and configure the following settings:
- Set **Name** to `Keycloak`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should give some liberty for this and next line. Set a name, for example Keycloak or similar

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's kind of implied that they can name it whatever, especially after i added your reminder that i should specify the slug, id kind of rather lean the user towards naming it keycloak as well because it makes sense and matches what we would assume the default slug would be

- Set **SLO URL** to `https://keycloak.company/realms/<realm-name>/protocol/saml`.
- Set **Issuer** to `https://authentik.company/source/saml/keycloak/metadata/`.
- Set **Service Provider Binding** to `Post (Auto-Submit)`.
- Set **Signing Keypair** to an authentik certificate (e.g., the default self-signed certificate).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

last time you mentioned the default you put its full name. should match for consistency

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

PeshekDotDev and others added 4 commits January 20, 2026 09:28
…x.md

Co-authored-by: Dominic R <dominic@sdko.org>
Signed-off-by: Connor Peshek <connor@connorpeshek.me>
…x.md

Co-authored-by: Dominic R <dominic@sdko.org>
Signed-off-by: Connor Peshek <connor@connorpeshek.me>

- `authentik.company` is the FQDN of the authentik installation.
- `keycloak.company` is the FQDN of the Keycloak installation.
- `keycloak-slug` is the slug you will assign to the SAML source in authentik (e.g., `keycloak`).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usually we just do <application-slug> (like in integration guides), but i'm fine w this

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as in without putting it in placeholders as well

Copy link
Member

@dominic-r dominic-r left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

great doc! thanks

@github-project-automation github-project-automation bot moved this from Needs review to In Progress in authentik Core Jan 20, 2026
@PeshekDotDev
Copy link
Contributor Author

Thank you @dominic-r! Anytime!

@PeshekDotDev PeshekDotDev merged commit ecaa673 into main Jan 20, 2026
101 checks passed
@PeshekDotDev PeshekDotDev deleted the keycloak-source-integration branch January 20, 2026 20:24
@github-project-automation github-project-automation bot moved this from In Progress to Done in authentik Core Jan 20, 2026
kensternberg-authentik added a commit that referenced this pull request Jan 20, 2026
* main:
  website/docs: sources: add keycloak (#19591)
  website/docs: endpoints devices: typo fix (#19621)
  lib/sync/outgoing: handle deletions even if object does not exist in database (#18968)
kensternberg-authentik added a commit that referenced this pull request Jan 20, 2026
* main:
  website/docs: sources: add keycloak (#19591)
  website/docs: endpoints devices: typo fix (#19621)
  lib/sync/outgoing: handle deletions even if object does not exist in database (#18968)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs Features or issues related to Docusaurus

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants