|
![]() |
#1 |
Чайный пьяница
|
В контексте страницы вы в стостоянии получить идентификатор, а соответственно домен и логин пользователя, под которым вы зашли на страницу. Далее привожу то, что я нашёл через гугл (и не осуждайте строго - я не разработчик под шарепоинт и мне показалось именно тем, что решит вашу проблему):
http://vspug.com/tanujashares/2007/0...arepoint-2007/ http://www.learningsharepoint.com/20...arepoint-2010/
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#2 |
Участник
|
Добрый вечер! Спасибо за ответы, но они мне не очень помогли. CRM на стороне сервера никак не дает учетку пользователя и соответственно не может уйти в SP. Варианты решений:
1. Написать на стороне SP web-services, к которому crm будет обращаться с фиксированным именем-доменом-паролем и передавать имя пользователя а уже этот сервис пусть пишет этого пользователя в "авторы" записи на SP... 2. Попытаться выполнить код на стороне клиента ??? - то есть получить от сервера CRM данные для записи и из js на стороне клиента обратиться к сервисам SP (здесь то учетка пользователя??) , - и здесь==>, есть ли возможность подключить к js на стороне клиента внешние библиотеки или запускать программы на стороне клиента - кажется это не совсем просто??? или вообще невозможно??? |
|
![]() |
#3 |
Чайный пьяница
|
Можете показать код, который вы используете?
Цитата:
Цитата:
Сообщение от lvi15
![]() Попытаться выполнить код на стороне клиента ??? - то есть получить от сервера CRM данные для записи и из js на стороне клиента обратиться к сервисам SP (здесь то учетка пользователя??)
, - и здесь==>, есть ли возможность подключить к js на стороне клиента внешние библиотеки или запускать программы на стороне клиента - кажется это не совсем просто??? или вообще невозможно???
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 19.12.2011 в 19:31. |
|
![]() |
#4 |
Участник
|
Спасибо за ответ. Код простой, тестировал сейчас уже в одном домене (и CRM и SP), обращаюсь с пользоваттельского (своего) ПК в CRM (сервер на другом пк) и усе - crm идет в SP с чем угодно, но не с моей учеткой. На обоих серверах в записях AD взведены флажки Cerberos в делегировании. Код выполняется по обращению с asp.net страницы, встроенной в crm в соответствии с правилами sdk:
using System; using System.Diagnostics; using System.Globalization; using System.Collections.Generic; using System.Text; using System.IO; using System.Data; using System.Linq; using System.Xml; using System.Xml.Linq; using System.Web.Services; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Diagnostics; using OrgName.Crm.Base; using OrgName.Crm.CrmSdk; using SP = Microsoft.SharePoint.Client; using Microsoft.SharePoint.Client; namespace OrgName.Crm.Realty.Common { public class CrmTemplatePage : CrmPage { protected void ConnectSP() { string siteUrl = "//http://sps10/DocLib/"; //http://sps10/DocLib/ string nameLibname = "Договоры"; //Договоры ClientContext clientContext = new ClientContext(siteUrl); clientContext.Credentials = System.Net.CredentialCache.DefaultCredentials; //??? List list = clientContext.Web.Lists.GetByTitle(nameLibname); clientContext.Load(list); //Получить в clientContext библиотеку документов "Договоры" clientContext.ExecuteQuery(); //<====Здесь идет ошибка } } } То есть меня очень выручит даже некое вербально-идейное описание возможного решения... Последний раз редактировалось a33ik; 19.12.2011 в 23:07. |
|
![]() |
#5 |
Чайный пьяница
|
Первое - я предлагал аутентифицироваться во время подключения к шарепоинту при помощи креденшиалов вынесенных в какое нибудь хранилище (неважно какое) - где это?
Второе - где попытка получить имя учётной записи пользователя который залогинен в данный момент? Если вы думаете, что DefaultCredentials вас спасут - глубоко ошибаетесь. Третье - где попытка имперсонироваться под текущим пользователем, а ссылки на имперсонацию я предоставил?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 20.12.2011 в 00:28. |
|
![]() |
#6 |
Участник
|
Добрый день! Заменил я строку доступа к SP.
А где должна выполняться инперсонализация, здесь же в коде на CRM или надо внедрять код web-сервиса на SP. Вот код с http://vspug.com/tanujashares/2007/0...repoint-2007/: //============================================================================= SPSite site = new SPSite("SiteCollection_Url"); SPWeb web = site.OpenWeb(); SPUser user = web.AllUsers["User_Name"]; SPUserToken token = user.UserToken; SPSite impersonatedSiteCollection = new SPSite("SiteCollection_Url", token); //============================================================================= //====Код на стороне CRM для подключения к web-сервису SP using SP = Microsoft.SharePoint.Client; using Microsoft.SharePoint.Client; namespace OrgName.Crm.Realty.Common { public class CrmTemplatePage : CrmPage { protected void ConnectSP() { string currentUser="User_Name"; //это можно получить из SQL, используя функцию SUSER_SNAME() string currentDomain="Domain"; string siteUrl = "http://sps10/DocLib/"; string nameLib = "Договоры"; ClientContext clientContext = new ClientContext(siteUrl); clientContext.Credentials = new System.Net.NetworkCredential("user", "passw", "domain"); // с этим удается "провалиться" в SP List list = clientContext.Web.Lists.GetByTitle(nameLib); clientContext.Load(list); clientContext.ExecuteQuery(); //<====Здесь идет ошибка 401 }}} Если на стороне CRM - то как "скрещивать" эти два фрагмента кода? Последний раз редактировалось lvi15; 20.12.2011 в 12:19. |
|
![]() |
#7 |
Чайный пьяница
|
clientContext.Credentials = new System.Net.NetworkCredential("user", "passw", "domain");
Это криденшиалы - какого пользователя? Если это криденшиалы пользователя, у которого есть права на вызо шарепоинта, то 401 быть не должно.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|