2011-11-26 2 views
0

응용 프로그램의 비즈니스 로직을 호스팅 할 WCF 서비스를 개발 중입니다. 응용 프로그램은 주로 인트라넷 용이지만 인터넷에서 액세스 할 수 있습니다. Active Directory 도메인이 가동 중이므로 사용자 이름과 그룹에 따라 사용자를 인증하고 권한을 부여 할 계획입니다.이 서비스는 대부분 ASP.NET MVC 사이트로 사용됩니다.WCF, 활성 디렉토리 인증 | SQL 조합의 사용자 프로필

그래서 첫 번째 질문은 광고 프로필을 기반으로 사용자를 인증하고 승인하는 방법

둘째, 각 사용자에 대한 추가 정보를 저장해야합니다. 문제는 AD 체계를 수정할 수 없다는 것입니다. 추가 된 필드의 수는 약 10 개 정도입니다.

어쨌든 프로필 저장을 위해 SQL 서버를 사용할 수 있습니까? 당연히 할 수 있겠지만 AD 인증을 통해 이것을 어떻게 묶을 수 있습니까?

답변

0

글쎄, 여기에 몇 가지 선택 사항이 있다고 생각되지만 구현을 신중하게 고려해야합니다.

활성 디렉터리 인증을 사용하는 주된 문제는 기본적으로 사용자의 자격 증명이 두 컴퓨터간에 성공적으로 전달 될 수 있다는 것입니다. 웹 응용 프로그램의 경우 이는 사용자의 자격 증명이 최종 사용자의 컴퓨터와 웹 서버간에 이동할 수 있지만 더 이상은 이동할 수 없음을 의미합니다.

그러나 Kerberos 인증을 사용하면이 동작을 변경할 수 있습니다. Kerberos 인증을 사용하면 체인의 모든 신뢰할 수있는 시스템 (즉, 웹 서버에서 응용 프로그램 서버, 데이터베이스, 예를 들어). 성공적으로 Kerberos를 구성하는 것은 특히 이전에 경험이없는 경우 매우 어려울 수 있습니다.

최선의 방법은 Windows 인증 만 허용하도록 웹 사이트를 구성하는 것입니다. 즉, IIS는 Active Directory에 대해 사용자의 유효성 검사를 수행합니다. ASP.Net 응용 프로그램에서는 Request.ServerVariables ("logon_user")에서 승인 된 사용자의 도메인 이름을 가져올 수 있습니다.

예를 들어, 다시 로그인 할 필요없이 FormsAuthentication을 사용하여 사용자를 로그온 할 수 있습니다.

그런 다음 사용자 유효성 검사 및 추가 정보 저장을 위해 SQL Server 멤버 자격 공급자를 구현하거나 데이터베이스에 대한 자신의 인터페이스를 만들 수 있습니다. 우리는 두 가지 메커니즘을 모두 사용했지만 제공하는 추가 제어로 인해 자체 구축 방식을 선호합니다.이 경우 멤버 자격 공급자가 제공하는 많은 기능 (암호 재설정, 복구 등)이 필요하지 않습니다. .

1

여기에 WIF를 사용할 수 있습니다.

정상적인 방법으로 WIF 용 WCF 서비스를 구성한 다음 기본 ClaimsAuthenticationManager에서 파생되고 Authenticate 메서드를 재정의하는 사용자 지정 ClaimsAuthenticationManager 클래스를 사용합니다. 이것은 WIF의 일반적인 확장 지점입니다. WIF는 에 들어오는 요청의 보안 토큰을 보유하고 각 관련 AD 속성에 대한 클레임을 추가합니다. Authenticate 메서드를 재정의하면 추가 속성을 나타내는 새로운 클레임이 추가됩니다.

WCF 서비스에 대한 WIF의 기본 사용은 여기에 설명되어 있습니다 :

http://msdn.microsoft.com/en-us/library/ee748476.aspx

이 ClaimsAuthenticationManager를 사용하는 방법을 보려면 여기를 시작합니다

http://msdn.microsoft.com/en-us/library/ee748211.aspx

관련 문제