Apache-2.4
僅當客戶端主動提供時,才將不同類型的 apache 身份驗證提供程序與基本身份驗證相結合
我希望能夠在 apache 伺服器(ub16 上的 2.4.18+)上有一個路徑,該路徑主要使用 SAML(使用 mod_auth_mellon 外掛)進行身份驗證以進行互動使用,但也支持讓呼叫者先發製人地發送 Basic auth證書。(想想通常觸發互動式表單登錄的 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>
有人認為這種方法有什麼問題嗎?