2009-09-30 10 views
9

Desidero poter accedere in modo sicuro a un sistema senza dover digitare la password del nome utente da un PC Windows nella directory attiva. L'idea è che io (il software client, in esecuzione su un computer Windows connesso) abbia una sorta di token che dimostrerà al server che io sono chi dico di essere (il server parla con AD per verificare il token e la mia identità identità). Questo è possibile con .net 3?Posso utilizzare l'autenticazione basata su token con la directory attiva?

Lingua in uso in C#.

+0

Fare in modo che l'applicazione impersonifichi un Principal del dominio creato per tale scopo. –

+0

Stai cercando specificamente una risposta di programmazione, dato che il pacchetto Kerberos può essere configurato in modo specifico per abilitare questo tipo di comportamento. –

risposta

0

Se si accede a qualsiasi risorsa di rete (condivisioni di file, server SQL, ecc.), L'applicazione le eseguirà automaticamente come utente che la sta attualmente eseguendo. Vuoi fare qualcosa di più specifico? Se stai operando in un dominio, le autorizzazioni dovrebbero naturalmente seguirti a qualsiasi risorsa di rete che usi.

È possibile utilizzare .NET per impersonare altri utenti ed eseguire attività come tali, ma senza eseguire ulteriori passaggi, si agirà per conto dell'utente senza doverli effettuare nuovamente l'accesso.

0

su macchine Windows ogni thread di applicazione è in esecuzione con qualche token di sicurezza, per default questo è il token dell'utente corrente, quindi se si vuole leggere un file su macchina o rete la tua applicazione andrà lì con il tuo token, puoi eseguire applicazioni come altri utenti o servizi oppure impersonare il codice per agire come qualcun altro. se la usi come app asp.net, Internet Explorer scambierà i dati in background con iis (nella tua area intranet) in modo che il server sappia chi sei, ma per impostazione predefinita non verrà eseguito con le tue credenziali, questo può essere cambiato tramite web.config

3

Se ho capito correttamente la domanda, sembra che Kerberos potrebbe essere esattamente quello che stai cercando in questa istanza. L'autenticazione Kerberos (se supportata dall'ambiente di destinazione) consentirebbe questa modalità di autenticazione con ticket. Per una panoramica generale di come autenticazione Fornito con l'intermediazione con Kerberos funziona mi sento di raccomandare il riferimento MSDN su Brokered Authentication with Kerberos:

Brokered authentication with Kerberos http://i.msdn.microsoft.com/Aa480562.ch1_brokauthkerb_f02(en-us,MSDN.10).gif

Per quanto riguarda il codice C# a sostegno di questa, mi sento di raccomandare questo CodeProject article che si concentra su MS Web Servizi ma potrebbero fornire le basi per l'utilizzo in altri scenari.

10

Penso che dovresti davvero dare un'occhiata all'autenticazione basata sulla rivendicazione.

Microsoft ha fatto molto recentemente. Probabilmente avete sentito parlare di Geneva Server (ufficialmente chiamato ADFS 2.0 ora) e Geneva Framework (ufficialmente chiamato Windows Identity Foundation ora). L'idea è che l'autenticazione avvenga in un punto/server centrale (il Geneva Server o un Security Token Server (STS) in generale), l'utente autenticato riceve un token di sicurezza (basato su SAML 2.0) che presenta alla risorsa lui/lei vuole accedere. L'autenticazione può essere eseguita in vari modi, tra cui nome utente/password, smart card, certificati o - nel tuo caso - traducendo un token già presente come l'autenticazione di Windows (chiamata autenticazione integrata di Windows).

Il token è basato su SAML 2.0 (standard di settore importante per una buona interoperabilità con i prodotti STS di altri fornitori). Contiene indicazioni su una persona che viene utilizzata in un'applicazione o in una risorsa (compresi i servizi Web) per eseguire l'autorizzazione (concessione dei diritti). A tal fine è ovviamente essenziale che l'applicazione si fidi delle affermazioni fornite dal STS. D'altra parte, l'applicazione non ha bisogno di fare alcuna autenticazione a tutti.

Geneva Framework è una libreria (.NET) utilizzata per elaborare i token in un'applicazione. È abbastanza semplice da usare.

Per ulteriori informazioni si prega di dare un'occhiata ai white paper che danno una buona introduzione a questo argomento. Il sito ufficiale è here.

Naturalmente, ci sono molti altri problemi che vengono affrontati con questi concetti, che è davvero la parte interessante di IMHO. Ciò include Single Sign-On (SSO), Single Sign-On federato (su più confini dell'organizzazione), Delega (un'applicazione utilizza un servizio Web con i diritti dell'utente). Spero che questa informazione aiuti!

Acclamazioni

PS: Naturalmente questo non è affatto un problema di Microsoft. Esistono altri prodotti STS come Sun OpenSSO, Ping Identity e Thinktecture Identity Server che offrono funzionalità simili. Ho appena evidenziato la roba di Microsoft perché è una buona interoperabilità con AD e l'autenticazione di Windows menzionata nella domanda.

+0

I white paper citati sono: http://download.microsoft.com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/Introducing_Geneva_Beta1_Whitepaper.pdf e http://download.microsoft .com/download/7/D/0/7D0B5166-6A8A-418A-addd-95EE9B046994/GenevaFramework-WhitepaperForDevelopers-Beta2.pdf – Macross