web-dev-qa-db-ja.com

クライアントによってプロアクティブに提供された場合にのみ、さまざまなタイプのApache認証プロバイダーを基本認証と組み合わせます

インタラクティブな使用のために主にSAML(mod_auth_mellonプラグインを使用)を使用して認証するApacheサーバー(ub16では2.4.18+)にパスを設定できるようにしたいのですが、呼び出し元が基本認証をプリエンプティブに送信することもサポートしています資格情報。 (通常はインタラクティブフォームログインをトリガーするREST apiエンドポイントですが、基本認証資格情報を事前に送信するとバイパスが許可されます。)

基本的に私はこの振る舞いを探しています:

  • クレジットがリクエストとともに送信される場合:
    • それらを試してみて、それらが機能する場合は、リクエストを許可してください
  • 上記のクレジットが失敗した場合、または何も提供されなかった場合
    • 優先認証プラグインをトリガーします。

そのようなことは可能ですか?これをアプリケーション自体にプッシュバックしたくないのですが。

私が起こしたくないのは、Apacheサーバーが基本認証ダイアログをトリガーする応答を送り返すことです。

2

私自身の質問に答える....これについてもう少し掘り下げて、うまくいくように見える次のものを思いついた:

<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>

誰かがこのアプローチに何か問題があると思いますか?

2