4

現在、複数の Windows デスクトップ アプリケーションを 1 つの Web サイトに移植する作業を行っています。

現在のセットアップには、Windows 認証 (SSPI) のみで構成された複数の SQL サーバー バックエンド データベースが含まれており、すべてのユーザー/グループ/ロールは特定のオブジェクトに対する特定の権限を持っています。アプリケーション層はアクセス制御を実装する必要がないため、これは便利です。

Windowsマシン上のApacheであるWebサーバーと同じ方法を維持したいと思います。しかし、データベースへのすべての接続は、Apache のアカウントを使用して行われています。これは当然のことであり、当然のことです。実際、Apache は意図的にパブリック データへのアクセスを許可され、パブリック コンテンツを配信できるようになっています。

しかし、ドメイン ユーザーがログインする場合 (ログイン プロセスは既に実装されています)、リクエストを処理する Apache プロセスがそのユーザーになりすまして、リクエスト全体でユーザーとして機能するようにしたいと思います。

最初に、 IIS を Web サーバーとして使用して、php のfastcgi.impersonateトリックを試しました。しかし、主に (1) いずれにせよ Apache に移植する必要があり、(2) それは php 固有であり、Web サーバー全体をターゲットにする必要があることが判明したため、最終的にはそれをあきらめました...

そこで、検索を Apache モジュールにリダイレクトしました。mod_auth_sspiなどを除いて、何ヶ月にもわたる調査の結果は得られませんでした。これは明らかに私が探しているものではありません (認証と偽装は 2 つの異なるものです)。

最後に、独自のモジュールを作成することにしました。私が見つけた "101" の例のほとんどは C で書かれていますが、Lazarus/FPCで 2-3 の例を見つけることができました。

.dll プロジェクトをビルドする必要があることはわかっています。使用するユニットを (多かれ少なかれ) 知っており、ツールボックスに含まれている必要がある機能も知ってLogonUser()ImpersonateLoggedOnUser()ます。

誰かが似たようなことをしましたか?誰かが私を正しい方向に向けることができますか?

単純な概念実証であっても、例を示していただければ幸いです。この質問は、最終的で決定的な解決策を求めるものではありません。

4

1 に答える 1