
我們的 Apache 同時使用 mod_shib_24 (SAML-SP) 和 mod_auth_openidc (OIDC-RP),它們都連接到 Shibboleth IdP(充當 SAML-IDP 和 OIDC-OP)。
此外,我們還有 2 個受保護位置,一個受 SAML 保護,另一個受 OIDC 保護:
ShibCompatValidUser On
<Location "/">
Require shib-session
AuthType Shibboleth
ShibRequestSetting requireSession 1
ShibUseHeaders On
</Location>
<Location "/oidctest">
Require valid-user
AuthType openid-connect
</Location>
現在是令人困惑的部分:
如果我訪問/oidctest/ 以外的任何內容,我必須使用SAML 登入(如預期的那樣,mod_shib_24 會參與其中),但在成功進行身份驗證後,我也可以訪問/oidctest/,而無需使用OIDC 進行身份驗證。
反之亦然。如果我先訪問/oidctest/ (新的私有視窗),我必須使用OIDC 進行身份驗證(如預期的那樣,mod_auth_openidc 參與其中),並且在成功身份驗證後,我還可以訪問所有其他位置(/oidctest/除外)。
那麼 Apache 如何處理有效使用者指令呢? Apache 中如何定義「有效使用者」?
使用者登入後是否對所有內容都有效,無論身份驗證類型、模組、協定為何?
或者這是一個意想不到的行為?
答案1
我從 Shibboleth wiki 中了解到ShibCompatValidUser 開啟設定明確旨在相容需要有效用戶聲明。
在 V2.5.2 之前,當 ShibCompatValidUser 為 Off(預設)時,這相當於上面的 shib-session 規則。當啟用 ShibCompatValidUser 選項時,此規則的實作與 Apache 本身實作的規則相容,並且需要為請求設定非空 REMOTE_USER 值。這將恢復部署 Shibboleth 以及其他模組和規則的能力。 SP 的未來版本可能會刪除「特殊」定義,並且應更改此類規則以依賴 shib-session。
看https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPhtaccess
為了區分模組,您也可以使用測試需要環境尋找模組設定的環境變數。 Shibboleth 預設設定一個Shib-會話-ID例如。
看https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAttributeAccess