적절한 사용자 컨텍스트에서 실행되도록 IIS의 django 웹 사이트에서 백엔드 SQL 서버로 자격 증명(Windows 통합 인증)을 전달해야 합니다.
이것이 내 설정이 지금까지 보이는 방식입니다.:
sql_sever.domain.com
서비스 계정으로 SQL Server 실행domain\svc_sqlserver
- Windows 인증 및 ASP.Net 가장(공급자가 로 설정됨 ) 이 포함된
app_server.domain.com
서비스 계정에서 IIS를 사용하여 Django 웹 사이트를 실행합니다.domain\svc_appserver
Negotiate:Kerberos -> Negotiate -> NTLM
useAppPoolCredentials=True
Trusted_Connection=yes
연결 설정을 통해 Windows 인증을 사용하여 django에서 SQL 서버에 연결domain\svc_sqlserver
다음 과 같이 Kerberos 인증을 위해 구성된 SPNdomain\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 서버는 실행되어야 하는 컨텍스트에서만 실행됩니다.domain\remote_user
나는 일주일 넘게 이 작업을 해왔지만 평생 동안 인증된 사용자의 컨텍스트를 IIS에서 SQL Server로 전달하는 방법을 알 수 없습니다. 온라인에서 찾은 수백 개의 링크를 살펴보았는데 이 시점에서 무엇을 해야 할지 모르겠습니다.
내가 놓친 다른 것이 있습니까? 데이터베이스에 연결하기 전에 Django에서 사용자 컨텍스트를 설정하는 방법이 있나요? 누구든지 도움을 주시면 정말 감사하겠습니다. 감사해요!
나는 사용하고있다:
- 장고 2.0.7
- django-pyodbc-azure
- 파이썬 3.6.5
- IIS 10, SQL 서버 2014