IIS から SQL サーバーへの Kerberos ダブル ホップ委任 (django を使用)

IIS から SQL サーバーへの Kerberos ダブル ホップ委任 (django を使用)

適切なユーザー コンテキストで実行されるように、IIS 上の Django Web サイトからバックエンド SQL サーバーに資格情報 (統合 Windows 認証) を渡す必要があります。

これまでの私のセットアップはこんな感じです:

  1. sql_sever.domain.comサービスアカウントでSQL Serverを実行するdomain\svc_sqlserver
  2. Windows認証とASP.Net偽装(プロバイダーは に設定)を使用したapp_server.domain.comサービスアカウントでIISを使用してDjango Webサイトを実行するdomain\svc_appserverNegotiate:Kerberos -> Negotiate -> NTLMuseAppPoolCredentials=True
  3. Trusted_Connection=yes接続時にWindows認証を使用してDjangoからSQLサーバーに接続する
  4. domain\svc_sqlserverとの両方に対して Kerberos 認証の SPN をdomain\svc_appserver次のように構成しました。

    setspn -a HTTP/app_server                          domain\svc_appserver
    setspn -a HTTP/app_server.domain.com               domain\svc_appserver
    setspn -a MSSQLSvc/sql_server.domain.com:PORT      domain\svc_sqlserver
    setspn -a MSSQLSvc/sql_server.domain.com:INSTANCE  domain\svc_sqlserver
    setspn -a MSSQLSvc/sql_server.domain.com           domain\svc_sqlserver
    
  5. 両方を信頼しsvc_sqlserver、サービスsvc_appserverへの委任を行い、さらにサービスも追加しました(上記のリストから)MSSQLSvcdomain\svc_appserverHTTP

結果:

  1. Kerberos認証はSQL Serverで動作します。接続ユーザーの認証スキーム
  2. Kerberos 認証は Django ウェブサイトで動作します。WWW-Authenticateレスポンス ヘッダーとAuthorizationリクエスト ヘッダーを検査して確認しました (Negotiate正しく使用されています)
  3. domain\svc_appserverSQL Serverは、実行されるべきコンテキストでのみ実行されます。domain\remote_user

私はこれに 1 週​​間以上取り組んできましたが、認証されたユーザーのコンテキストを IIS から SQL Server に渡す方法がどうしてもわかりません。オンラインで見つけた何百ものリンクを調べましたが、現時点で何をすべきかわかりません。

他に何か見落としている点はありますか? Django でデータベースへの接続を確立する前にユーザーのコンテキストを設定する方法はありますか? どなたか助けていただけると本当に助かります。ありがとうございます!

私は使用しています:

関連情報