2009-11-06 1 views
1

가능하다면이 문제가 있습니다.셰어 포인트로 돌아 가기 WebClient에 ActiveX 로의 셰어 포인트 포털

사용자가 SharePoint 포털 서버에 로그인했습니다.

  1. 사용자는 SPS의 페이지 (는 WebPart)를 연다 - 액티브가 액티브가 고정 바코드 스캐너로부터 데이터를 수신
  2. 을 개시한다.
  3. 액티브 X를 점 1)
  4. 는 액티브가 WebClient.UploadFile을 (사용 ..)에 사용되는 액티브는 웹 클라이언트의 자격 증명을 설정
  5. 웹 클라이언트를 생성하는 영문/ASCX 페이지를 받게되며 SPS에서
  6. (점 1에서 동일한 사용자/세션 등) 데이터
  7. 모두가 행복입니다 (그 금요일) - 맥주 간다 :

이 문제가되는 지점 4입니다.

답변

0

사용되는 인증 메커니즘에 따라 달라집니다. 사용자가 NTLM (Windows 통합)으로 페이지에 로그인하면 WebClient는 자격 증명을 다시 사용할 수 없습니다. Kerberos 기반이라면 더 좋은 기회를 가질 수 있습니다.

1

이것은 사용자 자격 증명이 현재 로그인 된 사용자 자격 증명 인 경우 작동합니다. GetResponse()가 호출되기 전에 UseDefaultCredentials가 HttpWebRequest에서 True로 설정된 경우 기본적으로 해당 값이 전송됩니다.

사용자가 기본값 (예 : )에 저장된 NTLM 협상 된 자격 증명과 다른 자격 증명을 제공하는 경우 사용자는 자격 증명을 계속 유지하도록 선택하지 않습니다 ("내 자격 증명 저장"확인란 선택). ActiveX HttpWebRequest.GetResponse() 호출은 응답이 401 (인증되지 않음)임을 나타내는 메시지와 함께 WebException을 발생시킵니다. ActiveX의 HttpWebRequest는 (1) 단계에서 인증에 사용 된 캐시 된 자격 증명에 액세스 할 수 없으며 자격 증명 관리자에 유지되지 않습니다. 해당 자격 증명 이 Credential Manager에 유지 된 경우 인 경우 ActiveX 웹 클라이언트는 해당 요청의 대상이 단계 (1)의 요청에 사용 된 대상과 동일하면 캐시 된 자격 증명 ()을 사용한다는 것을 알게됩니다.; 두 요청에 사용 된 호스트 이름이 같으면이 경우가됩니다.

마지막으로 ActiveX 컨트롤에 자격 증명이없는 경우 .NET Framework CredUIPromptForCredentialsCredUIPromptForWindowsCredentials 기능을 사용하여 자격 증명을 요구할 수 있습니다. 이러한 함수에 대한 정보와 MSDN의 Peer Channel Team Blog에서 Application Password Security을 참조하여 관리 코드에서 올바르게 배치하고 사용하는 방법에 대해 자세히 알아보십시오. CredUIPromptForWindowsCredentials를 사용하고 CredWrite을 호출하면 Internet Explorer에서 사용되는 모양과 느낌이있는 ActiveX 내에서 원활한 암호 프롬프트를 얻을 수 있습니다.