UFO ET IT

SQL Server에서 " 'NT AUTHORITY \ ANONYMOUS LOGON'사용자에 대한 로그인 실패"오류를 반환합니다.

ufoet 2020. 11. 28. 13:18
반응형

SQL Server에서 " 'NT AUTHORITY \ ANONYMOUS LOGON'사용자에 대한 로그인 실패"오류를 반환합니다. Windows 응용 프로그램에서


문제없이 작동하는 애플리케이션 (약 6 개월 정도 동안 개발이 활발하지 않음)은 최근 데이터베이스에 연결하지 못하기 시작했습니다. 운영 관리자는 문제를 일으킬 수있는 변경 사항을 말할 수 없습니다.

클라이언트 응용 프로그램은 Integrated Security = True로 하드 코딩 된 연결 문자열을 사용하지만 응용 프로그램이 데이터베이스에 대한 연결을 만들려고하면 " 'NT AUTHORITY \ ANONYMOUS LOGON"사용자에 대한 로그인 실패 "라는 SQLException이 발생합니다.

이 계정으로 Management Studio를 통해 문제없이 데이터베이스에 로그온 할 수 있습니다. 이 문제에 대해 내가 본 모든 것은 ASP.NET 프로젝트에 대한 것이며 클라이언트 응용 프로그램이 문제가되지 않는 것이 더 낫다는 것은 분명히 "이중 홉 문제"입니다. 어떤 도움이라도 대단히 감사하겠습니다.

편집하다

클라이언트 시스템과 서버 시스템 및 사용자 계정이 동일한 도메인에 있습니다. 이것은 Windows 방화벽이 꺼져있을 때 발생합니다.

주요 이론은 다음과 같습니다. 약 1 주일 전에 서버를 다시 시작했으며 SPN (서비스 사용자 이름)을 등록하지 못했습니다. SPN을 등록하지 못하면 통합 인증이 Kerberos 대신 NTLM으로 대체 될 수 있습니다.


연결된 서버에 문제가있는 경우 몇 가지 사항을 살펴 봐야합니다.

첫째, 사용자는 위임을 활성화해야하며 변경된 유일한 사항이 있다면 그렇게 할 가능성이 높습니다. 그렇지 않으면 AD의 사용자 속성 인 "계정이 민감하고 위임 할 수 없음"확인란을 선택 취소 할 수 있습니다.

둘째, 위임을 위해 서비스 계정을 신뢰해야합니다. 서비스 계정을 다시 변경했기 때문에 이것이 범인이라고 생각합니다. ( http://technet.microsoft.com/en-us/library/cc739474(v=ws.10).aspx )

SPN 문제가있을 수 있으므로 두 끝점 모두에 대해 SPN을 설정해야한다고 언급하셨습니다. 그렇지 않으면 AD에서 위임 탭을 볼 수 없습니다. 또한 "Active Directory 사용자 및 컴퓨터"에서 고급보기에 있는지 확인하십시오.

SPN을 수정 한 후에도 여전히 위임 탭이 표시되지 않으면 도메인이 2000 모드가 아닌지 확인하십시오. 그렇다면 "도메인 기능 수준을 올릴"수 있습니다.

이제 계정을 위 임용으로 신뢰할 수 있음으로 표시 할 수 있습니다.

세부 정보 창에서 위 임용으로 신뢰할 사용자를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다.

위임 탭을 클릭하고 위 임용으로 계정을 신뢰할 수 있음 확인란을 선택한 다음 확인을 클릭합니다.

마지막으로 모든 시스템을 위 임용으로 신뢰할 수 있도록 설정해야합니다.

이 작업을 마치면 SQL 서버에 다시 연결하고 좋아하는 서버를 테스트합니다. 작동해야합니다.


우선 : 내 문제는 당신의 문제와 똑같지는 않지만이 게시물은 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'내가이 글을 썼을 때 오류로 인해 구글에서 가장 먼저 나온 것입니다 . 이 솔루션은 온라인에서이 특정 솔루션을 찾지 못했기 때문에이 오류를 검색하는 사람들에게 유용 할 수 있습니다.

필자의 경우 Xampp / Apache 및 PHP sqlsrv를 사용하여 Windows 인증을 사용하여 MSSQL 데이터베이스에 연결을 시도했는데 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'설명하신 오류를 받았습니다 . 마침내 문제가 내가 로그인 한 사용자 계정 대신 "LOCAL SERVICE"사용자로 실행되는 Apache 서비스 자체라는 것을 발견했습니다. 즉, 말 그대로 익명 계정을 사용하고있었습니다. 해결책은 services.msc로 이동하여 Apache 서비스를 마우스 오른쪽 단추로 클릭하고 속성으로 이동 한 다음 로그온 탭으로 이동하여 사용자의 자격 증명을 입력하는 것이 었습니다. 이것은 SPN이 도메인의 특정 사용자로부터 실행되도록 설정되어 있으므로 SPN과 관련된 문제와 일치합니다. 따라서 올바른 SPN이 실행되고 있지 않으면 Windows 인증은 기본적으로 잘못된 사용자 (예 : "로컬 서비스"사용자)로 설정되고 익명 오류가 발생합니다.

여기에 문제와 다른 부분이 있습니다. 로컬 네트워크의 컴퓨터는 도메인에 없으며 작업 그룹에만 있습니다. 작업 그룹에서 Windows 인증을 사용하려면 서버가있는 컴퓨터 (제 경우에는 MSSQL Server)와 데이터를 요청하는 서비스가있는 컴퓨터 (제 경우에는 Apache) 모두 동일한 이름과 동일한 암호를 가진 사용자가 있어야합니다.

요약하면 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'두 경우 모두 오류는 서비스가 실행되지 않거나 올바른 사용자가 아닌 경우에 발생하는 것으로 보입니다. 올바른 SPN 또는 기타 서비스가 실행되고 있고 올바른 사용자가 문제의 익명 부분을 해결해야합니다.


데이터베이스에 대해 인증하는 데 사용되는 AD 그룹에 약간의 변경이 있었을 것 같습니다. 데이터베이스에 대한 액세스 권한이있는 AD 그룹에 웹 서버 이름을 domain \ webservername $ 형식으로 추가합니다. 또한 web.config 속성을 "false"로 설정해보십시오. 도움이 되었기를 바랍니다.

편집 : 편집 한 내용에 따라 .. 아마도 SQL Server의 인증 프로토콜이 Kerberos (Windows 통합 인증을 사용하는 경우 기본값)에서 NTLM으로 대체되었음을 나타냅니다. Kerberos를 사용하려면 SPN (서비스 사용자 이름)을 Active Directory 디렉터리 서비스에 등록해야합니다. SPN (서비스 사용자 이름)은 서버에서 실행되는 서비스의 고유 식별자입니다. Kerberos 인증을 사용할 각 서비스에는 클라이언트가 네트워크에서 서비스를 식별 할 수 있도록 SPN이 설정되어 있어야합니다. 컴퓨터 계정 또는 사용자 계정으로 Active Directory에 등록됩니다. Kerberos 프로토콜이 기본값이지만 기본값이 실패하면 NTLM을 사용하여 인증 프로세스가 시도됩니다.

귀하의 시나리오에서 클라이언트는 tcp 연결을 만들어야하며 LocalSystem 계정으로 실행 중일 가능성이 높으며 SQL 인스턴스에 등록 된 SPN이 없으므로 NTLM이 사용되지만 LocalSystem 계정은 실제 사용자 대신 시스템 컨텍스트에서 상속됩니다. 기반 컨텍스트는 'ANONYMOUS LOGON'으로 실패했습니다.

이 문제를 해결하려면 SQL Server가 도메인 사용자 계정으로 실행되는 경우 도메인 관리자에게 SPN을 수동으로 등록하도록 요청하십시오. 다음 링크가 더 도움이 될 수 있습니다.
http://blogs.msdn.com/b/sql_protocols/archive/2005/10/12/479871.aspx
http://support.microsoft.com/kb/909801


연결 문자열에 사용자 이름과 암호를 제공하고 Integrated Security = false로 설정하면됩니다.


내 SQL 작업 중 하나에 동일한 문제가 있습니다. 한 서버에서 다른 서버로 데이터를 업로드하는 것이 포함되었습니다. SQL Server 에이전트 서비스 계정을 사용했기 때문에 오류가 발생했습니다. 모든 서버에 공통적 인 UserId (Windows 인증 사용)를 사용하여 자격 증명을 만들었습니다. 그런 다음이 자격 증명을 사용하여 프록시를 생성했습니다. SQL 서버 작업에서 프록시를 사용했으며 정상적으로 실행 중입니다.


연결 문자열에서 "Integrated Security = False"를 설정해보십시오.

<add name="YourContext" connectionString="Data Source=<IPAddressOfDBServer>;Initial Catalog=<DBName>;USER ID=<youruserid>;Password=<yourpassword>;Integrated Security=False;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>

FWIW, 우리의 경우 IIS에서 실행되는 (PHP) 웹 사이트는 데이터베이스에 연결을 시도 할 때이 메시지를 표시했습니다.

해결 방법은 해당 웹 사이트에서 익명 인증을 편집하여 응용 프로그램 풀 ID를 사용하는 것이 었습니다 (그리고 해당 웹 사이트 용으로 설계된 서비스 계정을 사용하도록 응용 프로그램 풀 항목을 설정했습니다).

참고 URL : https://stackoverflow.com/questions/12462674/sql-server-returns-error-login-failed-for-user-nt-authority-anonymous-logon

반응형