Назад | Перейти на главную страницу

Комбинируйте поставщиков аутентификации apache разных типов с базовой аутентификацией, только если это заранее предоставляется клиентом

Я хотел бы иметь возможность иметь путь на сервере apache (2.4.18+ на ub16), который в первую очередь аутентифицируется с использованием SAML (с использованием плагина mod_auth_mellon) для интерактивного использования, но также поддерживает предварительную отправку вызывающей стороной базовой аутентификации учетные данные. (Подумайте о конечной точке REST api, которая обычно запускает интерактивную форму входа в систему, но позволит обойти, если вы предварительно отправите базовые учетные данные для аутентификации.)

По сути, я ищу такое поведение:

Возможно ли такое? Я бы предпочел НЕ вставлять это обратно в само приложение.

Я НЕ хочу, чтобы сервер apache отправлял ответ, запускающий базовый диалог аутентификации.

Отвечая на мой собственный вопрос .... покопался в этом еще немного и придумал следующее, которое, похоже, работает:

<Location />
<If "-n req('Authorization')">
    AuthName "Active Directory"
    AuthBasicProvider ldap
    AuthType basic
    AuthLDAPMaxSubGroupDepth 0
    AuthLDAPBindAuthoritative off
    AuthLDAPRemoteUserAttribute sAMAccountName
    AuthLDAPInitialBindPattern (.+) $1@yyyyy
    AuthLDAPInitialBindAsUser on
    AuthLDAPSearchAsUser on
    AuthLDAPCompareAsUser on
    AuthLDAPUrl "ldaps://xxx,dc=com?sAMAccountName,memberOf?sub"
    LDAPReferrals Off

    require valid-user
</If>
<Else>
    Require valid-user
    AuthType "Mellon"
    MellonEnable "auth"
    MellonVariable "cookie"
    MellonEndpointPath "/sso"
    MellonDefaultLoginPath "/"
    MellonSubjectConfirmationDataAddressCheck Off
    MellonSessionLength 86400
    MellonSPPrivateKeyFile /...../sp-private-key.pem
    MellonIdPMetadataFile /...../idp-metadata.xml
    MellonDoNotVerifyLogoutSignature https://........
</Else>
</Location>

Кто-нибудь видит что-то плохое в этом подходе?