Как проверить имя пользователя / stourceName, под которым работает код?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/96182

Вопрос

Мы хотим, чтобы кусок кода, который мы можем вставить в код позади, и получите имя пользователя, под которым код выполняется для: - (обычно .NET CODE запускается в соответствии с пулом приложения)

  1. Таймер задания.

  2. приемник событий.

  3. webpart. Страница приложений

  4. .

  5. Управление пользователя

  6. jsom

    Затем мы хотим использовать RWEP и снова проверять, какой код имени пользователя работает под.

    Какой фрагмент мы используем?

    <Сильное> Обновление

    Я не хочу код, который дает мне имя пользователя зарегистрированным пользователем. Я хочу код, который даст мне учетную запись, под которым код будет запущен.

    <Сильное> Обновление

    для страницы приложения:

      SPUser user1 = SPContext.Current.Web.CurrentUser;
            string userName1 = user1.Name;
    
    .

    дает значение как: зарегистрировано в имене пользователя.

     SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(idd))
                {
                    using (SPWeb rootWeb = site.OpenWeb())
                    {
                        SPUser user2 = SPContext.Current.Web.CurrentUser;
                        string userName2 = user2.Name;
                    }
    
                }
            });
    
    .

    дает значение как: зарегистрировано имя пользователя.

     var User = System.Security.Principal.WindowsIdentity.GetCurrent().User;
            var UserName = User.Translate(typeof(System.Security.Principal.NTAccount)).Value;
    
    .

    дает значение как: NT авторитет \ IUSR

      SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite site = new SPSite(idd))
                {
                    using (SPWeb rootWeb = site.OpenWeb())
                    {
                        var User12 = System.Security.Principal.WindowsIdentity.GetCurrent().User;
                        var UserName12 = User12.Translate(typeof(System.Security.Principal.NTAccount)).Value;                        
                    }
    
                }
            });
    
    .

    дает значение как: servername \ spadminaccountname

    <Сильное> Обновление

    (в нашем случае сайт coll. Имя пользователя admin так же, как и имя пользователя apppool веб-приложения, поэтому какую учетную запись это действительно?)

    1) Можем ли мы сделать вывод, что учетные данные, в соответствии с которыми работает код - это авторитет NT \ IUSR ', и если мы используем RWEP, то пользователь «WebApp / SiteCol admin admin acount»? Например, предположим, что мы обращаемся к файлу на сервере, то приведенные выше 2 учетных записей будут использоваться для доступа к файлу, а не учетной записи в системе в системе пользователя.

    2) Какой аккаунт используется при доступе ресурсов SharePoint? Это один из 2 выше или зарегистрирован в учетных данных пользователя?

Это было полезно?

Решение

Notvonkaiser В этом случае правильно:

1 работает под учетной записью фермы, и все остальные подходят в систему в учетной записи пользователя!

Зарегистрированные в учетной записи пользователя вызовет учетную запись NT / аутентифицированной учетной записи на сервере, что он / она имеет аутентификацию на сервере ToDo, что он запрашивает! Если это имеет смысл;)

Подумайте о NT / аутентификацию, как будто вы физически войдите на сервер toDo конкретная задача, такая как вы на вашем настольном компьютере, когда вы включите машину в Windows Logonto!

Так что сделать это понятно:

2-6 прогон в соответствии с током, зарегистрированным в учетной записи пользователя, которая имеет аутентификацию NT (разрешено доступу на любой ресурс)

Теперь говорите это, есть еще один фактор, и который имеет TOO с вашей политикой Web.config и CAS (политика безопасности доступа кода), в зависимости от того, что вы устанавливаете (полный, частичный, низкий) Определите доступ к вам доступе к ресурсам в соответствии с текущим вошедшим в систему!

с точки зрения развертывания, единственные различия между полноправным доверием Модель выполнения и модель выполнения BIN / CAS - это место, где Вы развертываете ваши сборки и политики безопасности доступа кода связано с этим местоположением. В обоих случаях любые некомпонентные предметы, такие как файлы разметки ASP.NET, файлы XML или файлы ресурсов, являются Обычно развернут до корня SharePoint на каждом веб-интерфейсе сервер. Если вы хотите развернуть решение фермы, используя любой из фермы Модели выполнения решения, вы должны иметь доступ к файлу сервера Система и быть членом группы безопасности администраторов фермы.

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

Большинство кода выполняется под текущим войти в учетной записи пользователя .... Если вам не повторяют повторение отправятся, чем что-то еще!

Теперь к вопросу, который я верю, это что-то более сложное и глубже, я верю, что твой ищет это, имеет Todo с рабочим процессом!

Итак, вы войти в машину -> Goto SharePoint Site, который аутентифицирует свою учетную запись (аутентификация NT) ->, чем вы выполняете работу, которая работает под рабочим процессом W3WP.EXE, и я думаю, что это то, что ваше направление?

Рабочий процесс - код пользовательского режима, роль которого является обработка запросов, такие как обработка запросов для возврата статической страницы, вызывая ISAPI Расширение или фильтр или запуск общего интерфейса шлюза (CGI) обработчик.

В режимах изоляции приложений работник контролируется работник по сервису WWW. Тем не менее, в режиме изоляции рабочего процесса, Рабочий процесс работает как исполняемый файл с именем w3wp.exe, а в IIS 5.0 Режим изоляции, рабочий процесс размещен Intinfo.exe. Рисунок 2.2, который изображает архитектуру для режима изоляции IIS 5.0, использует пунктирную линию, чтобы предложить отношение между рабочим процессом и Услуги www.

Рабочие процессы используют http.sys, чтобы получать запросы и отправить Ответы с помощью HTTP. Рабочие процессы также запускают код приложения, такие как ASP.NET приложения и веб-сервисы XML. Вы можете настроить IIS, чтобы запустить несколько рабочих процессов, которые подают другое приложение Бассейны одновременно. Этот дизайн отделяет приложения по процессу границы и помогают достичь максимальной надежности веб-сервера.

По умолчанию рабочие процессы в рабочей процессе изоляции режима режима под учетной записью сетевой службы, которая имеет самую сильную безопасность (наименее доступ) совместимо с функциональностью, которая требуется.

http://www.microsoft.com/technet/prodtechnolole/windowserver2003/library/iis/29f53968-0115-451f-b26d-5ad58d87b5d1.mspx?mfr=true

Так что рабочий процесс IIS будет выполнен в нижней части кода, но для этого нужно сделать это в первую очередь, вы должны быть аутентифицированы недоверительными!

Следующая ссылка показывает лучшее понимание!

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

Редактировать

1) Можем ли мы сделать вывод, что учетные данные, под которыми работает код «NT авторитет \ IUSR», и если мы используем RWEP, то пользователь 'webapp / sitecol admin admin acount "? Например, предположим, что мы Доступ к файлу на сервере, то приведенные выше 2 учетных записей будут использоваться Чтобы получить доступ к файлу, а не учетной записью в системе в системе пользователя.

Хорошо, я думаю, что вы запутались?

Для этого есть два этапа .... Пользователь входит в машину Да? Этот пользователь имеет доступ и является частью «NT Vaily \ IUSR», чтобы он мог получить доступ к конкретным ресурсам, которые требуют, чтобы вы были «NT авторитет \ IUSR» в пределах SharePoint ..... теперь запущенный код на бэкэнде сервера W

Я буду в пределах w3wp.exe (например, код .cs (внутри сборки)) ... Это запускается под учетной записью пула приложения .. Но это не будет выполняться, если зарегистрированная войти в пользователь не является частью «NT Vaily \ IUSR».Это не один или другой, больше похоже на одновременно одновременно.

Вы знаете, что вы хотите, чтобы вы использовали OveriousLT;) Но узнать W3WP.exe, вам нужно перейти к серверу и GoTo Tast Manager, посмотрите на процессы и найдите W3WP.exe ... Вы должны увидеть столбец рядомДля него с именем пользователя, которое будет учетной записью пула веб-приложения.

2) Какой аккаунт используется при доступе ресурсов SharePoint?Это Один из 2 выше или зарегистрированных пользователей учетных данных?

Ресурсы SharePoint доступны зарегистрированным пользователем.так же, как указано выше.

Другие советы

1 всегда следует работать под учетной записью фермы.

для 2, 3, 4 и 5, вы должны быть в состоянии сделать эту информацию, используя этот код:

SPUser user = SPContext.Current.Web.CurrentUser;
string userName = user.Name; //you can also call user.Email here
.

Обратите внимание, что это будет работать не правильно, если у вас есть блок делегата «RunwithelevilevileSPrivileges». Скорее, если вы назовете это в блоке делегата, вы просто получите имя учетной записи, которая выполняет код. Если вам нужно предоставить имя пользователя в этом случае, вызовите объект «SPContext» до или после запуска блока делегата. Вы не сможете передать объект в блок делегата напрямую, но вы должны быть в состоянии извлечь то, что вам нужно в строки или что у вас и отправим их в.

Для CSOM, предполагая, что вы используете JavaScript, этот код код поставляется из Эта страница MS MS:

function getUserProperties() {

// Replace the placeholder value with the target user's credentials.
var targetUser = "domainName\\userName";

// Get the current client context and PeopleManager instance.
var clientContext = new SP.ClientContext.get_current();
var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

// Get user properties for the target user.
// To get the PersonProperties object for the current user, use the
// getMyProperties method.
personProperties = peopleManager.getPropertiesFor(targetUser);

// Load the PersonProperties object and send the request.
clientContext.load(personProperties);
clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {

// Get a property directly from the PersonProperties object.
var messageText = " \"DisplayName\" property is "
    + personProperties.get_displayName();

// Get a property from the UserProfileProperties property.
messageText += "<br />\"Department\" property is "
    + personProperties.get_userProfileProperties()['Department'];
$get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
$get("results").innerHTML = "Error: " + args.get_message();
}
.

Вам придется иметь SP.JS Preloaded до того, как этот скрипт работает, либо придерживая его на главную страницу, либо, добавив блок «SharePoint: ScriptLink» для него в вашей разметке.

в основном, что вы должны сделать, это так:

  1. Позвоните в контекст клиента.
  2. Расскажите контекст клиента, что вы хотите получить от него.
  3. сделать асинхронный призыв к веб-сервису, чтобы получить эту информацию.
  4. Настройте методы обратного вызова для обработки данных, если асинхронный вызов успешен или нет.

    Надеюсь, что помогает!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top