Domanda

Vogliamo un pezzo di codice che possiamo incollare nel codice dietro e ottenere il nome utente in base al quale il codice viene eseguito per: - (di solito il codice .NET viene eseguito in conto del pool di applicazioni)

    .
  1. Job Timer.

  2. ricevitore evento.

  3. Webpart.

  4. Layouts Pagina dell'applicazione.

  5. Controllo utente

  6. jsom

    Quindi, vogliamo usare RWEP e controllare nuovamente quale codice nome utente è in esecuzione sotto.

    Quale snippet usiamo?

    Aggiornamento

    Non voglio il codice che mi dà il nome utente dell'utente registrato. Voglio il codice che mi darà il nome del conto in cui il codice verrà eseguito.

    Aggiornamento

    per una pagina di applicazione:

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

    dà valore come: registrato Nome utente.

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

    dà valore come: registrato il nome utente.

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

    Dà valore come: NT Autorità \ 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;                        
                    }
    
                }
            });
    
    .

    dà valore come: servername \ spadminaccountname

    Aggiornamento

    (nel nostro caso, il sito Coll. Username admin è uguale all'applicazione Web AppPool Nome utente, quindi quale account è davvero?)

    1) Possiamo concludere che le credenziali in base al quale il codice esegue è l'autorità NT \ IUSR "e se usiamo RWep, allora l'utente è 'WebApp / SiteCol Admin User Atount'? Ad esempio, supponiamo di accedere a un file sul server, quindi gli account precedenti verranno utilizzati 2 account per accedere al file e non sull'account dell'utente registrato.

    2) Quale account viene utilizzato quando si accede alle risorse di SharePoint? È uno dei 2 precedenti o le credenziali degli utenti registrati?

È stato utile?

Soluzione

Notvonkaiser in questo caso è corretto:

1 Esegui un account agricole e tutti gli altri sono sotto l'account utente registrato!

L'account utente registrato chiamerà il conto NT / Authenticated sul server che ha l'autenticazione sul server ToDO cosa sta richiedendo TODO! Se questo ha senso;)

Pensa a NT / Authenticati come se stessi accedendo fisicamente al server per eseguire un compito specifico come si desideri sul tuo PC desktop quando si accende la macchina a Logonto Windows!

Quindi per rendere questo chiaro:

2-6 Esegui sotto corrente Congiunta Account utente che ha l'autenticazione NT (permesso di accedere a qualsiasi risorsa è necessaria)

Ora dicendo questo, c'è un altro fattore coinvolto e che ha todo con la tua politica di web.config e cas (codice di sicurezza di accesso al codice), a seconda di ciò che impostato (pieno, parziale, basso) Determinerà l'accesso che avresti dovuto alle risorse nell'ambito dell'account corrente effettivo!

.

In termini di implementazione, le uniche differenze tra la full-trust Il modello di esecuzione e il modello di esecuzione Bin / CAS sono la posizione in cui Distribuisci i tuoi assembly e le politiche di sicurezza di accesso al codice associato a quella posizione. In entrambi i casi, qualsiasi oggetto non compilato, come file di markup ASP.NET, file XML o file di risorse, sono tipicamente distribuito sulla radice di SharePoint su ciascun front-end web server. Se si desidera distribuire una soluzione di fattoria usando una delle fattorie Modelli di esecuzione della soluzione, è necessario avere accesso al file del server Sistema ed essere un membro del gruppo di sicurezza degli amministratori agricoli.

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

La maggior parte del codice viene eseguita nell'ambito dell'account utente del registro corrente .... a meno che non si riunisca l'utente non ha reindirizzato i provvisori di quello che è altro!

Ora alla domanda che credo è qualcosa più complesso e più profondo credo che cosa stai cercando di avere il processo lavoratore!

Quindi accedi alla macchina -> Sito GOTO SharePoint che autentica il tuo account (Authentication NT) -> Tanto di quanto esegui un lavoro che viene eseguito sotto il processo lavoratore w3wp.exe e penso che sia questo che si fa riferimento?

.

Un processo di lavoratore è il codice della modalità utente il cui ruolo è quello di elaborare le richieste, come le richieste di elaborazione per restituire una pagina statica, invocando un ISAPI estensione o filtro o eseguire un'interfaccia gateway comune (CGI) Gestore.

In entrambe le modalità di isolamento dell'applicazione, il processo del lavoratore è controllato dal servizio www. Tuttavia, in modalità di isolamento del processo lavoratore, a Il processo del lavoratore funziona come un file eseguibile denominato w3wp.exe e in IIS 5.0 Modalità di isolamento, un processo di lavoratore è ospitato da inetinfo.exe. Figura 2.2, che raffigura l'architettura per la modalità di isolamento IIS 5.0, utilizza una linea tratteggiata per suggerire la relazione tra il processo di lavorazione e il servizio www.

I processi dei lavoratori usano http.sys per ricevere richieste e inviare risposte usando http. I processi dei lavoratori eseguono anche il codice dell'applicazione, Come le applicazioni ASP.NET e i servizi Web XML. Puoi configurare IIS per eseguire più processi di lavoratore che servono applicazione diversa piscine contemporaneamente. Questo design separa le applicazioni per processo I limiti e aiuta a ottenere la massima affidabilità del server Web.

Per impostazione predefinita, i processi del lavoratore nella modalità di isolamento del processo lavoratore funzionano Sotto il conto del servizio di rete, che ha la sicurezza più forte (meno accessibile) compatibile con la funzionalità richiesta.

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/Library/IIS/29F53968-0115-451F-B26D-5AD58D87B5D1.mspx?mfr=TRUE

Così il processo del lavoratore IIS sarebbe quello che esegue il codice in basso, ma per fare questo in primo luogo devi essere autenticato come NT autenticato!

Il seguente link mostra una migliore comprensione!

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

Modifica

.

1) Possiamo concludere che le credenziali sotto il quale viene eseguito il codice è il 'NT AUTORITÀ \ IUSR' E se usiamo RWEP, allora l'utente è 'Webapp / SiteCol Amministratore utente ACOUNT'? Ad esempio, supponiamo di essere Accesso a un file sul server Quindi, verranno utilizzati i 2 account precedenti 2 Per accedere al file e non sull'account dell'utente registrato.

ok, penso che sia confuso?

Ci sono due fasi a questo ... L'utente accede alla macchina Sì? Quell'utente ha accesso ed è parte di "NT Autorità \ IUSR", quindi è in grado di accedere a risorse specifiche che richiedono di essere "NT autorità \ IUSR" all'interno di SharePoint ..... ora in esecuzione codice sul backend del server w

Sarò dentro w3wp.exe (come il codice .cs (all'interno del codice)) ... viene eseguito sotto il conto del pool di applicazione .. Ma questo non funziona, a meno che l'utente non connesso non sia parte di "NT Autorità \ IUSR".Non è uno o l'altro, più come entrambi allo stesso tempo utilizzati.

Conosci il registro dell'account che utilizza il tuo utilizzo dell'ovvio;) Ma per conoscere il w3wp.exe è necessario gotare il server e goto tast manager, guarda i processi e trova w3wp.exe ... dovresti vedere la colonna Avantiad esso con il nome utente che sarebbe l'account del pool di applicazioni Web.

.

2) Quale account viene utilizzato quando si accede alle risorse di SharePoint?È uno dei 2 sopra o le credenziali degli utenti registrati?

Le risorse di SharePoint sono accessibili dall'utente registrato.Come sopra.

Altri suggerimenti

1 dovrebbe sempre funzionare sotto l'account aziendale.

Per 2, 3, 4 e 5, dovresti essere in grado di furettare queste informazioni utilizzando questo codice:

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

Nota che questo non funzionerà correttamente se si dispone di un blocco delegato "RunwitheleVatedPrivileges". Piuttosto, se lo chiami all'interno del blocco delegato, avrai solo il nome dell'account che esegue il codice. Se è necessario fornire un nome utente in tal caso, chiamare l'oggetto 'SPConText' prima o dopo aver eseguito il blocco delegato. Non sarai in grado di passare direttamente l'oggetto nel blocco delegato ma dovrebbe essere in grado di estrarre ciò che ti serve in stringhe o cosa hai e inviare in.

Per il CSOM, supponendo che tu stia utilizzando JavaScript, questo blocco di codice viene da Questa pagina 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();
}
.

Dovrai avere SP.JS precaricato prima che questo script funzioni, ne spingela nella pagina Master o aggiungendo un blocco 'SharePoint: scriptlink' per questo nel markup.

Fondamentalmente, ciò che devi fare è questo:

    .
  1. Chiama il contesto client.
  2. Informi il contesto client cosa vuoi recuperare da esso.
  3. crea una chiamata asincrona al servizio web per ottenere tali informazioni.
  4. Impostare i metodi di richiamata per gestire i dati se la chiamata ASYNC ha esito positivo o meno.

    Spero che ti aiuti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top