Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Keycloak guide #28

Merged
merged 2 commits into from
Sep 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions auth.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Most strategies require some configuration. Check out the links below for module
- Firebase
- [GitHub](/auth/github)
- [Google](/auth/google)
- [Keycloak OpenID Connect](/auth/keycloak)
- [LDAP / Active Directory](/auth/ldap)
- [Local](/auth/local)
- Microsoft
Expand Down
56 changes: 56 additions & 0 deletions auth/keycloak.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: Keycloak
description: Authentication Module
published: true
date: 2021-09-15T07:49:57.150Z
tags: auth, module
---

# Keycloak
[Keycloak](https://keycloak.org) is an Open Source Identity and Access Management solution for modern Applications and Services.

## Relevant information
- [Keycloak OIDC Endpoints](https://www.keycloak.org/docs/latest/server_admin/#keycloak-server-oidc-uri-endpoints)
- [Keycloak OIDC Clients](https://www.keycloak.org/docs/latest/server_admin/#_clients)

## Setup
### Create Keycloak strategy instance on Wiki.js
1. In the Administration area of your wiki, click on `Authentication` in the left navigation menu
2. Click on `+ ADD STRATEGY`, scroll down and select `Keycloak`
3. Go to the bottom of the page and copy/note the `Callback URL / Redirect URI`
4. Keep this page/tab open. We will fill out the rest after setting up the Keycloak client

### Creating a Keycloak client
1. At the Keycloak administration page, go to the `Clients` menu, and click `Create` button on the right
2. Enter a **Client ID**, for example `wikijs` (You wil need the `Client ID` later)
3. Select **openid-connect** as `Client Protocol`
4. And **Root URL** is the base URL to Wikijs (for example `https://wiki.example.com`)
5. Click **Save**
6. Change **Access Type** to `confidential`
7. Enter the **Valid Redirect URIs**, which is the `Callback URL / Redirect URI` from Wiki.js (ex. `https://wiki.example.com/login/d03f689b-0dd0-44d6-90ca-6386ec41d799/callback`, or just the path `/login/{GUID}/callback`)
8. Set **Base URL** to the same as `Root URL`
9. Set **Web Origins** to `+`, which means to use the URIs in the `Valid Redirect URIs` entry.
10. Now click **Save** at the bottom of the page
11. Go to the **Credentials** tab and copy the `Secret` (You will need this one later too)

### Configure the Keycloak strategy in Wiki.js
1. If you're not already there. Go to the Administration area of your wiki, click on `Authentication` in the left navigation menu
2. Click on **Keycloak**
3. Enter the **Host**, which is the domain (incl. the scheme) of your Keycloak server (Example: `https://keycloak.example.com`)
4. Enter the **Realm**, which is the realm you are using in Keycloak (Default is: `master`)
5. Enter the **Client Id**, which is the `Client ID` from Keycloak
6. Enter the **Client Secret**, which is the `Secret` from Keycloak
7. Enter the **Authorization Endpoint URL**, which is `https://keycloak.example.com/auth/realms/master/protocol/openid-connect/auth`
8. Enter the **Token URL**, which is `https://keycloak.example.com/auth/realms/master/protocol/openid-connect/token`
9. Enter the **User Info URL**, which is `https://keycloak.example.com/auth/realms/master/protocol/openid-connect/userinfo`
10. If you want the user to be logged out of Keycloak when logging out of Wiki.js, enable `Logout from Keycloak on Logout`
11. Enter the `Logout Endpoint URL`, which is `https://keycloak.example.com/auth/realms/master/protocol/openid-connect/logout`
12. Check **Allow self-registration** to enable the Keycloak login button, and auto create users as they login for the first time.
13. Remember to add a group with at least read permissions in the **Assign to group** list
14. Click `Apply` in the top-right corner and try to login

### Seamless login
If the login worked, you can enable `Bypass Login Screen` under the `Security` tab in the left navigation menu.
Make sure the Keycloak provider is at the top of the list in the `Authentication` tab.

![](https://static.requarks.io/logo/keycloak.svg =x50){.align-abstopright}