適切なユーザー コンテキストで実行されるように、IIS 上の Django Web サイトからバックエンド SQL サーバーに資格情報 (統合 Windows 認証) を渡す必要があります。
これまでの私のセットアップはこんな感じです:
sql_sever.domain.com
サービスアカウントでSQL Serverを実行するdomain\svc_sqlserver
- Windows認証とASP.Net偽装(プロバイダーは に設定)を使用した
app_server.domain.com
サービスアカウントでIISを使用してDjango Webサイトを実行するdomain\svc_appserver
Negotiate:Kerberos -> Negotiate -> NTLM
useAppPoolCredentials=True
Trusted_Connection=yes
接続時にWindows認証を使用してDjangoからSQLサーバーに接続する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
両方を信頼し
svc_sqlserver
、サービスsvc_appserver
への委任を行い、さらにサービスも追加しました(上記のリストから)MSSQLSvc
domain\svc_appserver
HTTP
結果:
- Kerberos認証はSQL Serverで動作します。接続ユーザーの認証スキーム
- Kerberos 認証は Django ウェブサイトで動作します。
WWW-Authenticate
レスポンス ヘッダーとAuthorization
リクエスト ヘッダーを検査して確認しました (Negotiate
正しく使用されています) domain\svc_appserver
SQL Serverは、実行されるべきコンテキストでのみ実行されます。domain\remote_user
私はこれに 1 週間以上取り組んできましたが、認証されたユーザーのコンテキストを IIS から SQL Server に渡す方法がどうしてもわかりません。オンラインで見つけた何百ものリンクを調べましたが、現時点で何をすべきかわかりません。
他に何か見落としている点はありますか? Django でデータベースへの接続を確立する前にユーザーのコンテキストを設定する方法はありますか? どなたか助けていただけると本当に助かります。ありがとうございます!
私は使用しています:
- ジャンゴ 2.0.7
- django-pyodbc-azure
- Python 3.6.5
- IIS 10、SQL Server 2014