2012-01-11 1 views
0

저는 ASP.NET MVC3을 사용하는 간단한 웹 응용 프로그램을 작성 중이며이 응용 프로그램에 대한 액세스를 도메인의 Active Directory 그룹 구성원으로 제한하려고합니다. 나는 사용자 정의 인증 필터를 정의하지 않은로컬에서 실행할 때 내 MVC3 AD 인증 필터가 작동하지 않는 이유는 무엇입니까?

namespace MyApp.Controllers 
{ 
    [Authorize(Roles = @"DOMAINNAME\MyApp_AccessControlGroup")] 
    public class HomeController : Controller 
    { 
     public ActionResult index() 
     { 
     //action code 
     } 

     //More actions here 
    } 
} 

난 단지 있도록 Windows 인증에의 web.config를 수정 했더라도, : 다음과 같이

나는, 컨트롤러에 인증 필터를 사용하여 이런 짓을 한

<authentication mode="Windows"> 
    <!--<forms loginUrl="~/Account/LogOn" timeout="2880" />--> 
</authentication> 

<!--Added for Windows authentication--> 
<authorization> 
    <deny users="?"/> 
</authorization> 

그리고 개발 웹 서버 (Visual Studio의 게시 기능을 사용하는 경우)에 배포 할 때 아주 잘 작동합니다. MyApp_AccessControlGroup 그룹에 없으면 브라우저에서 응용 프로그램을 가져 오려고 할 때 자격 증명을 묻는 메시지가 나타납니다. 그러나 그룹에 가입하면 예상대로 웹 페이지를 볼 수 있습니다.

Visual Studio에서 디버깅 할 때는 그렇지 않습니다. 내 워크 스테이션에서 F5 키를 누르고 ASP.NET 개발 서버를 시작하면 AD 그룹에 없더라도 사이트를 볼 수 있습니다.

왜 이런 일이 발생합니까? 승인 필터가 코드가 실행 중인지 여부와 관계없이 그룹 멤버십을 계속 확인해야합니다.

+0

웹 구성에 roleManager 섹션이 있습니까? 그렇다면 게시 할 수 있습니까? 또한 웹 설정에서''가 있습니까? –

+0

@SteveMallory 나는 web.config에 그것들을 가지고 있지 않습니다. –

답변

0

글쎄, 제가 생각할 수있는 유일한 것은 관리자로서 Visual Studio를 실행하고 있으므로 개발 서버가 관리자로 실행되어 URL에 액세스 할 수 있다는 것입니다.

+0

관리자 권한이없는 다른 계정으로 실행을 시도했지만 동일한 문제가 발생했습니다. 이 행동이 평범하지 않다는 것을 정확하게 이해합니까? –

+0

Windows 인증 및 권한 부여를 사용한 유일한 경우는 데이터베이스에서 역할을 검색 한 자체 역할 공급자를 롤백 한 경우입니다. 그래서 나는 그것에 대한 답을 모른다. 이것을 디버깅하기 위해 기본 롤 공급자를 인스턴스화하고'.GetRolesForUser (username)'을 호출 할 수 있습니다 - dev 머신에서 얻은 것을보십시오. 다음은 [link] (http://msdn.microsoft.com/en-us/library/system.web.security.roles.provider.aspx)에 도움이되는 링크입니다. –

관련 문제