
当社の Apache は mod_shib_24 (SAML-SP) と mod_auth_openidc (OIDC-RP) の両方を使用しており、どちらも Shibboleth IdP (SAML-IDP と OIDC-OP の両方として機能) に接続されています。
さらに、保護された場所が 2 つあり、1 つは SAML で保護され、もう 1 つは 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 が関与します)。ただし、認証が成功すると、OIDC で認証しなくても /oidctest/ にアクセスできるようになります。
これは逆の場合にも機能します。最初に /oidctest/ (新しいプライベート ウィンドウ) にアクセスする場合、OIDC を使用して認証する必要があります (予想どおり、mod_auth_openidc が関与します)。認証が成功すると、他のすべての場所 (/oidctest/ 以外) にもアクセスできるようになります。
では、Apache は valid-user ディレクティブをどのように処理するのでしょうか? Apache では「valid-user」はどのように定義されるのでしょうか?
認証タイプ、モジュール、プロトコルに関係なく、ユーザーは一度ログインするとすべてに対して有効になりますか?
それとも、これは予期しない動作でしょうか?
答え1
Shibboleth wikiから私が理解しているのは、ShibCompatValidUser オン設定は、有効なユーザーを必要とする声明。
V2.5.2 より前で、ShibCompatValidUser が Off (デフォルト) の場合、これは上記の shib-session ルールと同等です。ShibCompatValidUser オプションが有効になっている場合、このルールは Apache 自体によって実装されたルールと互換性を持って実装され、リクエストに null 以外の REMOTE_USER 値が設定されている必要があります。これにより、Shibboleth を他のモジュールやルールとともに展開する機能が復元されます。SP の将来のバージョンでは「特別な」定義が削除される可能性があり、そのようなルールは shib-session に依存するように変更する必要があります。
見るhttps://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPhtaccess
モジュールを区別するために、次のようなテストを使用することもできます。env が必要モジュールによって設定された環境変数を検索します。ShibbolethはデフォルトでShibセッションID例えば。
見るhttps://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAttributeAccess