Question

Nous voulons un code de code que nous pouvons coller dans le code et obtenir le nom d'utilisateur sous quel code est exécuté pour: - (généralement le code .NET fonctionne sous compte du pool d'applications)

  1. travail de minuterie.

  2. Récepteur d'événement.

  3. webpart.

  4. Page d'application de la mise en page.

  5. Contrôle utilisateur

  6. JSOM

    Ensuite, nous voulons utiliser rwep et vérifiez à nouveau quel code nom d'utilisateur fonctionne sous.

    Quel extrait utilisons-nous?

    mise à jour

    Je ne veux pas de code qui me donne le nom d'utilisateur de l'utilisateur connecté. Je souhaite le code qui me donnera le nom de compte sous lequel le code sera exécuté.

    mise à jour

    pour une page d'application:

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

    donne la valeur comme suit: connecté Nom d'utilisateur.

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

    donne la valeur comme suit: connecté Nom d'utilisateur.

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

    donne de la valeur comme: NT Authority \ 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;                        
                    }
    
                }
            });
    

    donne la valeur comme suit: ServerName \ SPADMINAccountName

    mise à jour

    (Dans notre cas, le site Coll. Le nom d'utilisateur administrateur est identique à l'application Web AppPool Nom d'utilisateur, alors quel compte est-ce vraiment?)

    1) Peut-on conclure que les informations d'identification dans lesquelles le code est exécuté est la «NT Authority \ IUSR» et si nous utilisons RWEP, l'utilisateur est «WebApp / SiteCol Admin Admin ACount»? Par exemple, supposons que nous accédions à un fichier sur le serveur, les comptes ci-dessus seront utilisés pour accéder au fichier et non le compte de l'utilisateur connecté.

    2) Quel compte est utilisé lors de l'accès aux ressources SharePoint? Est-ce l'un des 2 ci-dessus ou des informations d'identification des utilisateurs connectées?

Était-ce utile?

La solution

Nottvonkaiser dans ce cas est correct:

1 est exécuté sous un compte agricole et tous les autres sont sous un compte utilisateur connecté!

Le compte d'utilisateur connecté appellera le compte NT / authentifié sur le serveur qu'il / elle a une authentification sur le serveur TODO ce qu'il demande de TODO! Si cela a du sens;)

Pensez à NT / authentifié comme si vous vous connectez physiquement sur le serveur TODO Une tâche spécifique telle que vous le feriez sur votre ordinateur de bureau lorsque vous allumez la machine à Logonto Windows!

pour que cela soit clair:

2-6 Exécutez sous le compte courant Compte utilisateur comportant une authentification NT (autorisé à accéder à toute ressource nécessaire)

En disant maintenant ceci, il existe un autre facteur impliqué et qui tiendrai avec votre politique Web.Config et la politique de CAS (Politique de sécurité du code), en fonction de ce que vous avez défini (complet, partiel, faible) Déterminera l'accès que vous auriez aux ressources sous le compte enregistré en cours!

En termes de déploiement, les seules différences entre la confiance complète Le modèle d'exécution et le modèle d'exécution BIN / CAS sont l'emplacement où Vous déployez vos assemblages et les stratégies de sécurité d'accès au code associé à cet endroit. Dans les deux cas, tous les articles non compilés, tels que les fichiers de balisage ASP.NET, les fichiers XML ou les fichiers de ressources, sont généralement déployé sur la racine SharePoint sur chaque front de bord de la bande serveur. Si vous souhaitez déployer une solution agricole en utilisant l'une de la ferme Modèles d'exécution de la solution, vous devez avoir accès au fichier de serveur. système et être membre du groupe de sécurité des administrateurs de la ferme.

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

La plupart des codes sont exécutés sous le compte d'utilisateur connecté actuel .... Sauf si vous avez besoin de prunwithheélévotePargLages à ce sujet!

Maintenant à la question que je crois que quelque chose est plus complexe et plus profondément, je crois ce que vous recherchez avec le processus de travail!

Vous vous connectez donc à la machine -> Goto SharePoint Site qui authentifie votre compte (authentification NT) -> que vous effectuez un emploi exécuté sous le processus de travailleur W3WP.exe et je pense que c'est que vous vous référez?

Un processus de travailleur est le code de mode utilisateur dont le rôle est de traiter les demandes, tels que le traitement des demandes de renvoi d'une page statique, invoquant un ISAPI Extension ou filtre, ou exécutant une interface de passerelle commune (CGI) gestionnaire.

Dans les deux modes d'isolation d'applications, le processus de travail est contrôlé. par le service www. Cependant, en mode d'isolement des processus ouvrières, un Le processus de travailleur fonctionne comme un fichier exécutable nommé w3wp.exe et dans IIS 5.0 Mode d'isolation, un processus de travailleur est hébergé par inettinfo.exe. La figure 2.2, qui décrit l'architecture du mode d'isolement IIS 5.0 utilise une ligne pointillée pour suggérer la relation entre le processus de travailleur et le service www.

processus de travail utilisez http.sys pour recevoir des demandes et envoyer Réponses en utilisant HTTP. Les processus de travailleurs exécutent également le code d'application, tels que les applications ASP.NET et les services Web XML. Vous pouvez configurer IIS à exécuter plusieurs processus de travailleurs qui servent une application différente piscines simultanément. Cette conception sépare les applications par processus limites et aide à atteindre une fiabilité maximale du serveur Web.

Par défaut, traitements de travailleurs en mode d'isolement du processus de travail Sous le compte de service réseau, qui a la sécurité la plus forte (moins d'accès) compatible avec la fonctionnalité requise.

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

Ainsi, le processus de travailleur de l'IIS serait celui qui exécute le code en bas mais de le faire en premier lieu, vous devez être authentifié sans régime sans régime!

Le lien suivant montre une meilleure compréhension!

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

Modifier

1) Peut-on conclure que les informations d'identification dans lesquelles le code exécute est le 'NT Authority \ iSR' et si nous utilisons rwep, alors l'utilisateur est 'WebApp / SiteCol Admin Admin Acompte'? Par exemple, supposons que nous soyons Accéder à un fichier sur le serveur, les comptes ci-dessus seront utilisés. Pour accéder au fichier et non le compte de l'utilisateur connecté.

OK, je pense que tu es confus?

Il y a deux étapes à ce sujet .... L'utilisateur se connecte à la machine Oui? Cet utilisateur a accès et fait partie de 'NT Authority \ IUSR', il est donc capable d'accéder à des ressources spécifiques qui vous obligeaient à être "NT Autorité \ iSR" dans SharePoint ..... en cours d'exécution sur le backend du serveur w

Peut être dans w3wp.exe (comme code de forme similaire (au sein de l'assemblage)) ... Ceci est exécuté sous le compte de pool d'applications .. mais cette fonction ne fonctionne que si l'utilisateur connecté ne fait partie de 'NT Authority \ IUSR'.Ce n'est pas un ou l'autre, plus comme les deux à la fois utilisé.

Vous connaissez le compte consigné que vous utilisez EveliousLT;) Mais pour connaître le W3WP.exe, vous devez goto le serveur et Goto Tast Manager, consulter les processus et trouver w3wp.exe ... vous devriez voir la colonne suivanteavec le nom d'utilisateur qui serait le compte de pool d'applications Web.

2) Quel compte est utilisé lors de l'accès aux ressources SharePoint?Est-ce l'un des 2 ci-dessus ou les informations d'identification des utilisateurs connectés?

Les ressources SharePoint sont accessibles par l'utilisateur connecté.comme ci-dessus.

Autres conseils

1 devrait toujours fonctionner sous le compte de la ferme.

pour 2, 3, 4 et 5, vous devriez être capable de furet cette information en utilisant ce code:

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

Notez que cela va pas fonctionner correctement si vous avez un bloc de délégué «runwithheélévatedprivileus». Au contraire, si vous l'appelez dans le bloc délégué, vous obtiendrez simplement le nom du compte qui exécute le code. Si vous devez fournir un nom d'utilisateur dans ce cas, appelez l'objet 'SPContext' avant ou après avoir exécuté le bloc délégué. Vous ne pourrez pas passer l'objet dans le bloc de délégué directement, mais vous devriez être en mesure d'extraire ce dont vous avez besoin dans des chaînes ou de ce que vous avez et envoyez eux in.

Pour CSOM, en supposant que vous utilisez JavaScript, ce bloc de code provient de Cette Page 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();
}

Vous devrez avoir SP.JS préchargé avant que ce script ne fonctionne, que ce soit en le collant dans la page maître ou en ajoutant un bloc 'SharePoint: ScriptLink' Block pour celui-ci dans votre balisage.

Fondamentalement, ce que vous avez à faire est celui-ci:

  1. appelez le contexte du client.
  2. Indiquez au client ce que vous voulez récupérer de celui-ci.
  3. Faites un appel asynchrone au service Web pour obtenir cette information.
  4. Configurez les méthodes de rappel pour gérer les données si l'appel ASYNC réussit ou non.

    espère que cela aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top