2012-10-12 11 views
7

Exchange 웹 서비스를 통해 Exchange 2010 서버에 연결하기 위해 ASP.NET (.NET 3.5) 웹 사이트를 만들려고하고 있는데 사용자 이름, 암호 및 도메인을 정의 할 때 EWS에 연결할 수 있습니다. 함께 인증 할 수 있지만 가능한 경우 내 코드에 로그인 세부 정보를 포함시키지 마십시오.AD 사용자 인증

IIS에서 사이트에 대한 Windows 통합 인증을 활성화했습니다. 사이트의 web.config에 <authentication mode="Windows"/>이 있습니다. 이없는 계정으로 요청을 할 때

: 나는이 메시지를 수신하고 위의 코드와 함께

svc.UseDefaultCredentials = True 
svc.Credentials = New WebCredentials() 
svc.Url = New Uri(svcURL) 

:

다음 코드는 내가 함께 워킹 된 것입니다 은 고유 한 폴더 ID에 대해 사서함 기본 SMTP 주소를 지정해야합니다.

'System.Net.SystemNetworkCredential'형식의 개체를 캐스팅 할 수 없습니다 유형 'Microsoft.Exchange에 :

내가 오류 메시지가 나타납니다 (svc.Credentials = New WebCredentials() 대신에) svc.Credentials = CredentialCache.DefaultNetworkCredentials를 사용하려고

.WebServices.Data.ExchangeCredentials '. svc.Credentials = New WebCredentials("username","password","domain")

사람이 EWS에 대한 인증을 할 수 있었다 : 언급 한 바와 같이

이 근무하고있다 유일한 것은 차라리하지 않을 것입니다 사용자의 로그인 정보를 하드 코딩에 의해 인증을 사용자 자격 증명을 정의하는 것입니다 ASP.NET 웹 사이트에서 현재 로그인 한 사용자의 자격 증명을 사용하고 있습니까?

+0

리마,이 시나리오에 대한 해결책을 어디에서 찾을 수 있습니까? –

답변

2

기본적으로 한 서버 (ASP.NET 사이트를 호스팅하는 서버)에서 다른 서버 (Exchange 서버)로 사용자의 자격 증명을 위임 할 수 없습니다. 이를 "서버 홉 (server hop)"이라고하며 Windows는 보안 조치로 기본적으로이를 방지합니다.

  1. Kerberos를 사용 :

    당신은 몇 가지 옵션이이 문제를 해결해야 커버 로스는 그것이 가능한 Windows 인증을 사용하는 경우 서버 간의 사용자 자격 증명을 위임 할 수 있습니다 사용하는 경우. 나는 단지 겸손한 개발자 일 뿐이지 만 시스템 관리자가 당신을 도울 수있는 것처럼 Kerberos를 설정하는 방법에 대한 자세한 내용을 알지 못합니다. AFAIK, 사용자 위임을 허용하도록 ASP.NET 서버를 설정해야합니다.

  2. IIS 응용 프로그램 풀의 사용자 ID 설정 : Kerberos를 사용할 수없는 경우 ASP.NET 사이트가 실행되는 응용 프로그램 풀의 ID를 변경할 수 있습니다. 먼저 IIS 관리자에서 새 응용 프로그램 풀을 정의합니다. 그런 다음 해당 응용 프로그램 풀에 대한 고급 설정 대화 상자로 이동하여 Exchange 서버에 액세스 할 수있는 도메인 사용자에게 ID를 설정하십시오. 응용 프로그램 풀 ID에 대한 자세한 내용은 http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx입니다.
  3. < 정체성 > 요소를 설정 :를 응용 프로그램 풀을 변경할 수 없습니다 어떤 이유로, 당신이 당신의 web.config 파일에 < 정체성 > 요소를 사용하여 ASP.NET 웹 사이트의 가장을 시도 할 수 있습니다합니다. ASP.NET을 사용하면 web.config 파일에 직접 입력 할 필요가 없도록 레지스트리에 자격 증명을 저장할 수있는 옵션이 제공됩니다. 여기에 더 많은 정보 : http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  4. < appSettings는> ellement 및 암호화를 사용하여 : 단순히 정상 < appSettings는 귀하의 web.config 파일에 자격 증명을 넣어하는 것입니다 생각> 다음 전체 < appSettings는 암호화 할 수 있습니다 마지막 옵션 > 섹션을 참조하십시오. 그런 다음 the AppSettingsReader class을 사용하여 코드에서 appSettings를 읽습니다. .NET을 사용하면 상자 밖에서 web.config 파일의 섹션을 암호화 할 수 있으며 섹션이 암호화되었음을 알리는 이벤트없이 설정을 읽을 수 있습니다. .NET은 해독을 처리합니다. 여기에 대한 자세한 정보 : http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
관련 문제