Για να εξαφανίσεις το userName/password:
1. Φτιάξε ένα domain account και δώσε τα απαραίτητα δικαιώματα στον SQL.
2. Χρησιμοποίησε αυτό το account για να τρέξεις το ASP.NET worker process (ρυθμίζεις το machine.config, section <processModel> ).
3. Μην παραλείψεις να δώσεις στο account ότι άλλα δικαιώματα χρειάζεται για να τρέχει η ASP.NET εφαρμογή (τα ίδια με το APSNET account + ότι άλλα χρειάζεται, π.χ σε directories εντός site).
4. Αποθηκεύεις userName/password αυτού του account στο registry
Περισσότερα στο link (κάνε κλικ στο "Process Identity for ASP.NET").
Το παραπάνω μπορεί να λειτουργήσει επειδή ο web server τρέχει μόνο αυτή την εφαρμογή (αναφέρεις ότι είναι dedicated).
Αλλοιώς, κάνεις fixed identity impersonation, για την εφαρμογή σου (στο web.config - δες το link).
Άλλη λύση είναι να κρατήσεις στο web.config ένα μερικό (partial, για να είμαστε .Net 2.0 compatible
) connection string και να το συμπληρώνεις με userName/password που τα αποθηκεύεις κάπου (DPAPI ?). Δεν το έχω κάνει, μου φαίνεται κάπως φασαρία...
Η πλήρης εξαφάνιση απαιτεί hard-coding του connection string στην εφαρμογή Web, πράγμα που θα δημιουργήσει πρόβλημα σε μετακόμιση της DB.
Η λογική του πλήρους impersonation θα είναι καταστροφική από διάφορες άποψεις (πολλαπλά connections στον SQL, άδειες χρήσης, διαχείριση δικαιωμάτων κλπ). Εάν απαιτείται, γίνεται (το παραπάνω link λέει πως).
Τώρα, το θέμα της ταυτοποίησης & εκχώρησης δικαιωμάτων (authentication & authorization) για την web εφαρμογή.
- Αναφέρεις "smart client". Μήπως εννοείς "web client"; Έχεις μιά απλή ASP.NET εφαρμογή ή κάτι περισσότερο πολύπλοκο; Web Services & smart client με caching δεδομένων;
- Πως συνδέονται οι internet χρήστες; Τι χρησιμοποιούν; Browser; Windows clients, PocketPC clients;
- Έχεις δυνατότητα SSL, VPN;
Υπάρχουν πολλά σενάρια, θα πρέπει να δώσεις περισσότερες πληροφορίες.
Άρης
Aris