Domanda

Sto lavorando su un sito in cui gli utenti possono accedere per ottenere informazioni più private.Il mio cliente ha un altro sito dove utilizza autenticazione per accedervi.

Quello che vogliono fare è avere a button sul sito sto lavorando sotto l'area privata che li invierà al non autenticato sito, ma non richiedono loro di accedere a quel sito invece di passare il file nome utente E parola d'ordine che usavano per accedere al mio sito all'altro sito per loro.

È possibile farlo?e come lo realizzerei?Esiste un modo migliore per farlo?

È stato utile?

Soluzione

Ecco una teoria (non testata), i cui dettagli dipenderanno in gran parte dai tipi di autenticazione accettati dal sito Sharepoint.Affronterò Di base, poiché è il più semplice.

Scriverai del codice JavaScript che utilizza XMLHttpRequest per inviare una richiesta al sito di Sharepoint e aggiungerai il nome utente e la password alle intestazioni della richiesta.Il loro browser eseguirà quel JavaScript e accederà al sito di Sharepoint.

Ora, quando fanno clic sul collegamento, il browser del client dovrebbe avere le credenziali memorizzate nella cache da inviare al sito di Sharepoint.

Possibili problemi:

  • XMLHttpRequest non consente l'autenticazione tra domini
  • Il browser e XHR non condividono le informazioni di autenticazione
  • Sharepoint e XHR non riescono a concordare il metodo di autenticazione

Un'altra opzione è quella di eseguire il proxy della connessione a Sharepoint, che consente di accedere al lato server (ignorando le limitazioni XHR e la sicurezza del browser), ma richiedendo carico sul server e possibilmente alcuni problemi di destinazione dell'URL.

Altri suggerimenti

In che modo l'altro sito convaliderà il tuo nome utente e la tua password?

Idealmente il tuo sito non dovrebbe nemmeno ricordare la password dell'utente per poterla passare a un altro sito (memorizzi gli hash della password, non la password stessa, e usi solo la password effettiva durante la convalida).

Cosa succederebbe se il tuo sito fornisse un token all'utente, che presenta quel token al nuovo sito, che a sua volta chiede al tuo sito di convalidare il token.Fondamentalmente il secondo sito si fida di te per dire loro chi è l'utente.

Tutto ciò si interrompe se il secondo sito utilizza effettivamente gli account Windows per scopi diversi dal semplice recupero di un nome utente (ad esempio le autorizzazioni sul file sottostante), poiché in questo scenario l'utente non ha effettuato l'accesso come account utente Windows effettivo.

Se è necessario autenticarsi sul secondo sito, potrebbe essere necessario generare un nuovo thread e chiamare l'API LogonUser di Windows.Una volta ottenuto il token di sicurezza, assegnalo al nuovo thread ed effettua la connessione tramite quel thread.

LogonUser richiede privilegi avanzati e non è un codice gestito, quindi ci sono alcuni intoppi piuttosto gravi nell'usarlo.Ma questa è stata l'unica soluzione che sono riuscito a trovare per far sì che un sito autenticato tramite moduli comunicasse con un servizio/sito autenticato di Windows.

Spero che questo ti aiuti.

Si tratta di un ambiente Intranet?In tal caso non dovrebbero comunque effettuare il login.Se SharePoint è configurato utilizzando "Autenticazione integrata" e il sito è elencato come sito attendibile in IE, il browser utilizzerà la credenziale di rete per l'accesso automatico.Questo può essere configurato Firefox anche.

Gli utenti non potranno connettersi direttamente al sito NTLM senza ricevere una verifica NTLM.Scriverei quello che sarebbe effettivamente un proxy per il sito NTLM;ovvero il tuo codice lato server avrà le credenziali per connettersi al sito NTLM e passerà attraverso le richieste dei tuoi utenti.

Come hai detto, è SharePoint (sputo) tieni presente che SharePoint ha una serie di servizi Web che potresti utilizzare per questo (invece di eseguire lo screen-scraping).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top