programing

SQL Server가 윈도우즈 응용 프로그램에서 "'NT AUTHORITY\ANNIMING LOGON' 사용자에 대해 로그인하지 못했습니다." 오류를 반환

bestprogram 2023. 6. 21. 22:48

SQL Server가 윈도우즈 응용 프로그램에서 "'NT AUTHORITY\ANNIMING LOGON' 사용자에 대해 로그인하지 못했습니다." 오류를 반환

문제 없이 작동하던 애플리케이션(약 6개월 동안 활성 개발이 수행되지 않은 애플리케이션)이 최근 데이터베이스에 연결하지 못했습니다.운영 관리자는 무엇이 변경되어 문제가 발생했는지 말할 수 없습니다.

클라이언트 응용 프로그램은 통합 보안=이 포함된 하드 코딩된 연결 문자열을 사용합니다.true이지만 응용 프로그램이 데이터베이스에 대한 연결을 생성하려고 하면 "사용자 'NT AUTHORITY\Anonymous LOGON에 대해 로그인하지 못했습니다."라는 SQL 예외가 발생합니다.

저는 이 계정으로 Management Studio를 통해 데이터베이스에 문제없이 로그인할 수 있습니다.이 문제에 대해 제가 본 모든 것은 ASP.NET 프로젝트를 위한 것이며, 클라이언트 애플리케이션이 문제가 되지 않는 것이 더 낫다는 것이 명백한 "더블 홉 문제"입니다.어떤 도움이라도 주시면 대단히 감사하겠습니다.

편집

클라이언트 컴퓨터와 서버 컴퓨터 및 사용자 계정이 동일한 도메인에 있습니다.이 문제는 Windows 방화벽이 해제되어 있을 때 발생합니다.

유력한 이론은 서버가 약 일주일 전에 다시 시작되어 SPN(서비스 사용자 이름)을 등록하지 못했다는 것입니다.SPN을 등록하지 못하면 통합 인증이 Kerberos 대신 NTLM으로 폴백될 수 있습니다.

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

먼저, 사용자는 위임을 사용 가능으로 설정해야 하며 변경된 것이 있다면 사용 가능한 것일 수 있습니다.그렇지 않으면 "계정이 중요하므로 위임할 수 없습니다" 확인란을 선택 취소할 수 있습니다. 확인란의 선택을 취소할 수 있습니다.

둘째, 위임을 위해 서비스 계정을 신뢰해야 합니다.당신이 최근에 서비스 계정을 바꿨기 때문에 저는 이 사람이 범인이라고 의심합니다.(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'내가 이 글을 쓸 때의 오류.온라인에서 이 특정 솔루션을 찾지 못했기 때문에 이 솔루션은 이 오류를 검색하는 사람들에게 유용할 수 있습니다.

및 PHP 에 연결하려고 한 결과, " ", Xampp/Apache " PHP sqlsrv"라는 메시지를 .Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'설명한 오류입니다.로그인한 사용자 계정이 아닌 "LOCAL SERVICE" 사용자로 실행되는 Apache 서비스 자체가 문제라는 것을 알게 되었습니다.즉, 말 그대로 익명의 계정을 사용하고 있었습니다.해결 방법은 services.msc로 이동하고 Apache 서비스를 마우스 오른쪽 버튼으로 클릭한 다음 속성으로 이동하고 로그온 탭으로 이동한 다음 사용자의 자격 증명을 입력하는 것이었습니다.합니다.따라서 올바른 SPN이 실행되지 않으면 Windows 인증이 잘못된 사용자("LOCAL SERVICE" 사용자)에게 기본값으로 설정되고 익명 오류가 표시됩니다.

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

요약하자면, The.Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'두 경우 모두 서비스가 실행되고 있지 않거나 올바른 사용자가 아니었기 때문에 오류가 발생한 것 같습니다.올바른 SPN 또는 다른 서비스가 실행 중이고 올바른 사용자 아래에서 문제의 익명 부분을 해결해야 합니다.

데이터베이스 인증에 사용된 AD 그룹에 어떤 변화가 있었던 것 같습니다.데이터베이스에 액세스할 수 있는 AD 그룹에 domain\webservername$ 형식의 웹 서버 이름을 추가합니다.또한 web.config 특성을 "false"로 설정합니다.도움이 되길 바랍니다.

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

이 시나리오에서는 클라이언트가 tcp 연결을 해야 하며 LocalSystem 계정으로 실행되고 있을 가능성이 높으며 SQL 인스턴스에 등록된 SPN이 없기 때문에 NTLM이 사용되지만 LocalSystem 계정은 실제 사용자 기반 컨텍스트가 아닌 System Context에서 상속되므로 '익명 로그온'으로 실패합니다.

이 문제를 해결하려면 도메인 사용자 계정으로 실행 중인 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를 설정하면 됩니다.

연결 문자열에서 "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"/>

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

FWIW의 경우 IIS에서 실행 중인 (PHP) 웹 사이트가 데이터베이스에 연결하려고 할 때 이 메시지를 표시했습니다.

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

유사한 사례가 해결되었습니다.

이 경우 cnames와 로그인 현재 보안 컨텍스트를 사용하여 연결된 서버를 설정하려고 했습니다.

SQL Server를 실행하는 서비스 계정에 적절한 spns가 설정되어 있고 AD-object가 위임에 대해 신뢰되는지 확인했습니다.그러나 Cname에 직접 연결할 수 있는 동안 Cname의 연결된 서버를 호출하는 데 문제가 있었습니다.Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.

우리가 사용한 cnames가 자신의 도메인 AD 레벨이 아닌 더 높은 DNS 레벨에 설정된 A-레코드 [A]용이라는 것을 깨닫는 데 너무 오랜 시간이 걸렸습니다.원래는 [A]로 안내하는 C 이름을 가지고 있었습니다.다음 주소가 아닌 example.com : [A].domain.ad.example.com

물론 익명 로그온에 대한 오류가 있었습니다.

앱 풀로 이동하기 사전 설정에서 프로세스 모델을 선택한 다음 ID를 선택하고 ID에서 시스템의 사용자 이름 및 암호와 같은 계정 세부 정보를 설정합니다.

알겠습니다! SQL Server의 보안 세션에서 사용자 속성을 수정하는 문제를 해결했습니다.SQL Server Management에서 security -> Logon -> DB 연결에 사용할 사용자를 선택하고 해당 사용자의 속성으로 이동합니다."Securators" 탭으로 이동하여 "Connect SQL" 행을 찾고 "Grant" 옵션을 표시한 후 시도해 보십시오.나에게는 그게 효과가 있어요!

안부 전해요

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