Approcci per la gestione degli utenti AD all'interno del mio sistema di gestione delle risorse umane [chiuso]

-1

Voglio iniziare una nuova applicazione web HR basata su asp.net mvc-5 & Entity Framework. poiché è quasi il caso che gli utenti all'interno del sistema di gestione delle risorse umane esisteranno all'interno dell'AD e quando un nuovo utente si unirà alla nostra azienda creeremo un nuovo utente all'interno dell'AD, quindi il reparto risorse umane aggiungerà l'utente al sistema delle risorse umane. ma la mia domanda è come posso integrare la mia applicazione web con gli utenti di AD. Sto pensando al seguente approccio: -

  1. Per creare una tabella all'interno del mio sistema chiamato ADUsers, con questi campi; userID, FName, LName, Email.

  2. per definire un processo di sincronizzazione che verrà eseguito ogni giorno, che interrogherà tutti gli utenti di AD e popolerà di conseguenza la tabella DB. il processo di sincronizzazione aggiungerà nuovi utenti, eliminerà gli utenti rimossi, aggiornerà le informazioni dell'utente come definito nell'AD. In questo caso posso gestire più facilmente gli utenti all'interno del mio sistema. per esempio avrò un modulo di nome Persona, che dovrebbe mostrare tutte le Info Personali di Persona (come Fname, Nome, indirizzo email, ecc.) il loro conteggio delle ferie annuali, la data di assunzione, il congedo per malattia che sono specifiche delle risorse umane ecc ...

Quindi puoi consigliare questo approccio per favore?

    
posta john Gu 15.12.2014 - 14:14
fonte

1 risposta

1

Probabilmente avrai bisogno di tre tabelle: Le tabelle utente con una chiave primaria e il solito nome, cognome ecc Tabella ruoli con ruoli specifici per la tua applicazione (ad es. Amministratore, Utente avanzato, Utente, sola lettura) UserRoles con la chiave primaria dell'utente, la chiave primaria dei ruoli, la data di creazione, la data dell'ultima modifica, abilitata (NUMBER (1) predefinito 1 con il vincolo di controllo che questo campo può avere solo i valori di 0 o 1

Come hai indicato, avrai bisogno di un pacchetto / procedura per interrogare Active Directory per gli utenti che hanno ruoli che sono di interesse per la tua applicazione. Sono richiesti i soliti metodi di inserimento / aggiornamento. Tieni presente che non desideri mai eliminare un utente per un'applicazione Intranet se è presente una registrazione, quindi quando qualcuno lascia la tabella utente viene aggiornato per indicare che è abilitato = 0.

Si indica che si sta utilizzando SQL server, il che rende più semplice rispetto ad altri database. Una query come questo ti consentirà di iniziare:

SELECT * FROM OpenQuery ( ADSI, 'SELECT displayName, telephoneNumber, mail, mobile, facsimileTelephoneNumber FROM ''LDAP://DOMAIN.com/OU=Players,DC=DOMAIN,DC=com'' WHERE objectClass = ''User'' ') AS tblADSI ORDORDER BY displayname

Tenere presente che ci sono molti campi in Active Directory. Meno ne chiedi, meglio. A seconda di come si accede a AD, è possibile che venga trovata una limitazione del record di non più di 1000 record. I campi che menzioni come "conteggio annuale delle ferie, data di assunzione, congedo per malattia" dovrebbero essere in tabelle separate in quanto la funzionalità non è connessa ad Active Directory

Non conosco nessun altro modo pratico a parte un lavoro di sincronizzazione. Il tuo sistema e il tuo annuncio sono separati e tu non vuoi legare i due insieme da vicino. La maggior parte dei dati AD viene descritta come "modifica lenta", quindi un lavoro di sincronizzazione su intervalli di cinque minuti funziona per molte applicazioni.

1) Hai chiesto se questo è un approccio valido a:

  • crea una nuova tabella DB all'interno del mio sistema chiamato ADUsers con queste colonne; UserID, Fname, Lname, Email address.
  • definire un processo di sincronizzazione che interrogherà gli utenti AD e popolerà la tabella ADUsers di conseguenza

    • Ho visto questo approccio adottato in numerosi sistemi Windows Web e Client Server

2) cosa intendi per "Il tuo sistema e il tuo annuncio sono separati e non vuoi legare insieme i due"

  • vuoi ridurre al minimo i punti di errore. Il sistema dovrebbe funzionare quando il processo di sincronizzazione non funziona a causa di un errore imprevisto. Active Directory dovrebbe funzionare se la tua procedura di sincronizzazione fallisce.
risposta data 15.12.2014 - 14:48
fonte