문제

누군가 ASP.NET> Kerberos> SQL Server를 활성화 할 수있는 간단하고 간단한 방법을 제공 할 수 있습니까?

ClientMachine> WebServer> DatabaseServer가 있습니다. 클라이언트는 사이트가 Windows 로그인을 끌어 당기고 신속하지 않아야한다고 주장하므로 Kerberos 및 통합 인증이 필요합니다. 또한 DB 서버에 사용자를 가장하여 더블 홉을 유도해야합니다.

우리의 도메인은 Windows 2003 도메인으로, 온라인으로 알 수있는 한 Kerberos가 활성화되어 있음을 의미합니다. 그리고 도메인 조정 컴퓨터에서 로그인했을 때 Kerbtray는 수많은 티켓이 있다는 것을 보여 주므로 분명히 작동하고 있습니다.

AD의 웹 및 데이터베이스 서버 컴퓨터 계정은 "대표단을 위해 신뢰할 수 있습니다".
시스템에 액세스 해야하는 광고 사용자 계정은 둘 다 "대표단을 신뢰합니다".
모든 것이 작동하면 더 많은 사용자를 추가 할 것입니다. 지금은 두 가지입니다.

SQL Server 인스턴스는 데이터베이스 서버의 LocalSystem에서 실행 중입니다. 이는 온라인에서 알 수있는 한 SPN을 전혀 엉망으로 만들 필요가 없음을 의미합니다.

그러나 어느 사용자와 함께 로그인하려고 할 때, 나는

Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

이중 홉 실패를 나타냅니다. 이는 DB 서버의 응용 프로그램 로그에는 "MSSQL"의 수많은 항목이 같은 것을 말합니다.

나는 이것이 얼마나 힘든지 믿을 수 없다 ... IIS, SQL 및 Windows는 모두 Microsoft입니다. 더 잘 말할 수 없습니까 ???

요약하면, 나는 가지고 있습니다

  • Kerberos 도메인,
  • DB와 웹 서버는 모두 대표단을 신뢰했습니다
  • 대표단을 신뢰하는 사용자
  • 광고 그룹의 사용자
  • SQL 로그인으로 광고 그룹 (및 DB의 사용자)
  • 익명의 꺼짐, 통합, 기본 및 다이제스트가 포함 된 IIS
  • 즉, 활성화 된 통합

도움이 되었습니까?

해결책 2

대답은 궁극적으로 SPNS에 있습니다.

이 시스템은 테스트 사이트 (Test.ourCompany.com)에 설정되었으므로 해당 참조를 위해 새 SPN을 추가해야했습니다. 따라서 다음 외에 :

HTTP/server 
HTTP/server.ourdomain.com

또한 추가를 추가해야했습니다.

HTTP/test.ourcompany.com

이런, 정말 전투! 적어도 끝났어! :)
도움을 주셔서 감사합니다!

다른 팁

다운로드 Kerberos 대표단 문제 해결. 생명 보호기입니다.
17 페이지에서는 찾을 수 있습니다 Active Directory Checklist. 체크리스트를 단계별로 따르십시오.
30 페이지에서는 찾을 수 있습니다 클라이언트 애플리케이션 점검표. 체크리스트를 단계별로 확인하십시오.
35 페이지에는 중간 계층 점검표. 단계별로 확인하십시오.
48 페이지에는 백엔드 점검표. 단계별로 확인하십시오.

여전히 문제가있는 경우이 문서에는 세부 문제 해결 도구 목록 (Kerbtray, Klist, LDIFDE 등), 시스템 이벤트 로그에서 인증 오류의 로깅 및 감사를 활성화하는 방법에 대한 자세한 설명, 모든 오류 코드의 자세한 설명에 대한 자세한 설명 인증 감사 등의 이벤트 로그 항목.

당신이 알아 내면 무엇 잘못된 것은 수정하기가 훨씬 쉽습니다.

당신이 설명하는 것은 문제없이 작동해야합니다.

연결 문자열은 다음과 같습니다.

<add name="IntegratedAuthConnectionString" connectionString=
 "Data Source=DATABASEINSTANCE;Integrated Security=True"
 providerName="System.Data.SqlClient"/>

Web.config는 또한 Windows 인증을 지정해야합니다

<authentication mode="Windows"/>

request.servariables 수집에서 모든 것을 덤프하는 테스트 페이지를 작성하고 인증 된 사용자 이름과 도메인을보고 있는지 확인하십시오. 아래 코드의 줄을 따라 무언가

foreach (string s in Request.ServerVariables)
{
    Response.Write(s + ": " + Request.ServerVariables[s] + "<br />");
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top