Apache-2.4

僅當客戶端主動提供時,才將不同類型的 apache 身份驗證提供程序與基本身份驗證相結合

  • November 21, 2017

我希望能夠在 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>

有人認為這種方法有什麼問題嗎?

引用自:https://serverfault.com/questions/884484