2009-03-24 8 views
0

InfoPath 양식의 코드 숨김으로 표준 SharePoint 웹 서비스 GetWeb을 사용하려고합니다. 양식은 워크 플로의 일부로 호스팅되므로 Forms Services를 사용하여 브라우저 내부에로드됩니다. 따라서 SharePoint에 로그인 한 현재 사용자의 자격 증명에서 실행됩니다. 사용자가 사이트 소유자 그룹에 있으면 웹 서비스가 실행되지만 사용자가 Contributer 또는 Reader 그룹에 있으면 'HTTP 401 Unauthorized'오류가 발생합니다. 또한 GetLists 웹 서비스를이 후에 사용하지만 사용자에게 Reader 권한이 있으면 실행됩니다.SharePoint 웹 서비스 자격 증명

GetList 호출에 필요한 매개 변수로 WebId를 가져 오기 위해 GetWeb 호출 만 사용합니다. 나는 WebId를 양식을 찾는 것과 반대되는 양식으로 전달하여 내 사용 권한 문제를 해결했습니다. 이제는 모두 괜찮습니다.

그러나 GetWeb에 더 높은 권한이 필요한 이유와 이러한 사용 권한을 제어 할 수있는 방법을 알고 싶습니다. 다른 상자 웹 서비스가 필요로하는 권한에 대한 설명서를 찾지 못했습니다.

[주의] 이유는 있지만 데이터 연결 파일을 사용하고 있지는 않지만 어쨌든 제안 해 주셔서 감사합니다.

+0

사이트가 게시 사이트입니까? – James

+0

아니요 빈 사이트 정의를 사용합니다. –

답변

2

데이터 연결 라이브러리에서 웹 서비스 세부 정보를 관리하면 웹 서비스 자격 증명을 하드 코딩 할 필요가 없습니다. UDCX 파일에는 웹 서비스 자격 증명을 저장하는 스키마가 포함되어 있으며 파일 자체는 중앙 관리에서 중앙에서 관리 할 수 ​​있습니다. 중앙 관리에서

사용하여 데이터 연결 파일 :에서 http://aidangarnish.net/blog/post/2008/11/Using-centrally-managed-SharePoint-data-connection-files-with-InfoPath-2007.aspx

웹 서비스 credentoils (7) : http://sheetal-d.spaces.live.com/Blog/cns!237C3DEA7120098B!658.entry

+0

디자인 타임에 데이터 연결을 만들 때 데이터 연결을 사용하지 않기 때문에 InfoPath는 'localhost'를 실제 개발 컴퓨터 이름으로 해석해야한다고 주장합니다. 라이브 서버에 배포 할 때 이상적입니다. 그러나 WSS의 권한 수준이 웹 서비스 액세스와 어떤 관련이 있는지는 아직 알 수 없습니다. –

0

당신은 GetList를위한 셰어 클라이언트를 사용하는 경우. 그런 다음 코드 아래를 볼 수 있습니다.

ClientContext context = new ClientContext(siteURL); 
UserInfo user = new UserInfo(); 
SecureString passWord = new SecureString(); 
foreach (char c in user.Pwd.ToCharArray()) passWord.AppendChar(c); 
context.Credentials = new SharePointOnlineCredentials(user.UserName, passWord); 
//context.Credentials = new System.Net.NetworkCredential(userName, password); 
Web web = context.Web; 
List list = web.Lists.GetByTitle(documentLibraryName); 

CamlQuery query = new CamlQuery(); 
ListItemCollection items = list.GetItems(query); 
context.Load(items); 
context.ExecuteQuery(); 
+0

그리고 그것은 무엇을합니까? 어떻게 작동합니까? 이 답변을 향후 방문객에게 더욱 유용하게 사용하려면 설명을 추가하십시오. 감사! – Vogel612

관련 문제