---
title: "TYPO3 Extension oauth2 (mfc/oauth2)"
version: "4.4"
permalink: "https://docs.typo3.org/permalink/mfc/oauth2:typo3-extension@4.4"
source: "Index.md"
start: true
rendered: "2026-10-29T11:10:19+00:00"
---

# TYPO3 Extension `oauth2` (`mfc/oauth2`) {#typo3-extension}

[https://poser.pugx.org/mfc/oauth2/v/stable](https://packagist.org/packages/mfc/oauth2) [https://poser.pugx.org/mfc/oauth2/license](https://packagist.org/packages/mfc/oauth2)

This extension provides OAuth 2.0 authentication for TYPO3 installations.

[Read more](https://www.marketing-factory.com/services/programming-and-development/custom-development/oauth2/)

## 1\. Features {#1-features}

-   Can automatically create new backend users
-   Certain OAuth resource servers can control admin permissions and assign backend group memberships

## 2\. Usage {#2-usage}

### 1\) Installation {#1-installation}

The only way to install this extension is by using [Composer](https://getcomposer.org/). In your Composer based TYPO3 project root, just run `composer require mfc/oauth2`.

### 2\) Configure the extension {#2-configure-the-extension}

To add an OAuth2 Server for login, we recommend you create your own little extension, use your existing site package or put the configuration in your `config/system/additional.php`.

#### 2.1) Using the GitLab Provider included in this extension {#2-1-using-the-gitlab-provider-included-in-this-extension}

Configuring the GitLab Login Provider is pretty straight forward. Just put the following configuration into your `ext_localconf.php` or the aforementioned `config/system/additional.php` and customize it to your needs.

```php
Mfc\OAuth2\ResourceServer\Registry::addServer(
    'gitlab', // identifier for the Resource Server
    'Login with GitLab', // Text displayed on the Login Screen
    \Mfc\OAuth2\ResourceServer\GitLab::class,
    [
        'enabled'   => true, // Enable/Disable the provider
        'arguments' => [
            'appId'                => 'your-app-id',
            'appSecret'            => 'your-app-secret',
            'gitlabServer'         => 'https://gitlab.com', // Your GitLab Server
            'gitlabAdminUserLevel' => \Mfc\OAuth2\ResourceServer\GitLab::USER_LEVEL_DEVELOPER, // User level at which the user will be given admin permissions
            'gitlabDefaultGroups'  => '0', // Groups to assign to the User (comma separated list possible)
            'gitlabUserOption'     => 0, // UserConfig
            'blockExternalUser'    => false, // Blocks users with flag external from access the backend
            'projectName'          => 'your/repo', // the repository from which user information is fetched
        ],
    ]
);

```

You can obtain the required information for the provider by going to either [https://gitlab.com/profile/applications](https://gitlab.com/profile/applications) if you're using the hosted version of GitLab, or to the equivalent page on your self-hosted GitLab server.

When creating the application within GitLab, you might need the following information:

-   Redirect URI: `<your-domain-here>/typo3/index.php`
-   Scopes: `read_api`,`read_user`,`openid`

#### 2.2) Creating your own provider {#2-2-creating-your-own-provider}

To create your own Provider, you need to create your own extension, and create a class which extends `Mfc\OAuth2\ResourceServer\AbstractResourceServer`. You can then use the same boilerplate shown in 2.1 to register your newly created provider. The `arguments` array included in the provider registration will be provided as-is as the first argument to your providers constructor, with the addition of a `providerName` key which contains the identifier you set in your registration.

**Example**

You've created your own extension, and created the class `Just\AnExample\Providers\ExampleProvider`. To register your provider you'd extend the configuration as follows

```php
Mfc\OAuth2\ResourceServer\Registry::addServer(
    'example-provider', // identifier for the Resource Server
    'Login with Example', // Text displayed on the Login Screen
    \Just\AnExample\Providers\ExampleProvider::class,
    [
        'enabled'   => true, // Enable/Disable the provider
        'arguments' => [
            'yourarg' => 'somevalue',
            // ...
        ],
    ]
);

```

The first argument passed to your provider will be:

```php
array(
    'providerName' => 'example-provider',
    'yourarg' => 'somevalue',
    // ...
);

```

#### 2.3) Change the default Cookie Settings in TYPO3 {#2-3-change-the-default-cookie-settings-in-typo3}

To use the redirect mechanism of oAuth you must allow lax cookie settings for TYPO3: [cookieSameSite ](https://docs.typo3.org/m/typo3/reference-coreapi/14.3/en-us/Configuration/Typo3ConfVars/BE.html#confval-globals-typo3-conf-vars-be-cookiesamesite) must be set to 'lax'.

```php
$GLOBALS['TYPO3_CONF_VARS']['BE']['cookieSameSite'] = 'lax'

```

## 3\. License {#3-license}

mfc/oauth2 is released under the terms of the GPL-2 License.

## 4\. Support {#4-support}

Free Support is available via [Github Issue Tracker](https://github.com/marketing-factory/oauth2/issues) For commercial support, please contact us at [info@marketing-factory.de](mailto:info@marketing-factory.de)
