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

website/integrations: Add documentation for Drupal #12925

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
90 changes: 90 additions & 0 deletions website/integrations/services/drupal/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: Integrate with Drupal
sidebar_label: Drupal
---

# Integrate with Drupal

<span class="badge badge--secondary">Support level: Community</span>

## What is Drupal

> [Drupal](https://new.drupal.org/home) is a free and open-source content
Copy link
Contributor

Choose a reason for hiding this comment

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

You shouldn't link Drupal's home page in markdown and link it's wikipedia page right below. Please only keep Line 15

> management system written in PHP and paired with a database.
>
> -- https://en.wikipedia.org/wiki/Drupal

:::note
There are many different modules for Drupal that allow you to set up SSO using
different authentication methods. This tutorial uses the
[OpenID Connect / OAuth client](https://www.drupal.org/project/openid_connect)
module.
:::

## Preparation

The following placeholders are used in this guide:

- `drupal.ddev.site` is the FQDN of Drupal installation.
Copy link
Contributor

Choose a reason for hiding this comment

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

Drupal can be selfhosted. As a result, it is not fair to say that drupal.ddev.site is it's FQDN. You could instead say drupal.company and update all further references

- `authentik.company` is the FQDN of Authentik installation.
Copy link
Contributor

Choose a reason for hiding this comment

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

"authentik" should be in lowercase as per the style guide's "authentik names" section


:::note
This documentation lists only the settings that you need to change from their
default values. Be aware that any changes other than those explicitly mentioned
in this guide could cause issues accessing your application.
:::


## authentik configuration
Copy link
Contributor

Choose a reason for hiding this comment

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

Note to tana: reminder: will update format in a later PR


### Provider

- Go to Applications -> Providers
https://authentik.company/if/admin/#/core/providers
- Create an OAuth2/OpenID Provider
- Set the Authentication flow to default-authentication-flow
- The Authorisation flow can be either default-provider-authorization-implicit-consent
or default-provider-authorization-explicit-consent
- Set the Client type to "Confidential"
- Note the Cliend ID and Client Secret
- Set the Redirect URIs/Origins to your Drupal site
https://drupal.ddev.site/openid-connect/generic
- Leave everything else as-is

### Application

- Go to Applications -> Applications
https://authentik.company/if/admin/#/core/applications
- Create an application e.g. "Drupal" and set the Provider field to the provider
created above

### 2FA (optional)
Copy link
Contributor

Choose a reason for hiding this comment

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

This section is not needed


- Go to Flows & Stages -> Flows
- Open the default-authentication-flow (click the link with the flow name, not
the edit button)
- Go to "Stage Bindings"
- Edit default-authentication-mfa-validation
- Select "TOTP Authenticators" in "Device classes" and
"default-authenticator-totp-setup (TOTP Authenticator Setup Stage" in
"Configuration stages"
![](./drupal_2fa.png)

## Service configuration
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
## Service configuration
## Drupal configuration

Copy link
Contributor

Choose a reason for hiding this comment

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

Please see the style guide's "formatting" section for proper URL styling

Copy link
Contributor

Choose a reason for hiding this comment

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

"x endpoint" & "if authentik is running locally [...]" lines could be consolidated into one, potentially with a message at the top of this configuration. I suggest looking at the style guide's admonitions syntax section for the correct markdown format.


- Go to https://drupal.ddev.site/admin/config/services/openid-connect
- Input the Client ID and Secret you noted above
- Fill out the following endpoints:
- Authorization endpoint: https://authentik.company/application/o/authorize/
- Token endpoint: https://authentik.company/application/o/token/
if Authentik is running locally, use http://host.docker.internal:9000/application/o/token/
- UserInfo endpoint: https://authentik.company/application/o/userinfo/
if Authentik is running locally, use http://host.docker.internal:9000/application/o/userinfo/
- Select the "Override registration settings" checkbox
- Enable the OpenID button on user login form

## Configuration verification
Copy link
Contributor

Choose a reason for hiding this comment

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

The configuration verification section is a step to confirm that authentik works with the service. You need to explicitly mention how to log in & if there are any particularities. I suggest looking at the Integration template's example for a good base

Once logged in for the first time, depending on your user registration settings
you may get a message saying you've successfully logged in but your account is
blocked and needs to be approved by an administrator, so unblock the user in the
usual way, and then you can log in successfully.
Copy link
Contributor

Choose a reason for hiding this comment

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

in the usual way

How? Could you link documentation which references this unblock method?

1 change: 1 addition & 0 deletions website/sidebarsIntegrations.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ module.exports = {
label: "Platforms",
items: [
"services/budibase/index",
"services/drupal/index",
"services/wordpress/index",
],
},
Expand Down