ログインプロンプトなしで、認証されていないユーザーから URL を保護しますか?

ログインプロンプトなしで、認証されていないユーザーから URL を保護しますか?

ユーザー認証プロセスが組み込まれていない Web アプリケーション (Kibana ダッシュボード) を保護しようとしています。この Web アプリケーションを保護して、WordPress サイトにログインしているユーザーだけが、再認証を求めることなく Web アプリケーション URL を開くことができるようにしたいと考えています。

環境:

Centos 7 上の Apache 2.4

私は自分がよく知っているすべての分野を徹底的に調べました。認証にローカル Perl スクリプトを使用する Apache mod_authnz_external を使用しようとしました。これは私の望みどおりに機能しますが、ログイン プロンプトを回避できず、これが致命的です。

mod_rewrite と rewriteMap を使用して Kibana URL をローカル Perl スクリプトにリダイレクトし、認証を確認しようとしました。これは機能しますが、元の書き換え一致をトリガーせずに、ユーザーをリダイレクトされた URL に戻す方法がわかりません.......

Kibana 用のリバース プロキシをセットアップし、それを使用してアクセスを制御できましたが、Basic Auth ログイン プロンプトをトリガーせずに Apache プロキシを使用してユーザーを認証する方法があるかどうかわかりません。

私は Apache を使用してこの問題を解決したいので、この質問に Apache 2.4 のタグを付けましたが、他のアイデアも検討します。

コメントをよろしくお願いします

答え1

これを実現するには、PHP のちょっとした魔法を使うこともできます。そうすれば、WordPress の認証機能に直接接続でき、WordPress が更新されても最新の状態に保つことができます。

誰かがログインしているかどうかを判断するために必要な関数は、ここに記載されています。https://developer.wordpress.org/reference/functions/is_user_logged_in/

これはテストされていない/機能しないコードなので調整が必要になりますが、要点はここにあります:

    require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');

    if (is_user_logged_in()) {
        $url = $_REQUEST['url'];
        $transformedBackendURL = changeHostnameandStuff($url);
        $content = file_get_contents($url);
        // parse all links and forms actions and redirect back to this script
        $content = preg_replace("/some-smart-regex-here/i", "$1 or $2 smart replaces", $content);
        echo $content;
    } else {
        header('HTTP/1.0 403 Forbidden');
        echo 'You are forbidden!';
    }

答え2

ユーザー名やIPなどを含むURLで暗号化されたキーを送信し、それを復号化してcurlを使用して他のサーバーのユーザー情報を確認することができます。これがあなたに何かアイデアを与えてくれることを願っています

関連情報