2010-12-08 3 views
6

.NET 권한 부여 규칙을 사용하여 IIS7에서 응용 프로그램의 보안을 유지하려고합니다.IIS7 인증 규칙/구성 - 영구적으로 묻습니다.

기본적으로 웹 서버는 모든 사용자가 (상속 된) 액세스를 허용합니다.

이 응용 프로그램 디렉토리에 대해 모든 사용자 거부 명령과 특정 사용자에 대한 allow 명령을 추가했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.web> 
     <authorization> 
      <allow users="myusername" /> 
      <deny users="*" /> 
     </authorization> 
    </system.web> 
</configuration> 

나는 Windows 인증이 활성화되어, 나는 내 REMOTE_USER가 MYDOMAIN의 \의 MyUserName 에다입니다 라인없이 것을 확인할 수 있습니다.

그러나 모든 사용자를 거부하려고하면 일반적인 Windows 도메인 사용자 이름/암호 상자가 표시됩니다. 사용자 이름 암호를 입력하면 마지막으로 실패 메시지가 나타날 때까지 다시 3 번 표시됩니다. (나는 또한 아무 소용이 없으려고 노력했다)

감사에서 사용자 이름과 PW를 사용한 나의 로그인이 감사에 성공한 것 같이 이벤트 뷰어를 보면 ... 그 지점에서 나의 계정이 잠겨 있지 않은 것 같습니다 (로그인을 계속하지 않으면 실패 할 것입니다.) 따라서 로그인하는 것처럼 보이지만 구성에서 로그인과 일치하는 것으로 입력 한 내용을 볼 수 없습니다.

** 액세스가 거부 : 아래

나는 (심지어 로컬 호스트를 사용하여 서버에서 연결할 때) 볼 수있는 메시지입니다.

설명 :이 요청을 처리하는 데 필요한 리소스에 액세스하는 동안 오류가 발생했습니다. 요청 된 URL에 대한 액세스를 위해 서버를 구성하지 못할 수 있습니다.

오류 메시지 401.2 : Unauthorized : 서버 구성으로 인해 로그온하지 못했습니다. 제공 한 자격 증명 및 웹 서버에서 사용할 수있는 인증 방법을 기반으로이 디렉터리 또는 페이지를 볼 수있는 권한이 있는지 확인하십시오. 추가 지원 웹 서버의 관리자에게 문의하십시오. **

+0

또한,이 방법은 ASP.NET에 대한 IIS6 접근 것 같습니다 : 최종 해결책은 너무 역할에 도메인 이름을 사용하는 것이 었습니다. IIS7 인증은 약간 다릅니다. 그 중 하나에 대해서는 기반 규칙이 있지만 이는 아무 것도없는 것 같습니다. 중 하나를 추가했는데 아무 것도 거부하지 않는 것 같습니다. IIS 7.5입니다. 이상하게도 .NET 권한 부여 규칙 아이콘은 ASP.NET 아래에 있으며 IIS6 방식을 따르는 것으로 보입니다. IIS7 인증이 구성되거나 설치되지 않았습니까? – enforge

+0

IIS7 URL 인증이 내 시스템에 설치되어 있지 않은 것으로 보입니다. 대신 설치되어있는 동일한 이름의 다른 것이 있습니다. IIS 6 버전은 다르게 작동합니다. 나쁜, 나쁜 마이크로 소프트! 이것이 결의안이 될 경우 나는 완전한 대답으로 업데이트 할 것이다. – enforge

답변

7

먼저 떨어져, 주요 문제는 IIS6 인증은 IIS7에 포함, 적어도에있는 것을 내 case가 기본값이었습니다. 먼저 IIS7 인증이 설치되어 있는지 확인하십시오. 전체 방향은 여기에서 찾을 수 있습니다 : IIS7에서합니다 (ASP.NET 섹션에서) ".NET 권한 부여 규칙"라는 응용 프로그램 메뉴의 항목이 있기 때문에

http://www.iis.net/ConfigReference/system.webServer/security/authorization

혼란이 발생합니다. 이것은 IIS7 인증에 대해 원하는 것이 아닙니다. 이를 위해서는 위의 링크가 설치되어 있는지 확인한 다음 응용 프로그램의 IIS 섹션 아래에있는 "인증 규칙"링크를 클릭해야합니다.

다음과 같은 설정을하면 장소 :

<configuration> 
    <system.webServer> 
    <security> 
     <authorization> 
     <remove users="*" roles="" verbs="" /> 
     <add accessType="Deny" users="unknownname" /> 
     <add accessType="Allow" users="knownname" /> 
     </authorization> 
    </security> 
    </system.webServer> 
</configuration> 

이렇게하면 모든 사람이 거부됩니다. 존재하지 않는 사용자 이름이나 역할을 거부하면 모든 사람이 거부 된 것처럼 보입니다. 거부 된 사용자가 인식되면 제대로 작동합니다.

또한 *를 거부하고 특정 사용자를 허용하면 작동하지 않으며 모든 사용자를 거부합니다.위의 예제에서와 같이 * 사용자를 제거한 다음 대상 사용자 만 허용하면됩니다. 다른 모든 사람들은 기본적으로 거부됩니다.

+0

솔루션을 게시 주셔서 감사합니다! 내가 이것을 발견하기 전에 나는 반나절을 낭비했다. :) – Benjamin

+0

아무 문제 없어, 다행이 누군가를 도왔습니다! – enforge

+0

동일한 문제가 있지만 URL 오소리를 설치했습니다. 정말 이상한데 ... –

0

당신은 다음과 같이 코드를 변경 할 수

<deny users="*" /> 
<allow users="myusername" /> 
+0

그것이 내가 원래 가지고 있었던 것이지만 두렵지는 않습니다. – enforge

0

나는 (도메인 역할을 사용하기 위해) 이것을 설정하려고 4 시간을 보냈다. :)

`<system.web> 
    <authorization> 
    <allow roles="DOMAINNAME\rolename" /> 
    <deny users="*" /> 
    </authorization> 
</system.web>` 
관련 문제