로컬 IIS를 통해 작동하도록 Windows 인증을 가져올 수 없습니다.
그래서 인트라넷 템플릿을 사용하여 새로운 ASP.NET MVC 프로젝트를 만들었습니다. web.config에는 적절한 값 (예 :)이 포함되어 있습니다 <authentication mode="windows"/>
.
VS 웹 서버를 사용하여 웹 앱을 실행하면 모두 괜찮아 보입니다. 페이지에 내 Windows 도메인과 사용자 이름 등이 모두 표시됩니다. 그러나 이것은 Opera 및 Safari뿐만 아니라 IE 및 FF에서도 작동하며 Windows 인증을 전혀 사용하지 않는다고 말합니다 (내가 아는 한 IE / FF를 제외한 어떤 브라우저에서도 작동하지 않습니다).
다음 단계는 로컬 IIS를 통해 작동하도록하는 것입니다. www.mysite.mydomain을 127.0.0.1로 가리키는 호스트 파일 항목을 만듭니다. 따라서 IIS에서 www.mysite.mydomain에 대한 바인딩으로 웹 사이트를 만들고 Windows 인증을 활성화하고 익명 인증을 비활성화합니다.
다음과 같이 Windows 인증을 사용하도록 IE 및 FF를 설정했습니다.
IE
- 인트라넷 그룹에 URL 추가
- 고급 설정에서 Windows 인증이 활성화되어 있는지 확인하십시오.
FF
'www.mysite.mydomain'을 network.automatic-ntlm-auth.trusted-uris 구성 설정에 넣으십시오.
그러나 IE / FF에서 www.mysite.mydomain에 전화를 걸면 로그인 프롬프트가 나타납니다. 흥미롭게도 여기에 Windows 로그인을 입력해도 여전히 실패하고 로그인 프롬프트가 다시 표시됩니다.
여기에는 활성 디렉토리가 없지만 로컬 계정에서는 제대로 작동해야한다고 이해합니다.
내가해야 할 일이 더 이상 생각 나지 않습니다. 어떤 제안?
편집 : 최근에 Active Directory를 사용하도록 전환했지만 문제가 남아 있습니다.
편집 : 로그인 프롬프트를 취소하면 다음 정보가 포함 된 'IIS 7.5 세부 오류'페이지가 표시됩니다.
HTTP 오류 401.2-권한 없음 유효하지 않은 인증 헤더로 인해이 페이지를 볼 권한이 없습니다. **
Windows 인증이 작동하려면 호스트 파일에 지정된 도메인 을 허용 목록에 추가해야합니다 .
빠른 액세스를 위해 위 링크에서 복사 :
- DisableStrictNameChecking 레지스트리 항목을 1로 설정합니다. 이렇게하는 방법에 대한 자세한 내용은 Microsoft 기술 자료 문서 281308 을 참조하십시오.
- 시작, 실행을 차례로 누르고 regedit를 입력 한 다음 확인을 누릅니다.
- 레지스트리 편집기에서 다음 레지스트리 키를 찾아 클릭합니다. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0
- MSV1_0을 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 다중 문자열 값을 클릭합니다.
- BackConnectionHostNames를 입력 한 다음 Enter 키를 누릅니다.
- BackConnectionHostNames를 마우스 오른쪽 단추로 클릭 한 다음 수정을 클릭합니다.
- 값 데이터 상자에 로컬 컴퓨터에있는 사이트의 호스트 이름 또는 호스트 이름을 입력 한 다음 확인을 클릭합니다.
- 레지스트리 편집기를 종료 한 다음 IISAdmin 서비스를 다시 시작합니다.
사용자 이름 앞에 도메인을 입력 했습니까?
DOMAIN\username
도메인 계정이없는 경우 사용자 이름 앞에 컴퓨터 이름을 붙여보십시오.
MYCOMPUTER\myusername
나는 최근에 같은 문제를 해결하기 위해 3 일을 보냈고 그것은 나를 미치게 만들었다. 서버 중 하나가 올바르게 인증되고 다른 서버가 실패한로드 밸런싱 된 설정에서 발생했습니다. 문제를 조사하고 결국 해결하는 것은로드 밸런싱 된 환경과 관련이없는 것으로 밝혀졌습니다. Windows 인증을 사용하여 인증 할 때 모든 서버에서 발생할 수 있으며 서버는 Active Directory에서 인식하는 이름이 아닌 다른 이름으로 호출됩니다.
1. Kerberos 로깅 활성화
문제를 올바르게 진단하려면 IIS 사이트를 호스팅하는 컴퓨터에서 Kerberos 로깅을 활성화해야합니다. 이렇게하려면 다음 레지스트리 항목을 추가하십시오.
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ Kerberos \ Parameters
ValueType REG_DWORD 및 값 0x1로 레지스트리 값 LogLevel 을 추가 합니다.
로깅을 켜고 인증을 시도하면 Windows 응용 프로그램 로그에 오류가 기록됩니다. KDC_ERR_PREAUTH_REQUIRED 오류를 무시할 수 있지만 (이것은 핸드 셰이크의 일부일뿐입니다) KDC_ERR_C_PRINCIPAL_UNKNOWN 오류가 발생하면 AD 컨트롤러가 서버를 인식하지 못하므로 아래 단계를 따라야합니다.
2. KDC_ERR_C_PRINCIPAL_UNKNOWN
KDC_ERR_C_PRINCIPAL_UNKNOWN을받는 경우 "mysite.mydomain.com"이라는 이름이 AD가 컴퓨터를 인식하는 방식과 다르므로 유효한 kerberos 티켓을 제공 할 수 없습니다. 이 경우 AD에서 " 'www.mysite.mydomain"에 대한 SPN (서비스 사용자 이름)을 등록해야합니다.
AD 컨트롤러에서 다음 명령을 실행합니다. 도메인 관리자 권한이 필요합니다.
Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME
3. 응용 프로그램 풀에 사용자 지정 ID 사용
마지막으로 응용 프로그램 풀에서 NetworkService를 사용하는 대신 Active Directory에 속한 사용자 지정 계정을 사용하도록합니다. 이는 응용 프로그램 풀의 고급 설정에서 수행 할 수 있습니다.
그리고 .. 짜잔.
참고 : 문제는 같은 컴퓨터에 여러 SPN을 등록하는 것과 관련이있을 수 있습니다.이 경우 중복 된 SPN을 제거하려면 명령을 실행해야하지만 그럴 가능성은 없습니다. 또한 htttp : // localhost : custom_port_number와 같은 사이트에 다른 바인딩 (사용자 지정 이름을 사용하지 않음)을 추가하고 인증이 작동하는지 확인하십시오. 그것이 효과가 있다면 이것은 당신이 내가 가진 것과 같은 문제로 고통 받고 있다는 추가 표시입니다.
Windows 인증이 설치 / 활성화되어 있는지 확인해야합니다. 이상하게 들릴 수 있지만 IIS 7에서는 다양한 인증 방법을 설치하고 활성화해야합니다. 자세한 내용은 http://support.microsoft.com/kb/942043/ 을 확인 하십시오 . 아래 인용 섹션을 참조하십시오.
원인 1
웹 응용 프로그램이 Windows 통합 인증을 사용하도록 구성되었습니다. 그러나 Windows 인증 기능은 켜져 있지 않습니다. 또는 ApplicationHost.config 파일 또는 Web.config 파일의 Windows 통합 인증 기본 모듈 섹션이 유효하지 않습니다. 이 문제를 해결하려면 해결 방법 1을 참조하십시오.
원본
일반적으로 IIS에서 호스팅되는 asp.net 웹 페이지를 보려고 할 때 로그인 프롬프트를 받으면 자격 증명이 수신되지 않았거나 인증되지 않았다는 의미는 아닙니다. 의미하는 바는 웹 사이트가 실행되는 계정에 파일 작업에 대한 올바른 권한이 없다는 것입니다.
IIS 6 및 7에서는 앱 풀이 실행되는 사용자 계정을 쉽게 변경할 수 있습니다. 이를 위해 특별히 설계된 더 많은 액세스 권한이있는 계정으로 앱 풀 ID를 변경해보십시오. 또는 기존 계정 (IUSR_? 네트워크 서비스?)을 계속 유지하려면 웹 사이트가 저장된 디렉토리에 대해 해당 계정에 더 많은 권한을 부여 할 수 있습니다.
이 문서는 특히 BizTalk를 대상으로하지만 이에 대한 참조가 거의 없으며 IIS 및 앱 풀과 관련된 권한 문제 해결에 중점을 둡니다. http://msdn.microsoft.com/en-us/library/aa954062.aspx
왜 로컬 IIS입니까? 로컬 IIS Express를 사용할 수 있습니까?
그렇다면 이것을 시도하십시오. IIS Express는 기본적으로 Windows 인증이 false로 설정되어있는 것 같습니다.
변화
<windowsAuthentication enabled="false">
to "true" in applicationhost.config file (under 'C:\Users[Profile]\Documents\IISExpress\config' folder). This works for me.
To ensure that IIS uses Windows Authentication, I think you should try to turn of other authtentication methods. If Anonymous Authentication is enabled, Windows authentication will not work. You can also read this Microsoft Support Article which describes IE and IIS requirements in details.
I got this error when I enabled Windows authentication. I wanted to authorize the user based on Windows login and there is no login page in my application.
I got the error fixed by adding the below in my Web config
file. Under the tag system.web
, I changed authentication mode="None"
to authentication mode="Forms"
.
Under the tag appSettings
, I added add key="owin:AutomaticAppStartup" value="false"
After reading the answer of Espen Burud, I solved my problem by changing in the root's web.config:
<allow users="*" />
to
<deny users="?" />
The page that needs Windows Authentication is not in the root, but in a sub directory with its own web.config with deny users ?
but that did not make Windows Authentication working. Apparently, you need to deny users in the root for that to work.
The IIS config has Anonymous Authentication enabled; that did not matter. After the above change of web.config, Windows Authentication worked.
For Dot Net Core 2.2 and running on IIS, I was having issues with 401.2 Unauthorized when I would check the Enable Windows Authentication within my application. It was a exceedingly simple test website that did basically nothing, just to try and get windows authentication to work. I finally got the auth to work, and here's what you'll need:
Within Startup ConfigureServices:
services.AddAuthentication(IISDefaults.AuthenticationScheme);
Open the application's Properties, click Debug option on the left and make sure you check Enable Windows Authentication.
But here's the kicker that I had forgotten... Configure your system to have Windows Authentication installed on IIS. This was never setup on my machine, and regardless what I did, I would always get a 401 unauthorized error. After installing this (Win 10, IIS v10.0.18362.1) I now get a login prompt. This isn't exactly what I need at this point, but at least it's not the unauthorized error. Good luck and hopefully this helps.
'programing tip' 카테고리의 다른 글
한 번에 두 개 이상의 파일을 압축 해제하려면 어떻게해야합니까? (0) | 2020.11.17 |
---|---|
전체 단어를 grep하는 방법 (0) | 2020.11.17 |
jQuery : 부모, 부모 ID를 얻습니까? (0) | 2020.11.17 |
엄격 모드가 적용되었는지 확인할 수있는 방법이 있습니까? (0) | 2020.11.17 |
ggplot2를 사용하여 축에 정수 값만 표시하는 방법 (0) | 2020.11.17 |