mod_auth_openidc#

Описание#

mod_auth_openidc предназначен для защиты веб-приложений, развернутых на сервере Apache HTTP Server, с использованием протокола OpenID Connect (OIDC). Позволяет реализовать аутентификацию и авторизацию пользователей через провайдера удостоверений (Identity Provider, IdP), поддерживающего OIDC.

Примечание

Для корректной работы mod_auth_openidc могут понадобиться:

  • модуль mod_ssl - обеспечивает безопасное соединение (HTTPS), необходимое для OIDC;

  • mod_session - позволяет использовать сессии для хранения данных аутентификации;

  • библиотеки:

    • libcurl - используется для выполнения HTTP-запросов к провайдеру OIDC;

    • libjansson - используется для обработки JSON-данных, которые передаются между сервером и провайдером OIDC;

    • OpenSSL - необходима для шифрования данных сессии и обеспечения безопасности соединений;

  • утилита openssl - позволяет генерировать ключи и сертификаты, необходимые для настройки SSL/TLS.

Пример конфигурации#

Пример конфигурации, настроенной с помощью модуля mod_auth_openidc:

<VirtualHost *:80>

    ServerAdmin admin@localhost
    DocumentRoot /var/www/html

    # Секретная фраза для шифрования данных сессии
    OIDCCryptoPassphrase <secret_phrase>

    # URL метаданных провайдера OIDC
    OIDCProviderMetadataURL <IdP_addr>/realms/<IdP_realm>/.well-known/openid-configuration

    # Идентификатор клиента, выданный провайдером OIDC
    OIDCClientID <client_ID>
    # Секрет клиента
    OIDCClientSecret <client_secret>
    # URI перенаправления, который используется для обратного вызова после аутентификации
    OIDCRedirectURI http://<host_IP>/<client_app_name>/<redirect_uri>

    # Сопоставление имени пользователя из токена OIDC с переменной окружения REMOTE_USER
    OIDCRemoteUserClaim <preferred_username>

    <Location /<client_app_name>/>
        AuthType openid-connect
        Require valid-user
    </Location>
</VirtualHost>

Директивы#

Список директив модуля представлен в таблице ниже.

Директивы mod_auth_openidc#

Синтаксис

Значение по умолчанию

Контекст

Описание

OIDCRedirectURI <redirect_uri>

Нет

server config, virtual host

Задает URI перенаправления для клиента OpenID Connect; это «красивый» URL, который должен указывать только на путь на сервере, защищенный этим модулем, но не должен указывать на какой-либо фактический контент, который необходимо обслуживать. Можно использовать относительный URL

OIDCCryptoPassphrase [ <passphrase> | "exec:<path_to_otherProgram arg1>" ] [ <previous-passphrase> | "exec:<path_to_otherProgram arg2>" ]

Нет

server config, virtual host

Устанавливает пароль для криптографических целей, который используется для:
- шифрования временного состояния cookie;
- шифрования кеш-записей, которые могут включать сессии cookie.
Если значение начинается с exec:, будет выполнена команда, и первая строка, возвращенная стандартным выводом программы, будет использована в качестве пароля

OIDCMetadataDir <directory_path>

Нет

server config, virtual host

Указывает каталог, который содержит файлы метаданных (должен быть доступен для записи процессу/пользователю веб-сервера). Если не указано, предполагается, что используется один статически настроенный провайдер

OIDCProviderMetadataURL <url>

Нет

server config, virtual host

Задает URL, по которому можно найти метаданные провайдера OpenID Connect. Полученные метаданные будут кешироваться и обновляться каждые 24 часа. Если установлено, отдельные записи ниже не нужно настраивать, но их можно использовать для добавления дополнительных записей/эндпойнтов

OIDCProviderIssuer <issuer>

Нет

server config, virtual host

Задает идентификатор провайдера OpenID Connect. Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают его

OIDCProviderAuthorizationEndpoint <authorization_endpoint>

Нет

server config, virtual host

Задает URL эндпойнта авторизации провайдера OpenID Connect. Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают его

OIDCProviderJwksUri <jwks_url>

Нет

server config, virtual host

Задает URL провайдера OpenID Connect для JWKS, т.е. URL, по которому размещены ключи подписи для этого провайдера в формате JWK. Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают jwks_uri

OIDCProviderSignedJwksUri <jwks_url> [ <jwks> | <jwk> ]

Нет

server config, virtual host

Задает URL подписанного JWKS провайдера OIDC, за которым следует набор ключей проверки, отформатированный как JWK или JWKS. Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают signed_jwks_uri

OIDCProviderVerifyCertFiles (["sig:"|"enc:"][<kid>#]<filename>)+

Нет

server config, virtual host

Указывает полные имена файлов, содержащих сертификаты X.509 с открытыми ключами RSA/EC, которые могут использоваться для проверки ID Token. Это может быть одна или несколько связок ключей. Часть с идентификатором ключа обязательна, когда ID Token содержит kid в заголовке

OIDCProviderTokenEndpoint <token_endpoint>

Нет

server config, virtual host

Содержит URL эндпойнта токена провайдера OIDC. Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают его

OIDCProviderTokenEndpointAuth [ client_secret_basic | client_secret_post | client_secret_jwt | private_key_jwt | none ]

Нет

server config, virtual host

Указывает метод аутентификации для эндпойнта токена провайдера OIDC. При использовании private_key_jwt необходимо установить OIDCPrivateKeyFiles и OIDCPublicKeyFiles перед применением этой директивы. При отсутствии определения используется метод по умолчанию из спецификации, т.е. client_secret_basic

OIDCProviderTokenEndpointParams <urlencoded_name1>=<urlencoded_value1>[&<urlencoded_nameN>=<urlencoded_valueN>]*

Нет

server config, virtual host

Задает дополнительные параметры, которые необходимо передать в POST-запросе к эндпойнту токена. Имена и значения параметров должны быть предоставлены в URL-кодированном формате. При отсутствии определения дополнительные параметры не будут переданы

OIDCProviderUserInfoEndpoint <user_info_endpoint>

Нет

server config, virtual host

Содержит URL эндпойнта UserInfo провайдера OIDC. При отсутствии определения не будут разрешены никакие утверждения из этого эндпойнта

OIDCProviderCheckSessionIFrame <url>

Нет

server config, virtual host

Задает URL iFrame проверки сессии провайдера OIDC для управления сессиями. При отсутствии определения управление сессией не будет применяться

OIDCProviderEndSessionEndpoint <url>

Нет

server config, virtual host

Указывает URL эндпойнта завершения сессии провайдера OIDC для целей единого выхода (управление сессиями). При отсутствии определения выход из провайдера не будет выполнен

OIDCLogoutRequestParams <query_encoded_string>

Нет

server config, virtual host

Указывает дополнительные параметры, которые будут отправлены вместе с запросом на выход. Они должны быть URL-кодированы, например: client_id=myclient&prompt=none. Это используется для статически настроенного (одиночного) провайдера или служит по умолчанию для обнаруженных провайдеров. По умолчанию дополнительные параметры не добавляются

OIDCProviderRevocationEndpoint <url>

Нет

server config, virtual host

Содержит URL эндпойнта отзыва токенов по RFC 7009. При определении refresh-токен и access-токен, хранящиеся в сессии OIDC, будут отозваны при выходе. Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают его

OIDCProviderPushedAuthorizationRequestEndpoint <url>

Нет

server config, virtual host

Указывает URL эндпойнта для отправленных авторизационных запросов по RFC 9126. При отсутствии определения PAR не может быть использован для отправки запросов на аутентификацию

OIDCProviderBackChannelLogoutSupported [On|Off]

Нет

server config, virtual host

Определяет, поддерживает ли провайдер OIDC выход из канала (Back Channel Logout). Используется, когда OIDCProviderMetadataURL не определен или метаданные, полученные с этого URL, не устанавливают его

OIDCProviderRegistrationEndpointJson <json_string>

Нет

server config, virtual host

Устанавливает дополнительные JSON-параметры, которые необходимо передать в запросе на регистрацию к эндпойнту регистрации. Эта настройка служит значением по умолчанию для нескольких провайдеров. Имена и значения параметров должны быть предоставлены в формате JSON и будут объединены в запрос. При отсутствии определения дополнительные параметры не будут переданы

OIDCScope "<scope(s)_separated_by_spaces_and_enclosed_in_double_quotes>"

Нет

server config, virtual host, directory

Определяет область OIDC, которая запрашивается у провайдера (например, openid email profile). При отсутствии определения используется минимальная область openid. Множественные значения области должны быть заключены в одну пару двойных кавычек

OIDCAuthRequestParams <query_encoded_string>

Нет

server config, virtual host, directory

Определяет дополнительные параметры, которые будут отправлены вместе с запросом на авторизацию. Они должны быть URL-кодированы, например: display=popup&prompt=consent. Это используется для статически настроенного (одиночного) провайдера или служит по умолчанию для обнаруженных провайдеров

OIDCSSLValidateServer [On|Off]

OIDCSSLValidateServer On

server config, virtual host

Требует наличия действительного SSL-сертификата сервера при взаимодействии с провайдером (например, на эндпойнтах токена, UserInfo и динамической регистрации клиента)

OIDCCABundlePath <path>

Нет

server config, virtual host

Устанавливает путь к CA-бандлу, который будет использоваться cURL. При отсутствии определения используется бандл по умолчанию для libcurl, предоставленный платформой

OIDCValidateIssuer [On|Off]

OIDCValidateIssuer On

server config, virtual host

Требует, чтобы настроенный идентификатор соответствовал идентификатору, возвращаемому в id_token

OIDCUserInfoRefreshInterval <seconds> [ logout_on_error | authenticate_on_error | 502_on_error ]

Нет

server config, virtual host, directory

Задает интервал обновления в секундах для утверждений, полученных из эндпойнта UserInfo. При отсутствии определения утверждения извлекаются только один раз, при создании сессии. Если обновление не удается, предполагается, что access-токен истек, и будет предпринята попытка обновить access-токен с использованием refresh-токена

OIDCJWKSRefreshInterval <seconds>

OIDCJWKSRefreshInterval 3600

server config, virtual host

Задает интервал обновления в секундах для набора ключей JWK, полученных из jwks_uri и signed_jwks_uri

OIDCUserInfoTokenMethod [authz_header|post_param]

OIDCUserInfoTokenMethod authz_header

server config, virtual host, directory

Определяет способ, которым access-токен будет представлен эндпойнту UserInfo. authz_header означает, что токен будет представлен в заголовке Authorization: Bearer с использованием HTTP GET. post_param означает, что токен будет представлен как параметр формы в POST-запросе

OIDCProviderAuthRequestMethod [ GET | POST | PAR ]

OIDCProviderAuthRequestMethod GET

server config, virtual host

Определяет HTTP-метод, используемый для передачи параметров в запросе аутентификации к эндпойнту авторизации. GET означает, что параметры будут переданы как параметры запроса в HTTP GET. POST - параметры будут переданы как параметры формы в HTTP POST. PAR - параметры будут отправлены в эндпойнт Pushed Authorization

OIDCPublicKeyFiles (["sig:"|"enc:"][<kid>#]<filename>)+

Нет

server config, virtual host

Включает полные имена файлов, содержащих PEM-форматированные открытые ключи RSA/EC или сертификаты X.509, которые будут использоваться для шифрования JWT (состояние OP/id_token) провайдером. Один из этих ключей должен соответствовать закрытым ключам, определенным в OIDCPrivateKeyFiles

OIDCPrivateKeyFiles (["sig:"|"enc:"][<kid>#]<filename>)+

Нет

server config, virtual host

Включает полные имена файлов, содержащих PEM-форматированные закрытые ключи RSA/EC, которые могут использоваться для расшифровки содержимого, отправленного провайдером. Эти ключи должны соответствовать открытым ключам, определенным в OIDCPublicKeyFiles

OIDCResponseType ["code"|"id_token"|"id_token token"|"code id_token"|"code token"|"code id_token token"]

OIDCResponseType "code"

server config, virtual host, directory

Задает тип ответа (или поток OIDC), используемый по умолчанию (также служит значением по умолчанию для обнаруженных провайдеров)

OIDCResponseMode [fragment|query|form_post]

Нет

server config, virtual host, directory

Устанавливает режим ответа, используемый по умолчанию (также служит значением по умолчанию для обнаруженных провайдеров). При отсутствии определения используется режим ответа по умолчанию для запрашиваемого потока (OIDCResponseType)

OIDCClientID <client_id>

Нет

server config, virtual host

Указывает идентификатор клиента, используемый в вызовах к статически настроенному провайдеру OpenID Connect

OIDCClientSecret [ <client_secret> | "exec:<path_to_other_Program> argument1" ]

Нет

server config, virtual host

Указывает секрет клиента, используемый в вызовах к статически настроенному провайдеру OIDC (не используется/не требуется в профиле неявного клиента, т.е. когда OIDCResponseType равен id_token). Если значение начинается с exec:, будет выполнена команда, и первая строка, возвращенная стандартным выводом, будет использована как секрет

OIDCClientTokenEndpointCert <filename>

Нет

server config, virtual host

Указывает имя файла с PEM-форматированным клиентским сертификатом, используемым для аутентификации клиента в вызовах к эндпойнту токена сервера авторизации OAuth 2.0

OIDCClientTokenEndpointKey <filename>

Нет

server config, virtual host

Указывает имя файла с PEM-форматированным закрытым ключом, который принадлежит клиентскому сертификату, используемому для аутентификации клиента в вызовах к эндпойнту токена сервера авторизации OAuth 2.0

OIDCClientTokenEndpointKeyPassword [ <passphrase> | "exec:<path_to_other_Program> arg1" ]

Нет

server config, virtual host

Устанавливает пароль для PEM-форматированного закрытого ключа, который принадлежит клиентскому сертификату, используемому для аутентификации клиента в вызовах к эндпойнту токена сервера авторизации OAuth 2.0. Если значение начинается с exec:, будет выполнена команда, и первая строка, возвращенная стандартным выводом, будет использована как пароль

OIDCClientName <client_name>

Нет

server config, virtual host

Указывает имя клиента для динамической регистрации у провайдера. При отсутствии определения имя клиента не будет отправлено с запросом на регистрацию

OIDCClientContact <contact>

Нет

server config, virtual host

Указывает контакты для динамической регистрации у провайдера. Должны быть отформатированы как адреса электронной почты по спецификации. Только одно значение; при отсутствии определения адрес электронной почты контакта не будет отправлен с запросом на регистрацию

OIDCPKCEMethod [ S256 | plain | none ]

OIDCPKCEMethod S256

server config, virtual host, directory

Задает метод PKCE, используемый по умолчанию (также служит значением по умолчанию для многопровайдерских OP)

OIDCDPoPMode [off|optional|required] [on|off]

OIDCDPoPMode off

server config, virtual host, directory

Устанавливает режим DPoP, используемый по умолчанию (также служит значением по умолчанию для многопровайдерских OP). Если требуется запросить DPoP-токен, настройки OIDCPrivateKeyFiles/OIDCPublicKeyFiles требуют наличия закрытого ключа RSA/EC для подписи

OIDCClientJwksUri <url>

OIDCClientJwksUri <redirect_uri>?jwks=rsa, на котором автоматически публикуется набор JWK на основе настройки OIDCPublicKeyFiles

server config, virtual host

Задает URL JWKs клиента, который будет использоваться во время регистрации клиента для указания его набора JWK с открытыми ключами

OIDCIDTokenSignedResponseAlg [RS256|RS384|RS512|PS256|PS384|PS512|HS256|HS384|HS512|ES256|ES384|ES512]

OIDCIDTokenSignedResponseAlg RS256

server config, virtual host

Задает алгоритм, который провайдер должен использовать для подписи id_token

OIDCIDTokenEncryptedResponseAlg [RSA1_5|A128KW|A256KW|RSA-OAEP]

Нет

server config, virtual host

Задает алгоритм, который провайдер должен использовать для шифрования ключа, используемого для защиты содержимого id_token. При отсутствии определения по умолчанию предполагается, что провайдер не шифрует id_token

OIDCIDTokenEncryptedResponseEnc [A128CBC-HS256|A256CBC-HS512|A256GCM]

OIDCIDTokenEncryptedResponseEnc A128CBC-HS256

server config, virtual host

Указывает алгоритм, который провайдер должен использовать для шифрования id_token с помощью ключа шифрования содержимого. Если указан OIDCIDTokenEncryptedResponseAlg, по умолчанию для этого значения используется A128CBC-HS256. При наличии OIDCIDTokenEncryptedResponseEnc также должен быть предоставлен OIDCIDTokenEncryptedResponseAlg

OIDCIDTokenAudValues <value>+

Нет

server config, virtual host

Устанавливает допустимые значения для утверждения aud в ID-токене. Значение @ может использоваться для ссылки на настроенный идентификатор клиента (например, в случае динамической регистрации клиента). Если определения отсутствуют, по умолчанию принимается любой список значений (или одно строковое значение), включая значение OIDCClientID

OIDCUserInfoSignedResponseAlg [RS256|RS384|RS512|PS256|PS384|PS512|HS256|HS384|HS512|ES256|ES384|ES512]

Нет

server config, virtual host

Выбирает алгоритм, который OP должен использовать для подписи ответа UserInfo. По умолчанию (по спецификации) OP не подписывает ответ. Может быть переопределен для каждого OP в конфигурационном файле с помощью ключа userinfo_signed_response_alg

OIDCUserInfoEncryptedResponseAlg [RSA1_5|A128KW|A256KW|RSA-OAEP]

Нет

server config, virtual host

Выбирает алгоритм, который OP должен использовать для шифрования ключа, используемого для защиты содержимого ответа UserInfo. По умолчанию (по спецификации) OP не шифрует ответ. Может быть переопределен для каждого OP в конфигурационном файле с помощью ключа userinfo_encrypted_response_alg

OIDCUserInfoEncryptedResponseEnc [A128CBC-HS256|A256CBC-HS512|A256GCM]

OIDCUserInfoEncryptedResponseEnc A128CBC-HS256

server config, virtual host

Выбирает алгоритм, который OP должен использовать для шифрования ответа UserInfo с помощью ключа шифрования содержимого. Если указан OIDCUserInfoEncryptedResponseAlg, то по умолчанию используется OIDCUserInfoEncryptedResponseEnc A128CBC-HS256. Если OIDCUserInfoEncryptedResponseEnc включен, то OIDCUserInfoEncryptedResponseAlg также должен быть предоставлен

OIDCProfile [OIDC10|FAPI20]

OIDCProfile OIDC10

server config, virtual host

Задает профиль OIDC (клиента), которому следует соответствовать, настраивающий параметры для: метода запроса аутентификации, DPoP, PKCE, значений aud для ID токена, значений aud для аутентификации токена, требования к параметру iss в ответах аутентификации. FAPI20 настраивает параметры для профиля безопасности FAPI 2.0

OIDCOAuthServerMetadataURL <url>

Нет

server config, virtual host

Указывает URL, по которому можно найти метаданные провайдера авторизации в соответствии с RFC 8414. Полученные метаданные будут кешироваться и обновляться каждые 24 часа. Если установлено, некоторые записи ниже не нужно настраивать, но можно использовать для добавления дополнительных записей/эндпойнтов к настройкам, полученным из метаданных. Если OIDCOAuthServerMetadataURL не установлен, записи эндпойнтов ниже должны быть настроены

OIDCOAuthIntrospectionEndpoint <token_introspection_endpoint>

Нет

server config, virtual host

Указывает эндпойнт интроспекции токенов OAuth 2.0. Обязательно при интроспекции непрозрачных токенов доступа, не обязательно при локальной валидации JWT токенов доступа

OIDCOAuthClientID <client_id>

Нет

server config, virtual host

Содержит идентификатор клиента, используемый в вызовах интроспекции токенов к серверу авторизации OAuth 2.0

OIDCOAuthClientSecret <client_secret>

Нет

server config, virtual host

Содержит секрет клиента, используемый в вызовах интроспекции токенов к серверу авторизации OAuth 2.0

OIDCOAuthIntrospectionEndpointAuth [client_secret_basic | client_secret_post | client_secret_jwt | private_key_jwt | bearer_access_token | none]

OIDCOAuthIntrospectionEndpointAuth client_secret_basic

server config, virtual host

Указывает метод аутентификации для эндпойнта интроспекции сервера авторизации OAuth 2.0, например, с помощью client_id/client_secret, когда установлены OIDCOAuthClientID и OIDCOAuthClientSecret, и настроены client_secret_basic или client_secret_post. При использовании private_key_jwt должны быть установлены OIDCPrivateKeyFiles и OIDCPublicKeyFiles

OIDCOAuthIntrospectionClientAuthBearerToken [a_static_bearer_token | ]

Нет

server config, virtual host

Используется, когда настроен OIDCOAuthIntrospectionEndpointAuth bearer_access_token. Указывает статический токен, который будет использоваться для авторизации вызова к эндпойнту интроспекции. Если не заполнено, для авторизации будет использоваться интроспектируемый токен

OIDCOAuthIntrospectionEndpointCert <filename>

Нет

server config, virtual host

Задает имя файла, содержащего клиентский сертификат в формате PEM, используемый для аутентификации вызывающего лица в вызовах интроспекции токенов к серверу авторизации OAuth 2.0

OIDCOAuthIntrospectionEndpointKey <filename>

Нет

server config, virtual host

Указывает имя файла, содержащего закрытый ключ в формате PEM, принадлежащий клиентскому сертификату, используемому для аутентификации вызывающего лица в вызовах интроспекции токенов к серверу авторизации OAuth 2.0

OIDCOAuthIntrospectionEndpointKeyPassword [<passphrase> | "exec:<path_to_other_Program> arg1"]

Нет

server config, virtual host

Содержит пароль для закрытого ключа в формате PEM, принадлежащего клиентскому сертификату, используемому для аутентификации клиента в вызовах к эндпойнту интроспекции токенов сервера авторизации OAuth 2.0. Если значение начинается с exec:, будет выполнена соответствующая команда, и первая строка, возвращенная стандартным выводом программы, будет использована в качестве пароля. Команда может быть абсолютной или относительной к корневому каталогу веб-сервера

OIDCOAuthIntrospectionEndpointMethod [POST|GET]

OIDCOAuthIntrospectionEndpointMethod POST

server config, virtual host

Определяет HTTP-метод, который следует использовать для вызова интроспекции

OIDCOAuthIntrospectionEndpointParams <url_encoded_name1>=<url_encoded_value1>[&<url_encoded_nameN>=<url_encoded_valueN]*

Нет

server config, virtual host

Задает дополнительные параметры, которые необходимо передать в POST-запросе к эндпойнту интроспекции. Имена и значения параметров должны быть предоставлены в URL-кодированном формате

OIDCOAuthIntrospectionTokenParamName <param_name>

OIDCOAuthIntrospectionTokenParamName token

server config, virtual host

Определяет имя параметра, значение которого содержит токен доступа в запросе на валидацию к эндпойнту интроспекции токенов

OIDCOAuthTokenExpiryClaim <claim_name> [absolute|relative] [mandatory|optional]

OIDCOAuthTokenExpiryClaim expires_in (relative, mandatory)

server config, virtual host

Определяет имя утверждения, которое содержит временную метку истечения токена, независимо от того, является ли она абсолютной (секунды с 1970 года), относительной (секунды от текущего времени, после чего токен истечет) и является ли она обязательной. Если утверждение является необязательным и не найдено в ответе, результат интроспекции не будет кешироваться. Применяется только в случае, если утверждение active не найдено в ответе интроспекции

OIDCOAuthTokenIntrospectionInterval <seconds>

OIDCOAuthTokenIntrospectionInterval 0

server config, virtual host

Определяет интервал в секундах, после которого кешированный и интроспектируемый токен доступа должен быть обновлен путем повторной интроспекции (и валидации) его на сервере авторизации. Если не определено, то значение равно 0 - токен истекает только после exp (или альтернативного, см. OIDCOAuthTokenExpiryClaim) подсказки, возвращенной сервером авторизации. Если установлено в -1, кеширование результатов интроспекции отключается, и токен будет интроспектироваться при каждом запросе, представляющем его

OIDCOAuthSSLValidateServer [On|Off]

OIDCOAuthSSLValidateServer On

server config, virtual host

Требует действительного SSL-сертификата сервера при взаимодействии с сервером авторизации на эндпойнте интроспекции токенов

OIDCOAuthVerifySharedKeys (["sig:"|"enc:"]plain|b64|hex#[<key_identifier>]#<key>)+

Нет

server config, virtual host

Определяет симметричные общие ключи, которые могут быть использованы для локальной валидации JWT-токенов доступа. Укажите префикс sig: или enc:, чтобы указать, что ключ предназначен специально для подписи или шифрования. Если не определено, валидация токенов доступа с использованием общих ключей не будет выполняться

OIDCOAuthVerifyCertFiles (["sig:"|"enc:"][<kid>#]<filename>)+

Нет

server config, virtual host

Включает полные имена файлов, содержащих сертификаты X.509 с открытыми ключами RSA/EC, которые могут быть использованы для локальной валидации JWT-токенов доступа. Часть идентификатора ключа обязательна, когда JWT-токен доступа содержит kid в своем заголовке. Укажите префикс sig: или enc:, чтобы указать, что ключ предназначен специально для подписи или шифрования. Если не определено, валидация токенов доступа с использованием статически настроенных сертификатов не будет выполняться

OIDCOAuthVerifyJwksUri <jwks_url>

Нет

server config, virtual host

Указывает URL JWK, на котором сервер авторизации публикует ключи, используемые для подписи своих JWT-токенов доступа. Если не определено, локальная валидация JWT все еще может быть выполнена с использованием статически настроенных ключей при установке OIDCOAuthVerifyCertFiles и/или OIDCOAuthVerifySharedKeys

OIDCOAuthRemoteUserClaim <claim_name> [<regular_expression>] [substitution_string]

OIDCOAuthRemoteUserClaim sub

server config, virtual host, directory

Задает утверждение, которое используется при установке переменной REMOTE_USER на защищенных путях OAuth 2.0. Можно добавить необязательное регулярное выражение в качестве второго параметра, которое будет применено к значению утверждения из первого параметра, и первое совпадение, возвращенное из этого выражения, будет установлено как REMOTE_USER. Можно добавить необязательный третий параметр, который будет содержать строку с номерами обратных ссылок. Обратные ссылки должны быть в формате $1, $2 и т.д

OIDCOAuthAcceptTokenAs [header|post|query|cookie[:<cookie_name>|basic]+

OIDCOAuthAcceptTokenAs header

server config, virtual host, directory

Определяет способы, которыми токены доступа OAuth 2.0 могут быть переданы серверу ресурсов. Должен быть один или несколько из: header (заголовок Authorization: bearer), post (HTTP параметр Post с именем access_token), query (в качестве HTTP параметра запроса с именем access_token), cookie (в качестве заголовка cookie с именем PA.global или с использованием имени, указанного после :), basic (в качестве пароля HTTP Basic Auth (RFC2617, раздел 2) с любым именем пользователя)

OIDCCookiePath <cookie_path>

/

server config, virtual host

Определяет путь к cookie для их state (хранение временного состояния во время процесса аутентификации) и session (хранение данных сессии после успешной аутентификации). По умолчанию используется корневой каталог сервера

OIDCCookieDomain <cookie_domain>

Текущий хост сервера

server config, virtual host

Указывает домен, для которого будут установлены cookie state и session. Должен совпадать с OIDCRedirectURI и URL, на котором размещено защищенное приложение. Используйте буквальное значение доменного имени, которое будет в значении атрибута Domain для заголовка Set-Cookie, без точки в начале

OIDCCookie <cookie_name>

OIDCCookie mod_auth_openidc_session

server config, virtual host

Определяет имя для сессионного cookie

OIDCSessionCookieChunkSize <bytes>

OIDCSessionCookieChunkSize 4000

server config, virtual host

Задает размер чанка для сессии cookie OIDC. При использовании OIDCSessionType client-cookie сессионные cookie могут стать довольно большими, если необходимо хранить много данных сессии. Обычно размер зависит от scopes запрашиваемой информации. Чтобы обойти ограничения по размеру cookie для большинства веб-браузеров (обычно 4096 байт), client-cookie будет разбит на несколько чанков cookie, если результирующие данные сессии превышают определенное количество байт. Если необходимо предотвратить разбиение сессионного cookie независимо от его размера, установите значение в 0

OIDCCookieHTTPOnly [On|Off]

OIDCCookieHTTPOnly On

server config, virtual host

Определяет, будет ли установлен флаг HttpOnly для cookie

OIDCCookieSameSite [On | Off | Strict | Lax | None | Disabled]

OIDCCookieSameSite On

server config, virtual host

Определяет флаг SameSite, который будет установлен для cookie. При установке в On (по умолчанию) или Lax будут применяться правила: session cookie: Lax, state cookie: Lax, x_csrf discovery: Lax. При установке в Strict: session cookie: Strict (first time: Lax), state cookie: Lax, x_csrf discovery: Strict. При установке в Off или None: session cookie: None, state cookie: None, x_csrf discovery: None. При установке в Disabled флаг SameSite не будет добавлен. Конфигурированный флаг SameSite в заголовках ответа Set-Cookie может быть условно переопределен с помощью переменной окружения в конфигурации веб-сервера

OIDCPassCookies [<cookie_name>]+

Нет

server config, virtual host

Указывает имена cookie, которые необходимо извлечь из браузера и отправить вместе с обратными вызовами к эндпойнтам OP и AS. Это может быть использовано для целей балансировки нагрузки. Если не определено, такие cookie не отправляются

OIDCStripCookies [<cookie_name>]+

Нет

server config, virtual host

Указывает имена cookie, которые необходимо удалить из входящего запроса, чтобы они не передавались целевым приложениям. Это может предотвратить отправку большого набора чанков сессионных cookie на сервер. Если не определено, cookies не удаляются

OIDCStateMaxNumberOfCookies <number> [false|true]

OIDCStateMaxNumberOfCookies 7 false

server config, virtual host

Указывает максимальное количество state cookie, т.е. параллельных ожидающих запросов аутентификации. Установка этого значения в 0 означает неограниченное количество, пока браузер или сервер не откажутся. Второй необязательный булевый параметр указывает, будут ли удалены самые старые state cookie, даже если они все еще действительны. По умолчанию самые старые cookie не будут удалены

OIDCStateCookiePrefix <cookie_prefix>

OIDCStateCookiePrefix mod_auth_openidc_state_

server config, virtual host

Определяет префикс для state cookie

OIDCSessionInactivityTimeout <seconds>

OIDCSessionInactivityTimeout 300

server config, virtual host

Задает интервал в секундах, после которого сессия будет недействительна, если не было взаимодействия

OIDCSessionMaxDuration <seconds>

OIDCSessionMaxDuration 28800

server config, virtual host

Указывает максимальную продолжительность сессии приложения. При установке значения 0 продолжительность сессии будет равна времени истечения ID-токена. Это значение может быть переопределено для каждого OP в конфигурационном файле с помощью ключа session_max_duration

OIDCSessionType server-cache[:persistent] | client-cookie[:persistent | :store_id_token | :persistent:store_id_token ]

OIDCSessionType server-cache

server config, virtual host

Определяет тип хранения сессии OpenID Connect. server-cache — серверное кеширование. client-cookie — использование сессий на стороне браузера, хранящихся в cookie. Суффикс :persistent может быть добавлен для использования постоянного cookie, который сохраняется после перезапуска браузера. Суффикс :store_id_token может быть добавлен к client-cookie для хранения id_token в сессии и использования в качестве id_token_hint в запросе на выход из системы к OP позже

OIDCSessionCacheFallbackToCookie [On|Off]

OIDCSessionCacheFallbackToCookie Off

server config, virtual host

Включает резервное копирование на OIDCSessionType client-cookie, когда установлено OIDCSessionType server-cache и основной механизм кеширования (например, memcache или redis) не работает. Это может повлечь за собой снижение производительности и безопасности, так как nonce и jti не кешируются

OIDCCacheType [shm|memcache|file[|redis]]

OIDCCacheType shm

server config, virtual host

Определяет тип кеша, используемого для временного хранения, который разделяется между процессами/серверами. Поддерживает состояние сессии аутентифицированного пользователя, значения nonce, токены доступа OAuth 2.0 и другие данные

OIDCCacheEncrypt [On|Off]

Off для shm, On для остальных

server config, virtual host

Указывает, следует ли шифровать данные в кеше

OIDCCacheShmMax <number>

OIDCCacheShmMax 10000

server config, virtual host

Задает максимальное количество пар имя/значение, которые могут быть закешированы при использовании OIDCCacheType shm. Если лимит размера кеша будет достигнут, будет перезаписан наиболее «старый» элемент

OIDCCacheShmEntrySizeMax <bytes>

OIDCCacheShmEntrySizeMax 16928

server config, virtual host

Устанавливает максимальный размер одной записи кеша в байтах при использовании OIDCCacheType shm. Минимальный размер — 8736 байт, значение должно быть кратно 8 байтам

OIDCCacheDir /var/cache/httpd/mod_auth_openidc/cache

OIDCCacheDir /tmp

server config, virtual host

Определяет каталог, в котором хранятся файлы кеша при использовании OIDCCacheType file. Должен быть доступен для записи процессу/пользователю веб-сервера

OIDCCacheFileCleanInterval <seconds>

OIDCCacheFileCleanInterval 60

server config, virtual host

Устанавливает интервал очистки файлов кеша в секундах при использовании OIDCCacheType file (срабатывает только при записи)

OIDCMemCacheServers "(<hostname>[:<port>])+"

Нет

server config, virtual host

Указывает серверы Memcache, используемые для кеширования, в виде списка, разделенного пробелами, состоящего из связок <hostname>[:<port>]

OIDCMemCacheConnectionsMin <number>

OIDCMemCacheConnectionsHMax

server config, virtual host

Задает минимальное количество соединений к каждому серверу Memcache на процесс

OIDCMemCacheConnectionsSMax <number>

OIDCMemCacheConnectionsHMax

server config, virtual host

Закрывает все соединения, превышающие лимит, если они были неактивны более чем OIDCMemCacheConnectionsTTL

OIDCMemCacheConnectionsHMax <number>

ThreadsPerChild или ThreadsPerChild - 1 + H2MaxWorkers

server config, virtual host

Устанавливает максимальное количество соединений к каждому серверу Memcache на процесс

OIDCMemCacheConnectionsTTL <seconds>

OIDCMemCacheConnectionsTTL 60

server config, virtual host

Определяет максимальное время в секундах, в течение которого соединение с сервером Memcache может оставаться неактивным перед закрытием. При добавлении постфикса ms тайм-аут может быть установлен также в миллисекундах

OIDCRedisCacheServer <hostname>[:<port>]

Нет

server config, virtual host

Указывает сервер Redis/Valkey, используемый для кеширования, в виде связки <hostname>[:<port>]

OIDCRedisCachePassword <password>

Нет

server config, virtual host

Указывает пароль, который будет использоваться, если сервер Redis/Valkey требует аутентификации

OIDCRedisCacheUsername <username>

Нет

server config, virtual host

Указывает имя пользователя, которое будет использоваться, если сервер Redis/Valkey требует аутентификации. Это может быть использовано только с Redis/Valkey 6 (ACL) или более поздними версиями

OIDCRedisCacheDatabase <number>

OIDCRedisCacheDatabase 0

server config, virtual host

Указывает логическую базу данных для выбора на сервере Redis/Valkey

OIDCRedisCacheConnectTimeout <connect_timeout> [0|<keep_alive_interval>]

OIDCRedisCacheConnectTimeout 5

server config, virtual host

Устанавливает тайм-аут (в секундах) для подключения к серверу Redis/Valkey. Дополнительный параметр может быть указан для установки интервала keepalive (в секундах) для TCP-соединения с сервером Redis/Valkey

OIDCRedisCacheTimeout <seconds>

OIDCRedisCacheTimeout 5

server config, virtual host

Устанавливает тайм-аут ожидания ответа от сервера Redis/Valkey после отправки запроса

OIDCDiscoverURL <discovery_url>

Нет

server config, virtual host

Определяет внешнюю страницу обнаружения OP. Эта страница будет вызвана с параметрами, такими как <discovery_url>?oidc_callback=<callback_url>

OIDCDefaultURL <relative_or_absolute_url>

Нет

server config, virtual host, directory

Указывает URL по умолчанию, который будет использоваться в случае инициализации SSO третьей стороной, если не был предоставлен явный target_link_uri

OIDCDefaultLoggedOutURL <relative_or_absolute_url>

Нет

server config, virtual host, directory

Указывает URL по умолчанию, на который пользователь будет перенаправлен после выхода из системы

OIDCPathScope "<scope(s)_separated_by_spaces_and_enclosed_in_double_quotes>"

Нет

server config, virtual host, directory

Определяет область OpenID Connect, которая запрашивается у OP на основе пути, в дополнение к конфигурированным областям для провайдера

OIDCPathAuthRequestParams <query_encoded_string>

Нет

server config, virtual host, directory

Указывает дополнительные параметры, которые будут отправлены вместе с запросом на авторизацию

OIDCIDTokenIatSlack <seconds>

OIDCIDTokenIatSlack 600

server config, virtual host

Устанавливает допустимый сдвиг (до и после) для проверки временной метки iat (время выдачи) в id_token

OIDCClaimPrefix <prefix>

OIDCClaimPrefix OIDC_CLAIM_

server config, virtual host, directory

Указывает префикс, который будет использоваться при установке заявлений (claims) в HTTP-заголовках/переменных окружения

OIDCClaimDelimiter <char>

OIDCClaimDelimiter ,

server config, virtual host, directory

Определяет разделитель, используемый при установке многозначных заявлений (claims) в HTTP-заголовках/переменных окружения

OIDCRemoteUserClaim <claim_name>[@] [<regular_expression>] [substitution_string]

OIDCRemoteUserClaim sub@

server config, virtual host, directory

Указывает заявление, которое используется при установке переменной REMOTE_USER на защищенных путях OpenID Connect. Если имя заявления заканчивается на @, значение заявления будет дополнено значением iss для уникальности. Вторым (необязатеным) параметром может выступать регулярное выражение, которое будет применено к результирующему значению из первого параметра, и первое совпадение, возвращенное из этого выражения, будет задано как REMOTE_USER. Третий (также необязательный) параметр может содержать строку с числом обратных ссылок

OIDCPassIDTokenAs [claims|payload|serialized]+

OIDCPassIDTokenAs claims

server config, virtual host, directory

Определяет способ передачи содержимого id_token в приложение в соответствии с OIDCPassClaimsAs

OIDCPassUserInfoAs [claims|json[:<name>]|jwt[:<name>]|signed_jwt[:<name>]]+

OIDCPassUserInfoAs claims

server config, virtual host, directory

Определяет способ передачи заявлений, полученных из эндпойнта userinfo, в приложение в соответствии с OIDCPassClaimsAs

OIDCUserInfoClaimsExpr <jq_filter>

Нет

server config, virtual host, directory

Применяет выражение JQ к заявлениям, возвращаемым из эндпойнта userinfo, перед их распространением в соответствии с OIDCPassUserInfoAs claims|json|signed_jwt

OIDCFilterClaimsExpr <jq_filter>

Нет

server config, virtual host, directory

Применяет фильтр JQ к заявлениям как в id_token, так и в заявлениях, возвращаемых из эндпойнта userinfo, перед их сохранением в сессии

OIDCPassClaimsAs [none|headers|environment|both] [latin1|base64url|none]

OIDCPassClaimsAs both, к значениям заголовка/окружения применяется latin1

server config, virtual host, directory

Определяет способ передачи (обработанных) заявлений и токенов в окружение приложения

OIDCAuthNHeader <header_name>

Нет

server config, virtual host, directory

Указывает имя HTTP-заголовка, который будет установлен с именем аутентифицированного пользователя, копируя значение из REMOTE_USER, настроенного в OIDCRemoteUserClaim или OIDCOAuthRemoteUserClaim

OIDCHTTPTimeoutLong <seconds> [<connect_timeout>] [<retries>[:<retry_interval_ms>]]

OIDCHTTPTimeoutLong 30

server config, virtual host

Устанавливает тайм-аут в секундах для длительных HTTP-запросов. Опциональный параметр <connect_timeout> указывает тайм-аут подключения, а <retries> определяет количество попыток повторного запроса в случае ошибок подключения

OIDCHTTPTimeoutShort <seconds> [<connect_timeout>] [<retries>[:<retry_interval_ms>]]

OIDCHTTPTimeoutShort 5

server config, virtual host

Устанавливает тайм-аут в секундах для коротких HTTP-запросов. Опциональный параметр <connect_timeout> указывает тайм-аут подключения, а <retries> определяет количество попыток повторного запроса в случае ошибок подключения

OIDCStateTimeout <seconds>

OIDCStateTimeout 300

server config, virtual host

Устанавливает время жизни в секундах для параметра состояния, то есть интервал, в течение которого запрос на авторизацию и соответствующий ответ должны быть обработаны

OIDCOutgoingProxy [<scheme>://]<host>[:<port>] [<username>:<password>] [basic|digest|negotiate|ntlm|any]

Нет

server config, virtual host

Указывает исходящий прокси для сети

OIDCUnAuthAction [auth|pass|401|407|410] [<expression_to_detect_non_auth_request>]

OIDCUnAuthAction auth

server config, virtual host, directory

Определяет действие, которое будет выполнено при неаутентифицированном запросе

OIDCUnAutzAction [401|403|302|auth] [<argument>]

OIDCUnAutzAction 403

server config, virtual host, directory

Определяет действие, которое будет выполнено при несанкционированном запросе. Возможные значения: 401 (HTTP 401 Unauthorized), 403 (HTTP 403 Forbidden), 302 (перенаправление на указанный URL), auth (перенаправление на страницу аутентификации). Работает только с одной директивой Require или RequireAll. По умолчанию используется 403, но изменится на 401, если не установить AuthzSendForbiddenOnFailure on

OIDCPreservePost [On|Off]

OIDCPreservePost Off

server config, virtual host, directory

Указывает, будут ли сохранены POST-данные между запросами аутентификации. Это предотвращает потерю данных при истечении времени сессии

OIDCPreservePostTemplates <preserve_template_filepath> <restore_template_filepath>

Внутренние шаблоны

server config, virtual host, directory

Задает шаблоны для сохранения и восстановления POST-данных. Шаблон <preserve> должен содержать два %s, а <restore> — одно %s

OIDCPassAccessToken [On|Off]

OIDCPassAccessToken On

server config, virtual host, directory

Указывает, будут ли токен доступа и его срок действия передаваться приложению в заголовке/переменной окружения

OIDCPassRefreshToken [On|Off]

OIDCPassRefreshToken Off

server config, virtual host, directory

Указывает, будет ли токен обновления передаваться приложению в заголовке/переменной окружения

OIDCRequestObject <stringified_and_double_quote_escaped_JSON_object>

Нет

server config, virtual host

Содержит настройки объекта/URI-запроса, выраженные в виде строки, представляющей собой JSON-объект, экранированный двойными кавычками. Позволяет настраивать параметры, такие как copy_from_request, static, ttl, crypto, url и request_object_type. Это можно переопределить на уровне каждого OP в конфигурационном файле

OIDCProviderMetadataRefreshInterval <seconds>

OIDCProviderMetadataRefreshInterval 0

server config, virtual host

Задает интервал обновления метаданных провайдера в настройках с несколькими провайдерами (с OIDCMetadataDir). По умолчанию метаданные никогда не обновляются. В настройках с одним провайдером с OIDCProviderMetadataURL 0 означает по умолчанию 1 день

OIDCInfoHook [iat|access_token|access_token_expires|id_token|id_token_hint|userinfo|refresh_token|exp|timeout|remote_user|session]+

Нет

server config, virtual host, directory

Определяет данные, которые будут возвращены при вызове хука информации. Данные могут быть в формате JSON или HTML. При отсутствии определения хук сессии не вернет никаких данных, кроме HTTP 404

OIDCMetricsData [ authtype | authn | authz | require.claim | claim.id_token.* | claim.userinfo.* | requests | session | cache | redirect_uri | content ]+

Нет

server config, virtual host

Указывает метрики, которые необходимо собирать и хранить в общей памяти для последующего извлечения. При отсутствии определения метрики не будут записываться

OIDCMetricsPublish <path>

Нет

server config, virtual host

Указывает путь, по которому метрики публикуются и могут быть использованы. Формат данных можно указать с помощью параметра format, по умолчанию используется prometheus. При отсутствии определения метрики не будут опубликованы на окружающем виртуальном хосте

OIDCTraceParent off | generate | propagate

OIDCTraceParent off

server config, virtual host

Устанавливает HTTP-заголовок traceparent для исходящих запросов к провайдеру и проксируемым запросам. Возможные значения: propagate (пропагировать существующий заголовок), generate (сгенерировать новый заголовок, возможно, перезаписав существующий). По умолчанию заголовок traceparent не пропагируется и не добавляется (или перезаписывается)

OIDCBlackListedClaims [<claim>]+

Нет

server config, virtual host, directory

Указывает, какие утверждения должны быть удалены из userinfo и/или id_token перед их сохранением в сессии. Директива OIDCBlackListedClaims имеет приоритет над OIDCWhiteListedClaims. При отсутствии определения все утверждения сохраняются, кроме тех, которые указаны в OIDCWhiteListedClaims

OIDCWhiteListedClaims [<claim>]+

Нет

server config, virtual host, directory

Указывает, какие утверждения из userinfo и/или id_token должны быть сохранены в сессии (все остальные будут отброшены). Директива OIDCBlackListedClaims имеет приоритет над OIDCWhiteListedClaims. При отсутствии определения все утверждения сохраняются, кроме тех, которые указаны в OIDCBlackListedClaims

OIDCRefreshAccessTokenBeforeExpiry <seconds> [logout_on_error | authenticate_on_error | 502_on_error]

Нет

server config, virtual host

Указывает минимальное время жизни для токена доступа, хранящегося в OIDC-сессии. Если время истечения токена меньше этого значения, будет предпринята попытка обновить токен доступа с использованием refresh token. При отсутствии определения попытка обновления не будет предпринята. Опциональные флаги logout_on_error и authenticate_on_error управляют поведением при ошибках обновления

OIDCStateInputHeaders [user-agent|x-forwarded-for|both|none]

OIDCStateInputHeaders user-agent

server config, virtual host

Определяет, какие заголовки будут использоваться в качестве входных данных state для вычисления отпечатка браузера во время аутентификации

OIDCRedirectURLsAllowed [<regexp>]+

Нет

server config, virtual host

Определяет одно или несколько регулярных выражений, которые указывают разрешенные URL (или домены) для перенаправлений после выхода и других перенаправлений. При отсутствии определения по умолчанию проверяется соответствие имени хоста в URL перенаправления имени хоста в текущем запросе

OIDCLogoutXFrameOptions <value>

OIDCLogoutXFrameOptions DENY

server config, virtual host

Определяет значение заголовка X-Frame-Options, возвращаемого при запросах на выход из OIDC

OIDCXForwardedHeaders <header>+

Нет

server config, virtual host

Определяет заголовки X-Forwarded-* или Forwarded, которые будут считаться установленными обратным прокси перед mod_auth_openidc. При отсутствии определения или значении none такие заголовки будут игнорироваться