# Installation

In order to use this functionality you need to install the `idp-oidc` extra as follows:

    pip install "django-allauth[idp-oidc]"

As the provider functionality is dependent on the regular allauth account handling, you will need to follow the installation instructions related to `allauth.account` first. On top of that, you will need to add the following to your project setup.

In your `settings.py`, include the OpenID Connect provider app:

    INSTALLED_APPS = [
        ...
        "allauth.idp.oidc",
        ...
    ]

Next, create a private key using the following command:

    openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

Then, include that `private_key.pem` in your `settings.py`:

    IDP_OIDC_PRIVATE_KEY = """
    -----BEGIN PRIVATE KEY-----
    MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCiStSwvoSk61uf
    cQvkGDmR6gsM2QjVgKxCTPtg3tMhMO7kXq3PPMEiWlF49JicjPWs5vkYcLAsWNVE
    ...
    rfnteLIERvzd4rLi9WjTahfKA2Mq3YNIe3Hw8IDrrczJgd/XkEaENGYXmmNCX22B
    gtUcukumVPtrDhGK9i/PG3Q=
    -----END PRIVATE KEY-----
    """

Your project `urls.py` should include:

    urlpatterns = [
        ...
        path("", include("allauth.idp.urls")),
        ...
    ]