Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Windows Forms Authentication

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος epp1123 στις 14-04-2009, 23:03. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-04-2009, 14:34 50027

    Windows Forms Authentication

    Καλησπέρα τέκνα του "Τελεία Δίκτυο Πλαίσιο", όπως θα έλεγε και κάποιος που μεταφράζει τα πάντα στα ελληνικά. Θα ήθελα να σας ρωτήσω το εξής:

    Όταν φτιάχνετε μία Win Form εφαρμογή και θέλετε να φτιάξατε authentication πως το φτιάχνετε;;;; Έψαχνα στο google χτες αλλά δε μπορώ να πω πως βρήκα μία πάγια τακτική όπως είναι στην asp.net με το membership. Χρησιμοποιείτε το IPrincipal, παίζετε με System.Security κτλ ή αναπτύσσετε εντελώς δικές σας λύσεις;;;

    Ευχαριστώ.
  •  11-04-2009, 19:09 50031 σε απάντηση της 50027

    Απ: Windows Forms Authentication

    Μπορείς και μέσα από win forms να χρησιμοποιήσεις τον μηχανισμό του ASP.NET. Δες τα Client Application Services

    Από εκεί και πέρα, καθώς το security είναι ευαίσθητο θέμα, αν δεν θες να παίξεις με Client Application Services καλύτερα να χρησιμοποιήσεις κάποιον τυποποιημένο κώδικα όπως το Security Application Block 


    Vir prudens non contra ventum mingit
  •  14-04-2009, 15:38 50092 σε απάντηση της 50027

    Απ: Windows Forms Authentication

    Αν διευκρινήσεις τι ακριβώς θέλεις να κάνει ίσως μπορέσω να σε βοηθήσω. Θέλεις να κάνεις authedication δικούς σου χρήστης που είναι σε κάποιο πίνακα σε μια βάση δεδομένων ή θέλεις να κάνεις authedication για χρήστες ενός Domain Controllor?

     


    breadcrumbs.gr
  •  14-04-2009, 16:29 50093 σε απάντηση της 50092

    Απ: Windows Forms Authentication

    Το να βρεις ποιός είναι ο χρήστης που εκτελεί μία εφαρμογή είναι πολύ εύκολο, καθώς κάθε εφαρμογή Windows τρέχει ως ο χρήστης που την ξεκίνησε. Έτσι μπορείς να πάρεις τον χρήστη π.χ. από το WindowsIdentity.GetCurrent(). Δεν υπάρχει κανένας λόγος να αποθηκεύσεις ονόματα και passwords σε βάση ή οπουδήποτε αλλού.

    Αυτό που χρειάζεσαι στην πραγματικότητα είναι το Authorization, δήλαδή, ο χρήστης ΑΒΓ έχει δικαίωμα να εκτελέσει την εφαρμογή? Έχει δικαίωμα να εκτελέσει τη λειτουργία ΧΨΩ? Ένας τρόπος να το κάνεις αυτό, τον οποίο αγαπάνε και οι administrators, είναι να ορίσεις κάποια Windows Groups για τα διαφορετικά επίπεδα πρόσβασης στην εφαρμογή. Για παράδειγμα, μπορείς να ορίσεις τα group MyApp Administrators, MyApp Simple Users, MyApp Power Users και να ελέγξεις στον κώδικα αν ο χρήστης ανήκει στο ρόλο αυτό, με την WindowsPrincipal.IsInRole().

    Οι administrators αγαπάνε αυτό τον τρόπο καθώς μπορούν να ελέγξουν τις προσβάσεις των χρηστών από ένα και μόνο σημείο αντί να πρέπει να πάνε σε κάθε εφαρμογή και να φτιάξουν ξεχωριστά permissions, χρησιμοποιώντας το UI της κάθε εφαρμογής. Άσε που μπορούν να φτιάξουν και scripts για να περνάνε τα κατάλληλα δικαιώματα σε νέους χρήστες εύκολα και γρήγορα.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  14-04-2009, 19:44 50094 σε απάντηση της 50093

    Απ: Windows Forms Authentication

    Μάλιστα, μάλιστα σας ευχαριστώ για όλες τις πληροφορίες. Τώρα θα σας αναπτύξω την αρχική μου σκέψη που νόμιζα ότι είχατε καταλάβει με το αρχικό μου post. Έστω ότι έχω 6 χρήστες που κάθε φορά που ξεκινάει η εφαρμογή θα πρέπει να έρχονται αντιμέτωποι με μία login screen. Και έστω ότι τα 4/6 των χρηστών είναι απλοί χρήστες και οι 2 άλλοι είναι admins. Εκεί είναι προτιμότερο ποια λογική να ακολουθήσουμε; Η λογική που πρότεινε ο κύριος Καναβός είναι πολύ ωραία και δεν την ήξερα. Αλλά αν έστω, λέω έστω, καθαρά ακαδημαϊκά, πρέπει να το κάνεις με βάση δεδομένων, username, password, σαν την asp.net κτλ εκεί προτείνεται η λύση του Keleman;;

    Ευχαριστώ!
  •  14-04-2009, 20:01 50095 σε απάντηση της 50094

    Απ: Windows Forms Authentication

    Γιατί να το κάνεις σε βάση, και γιατί να εμφανίσεις login screen? Αν δεν υπάρχει ουσιαστικός λόγος, θα πρέπει να το αποφύγεις.

    Μπορώ να σκεφτώ τρεις λόγους να παρακάμψεις το windows authentication, δύο σοβαρούς και ένα όχι τόσο σοβαρό:

    1. Ο όχι τόσο σοβαρός. Το δίκτυο δεν έχει domain. Όμως δεν υπάρχει  εταιρικό δίκτυο χωρίς domain. Workgroups συναντάει κανείς μόνο σε δικτυάκα των 3-4 μηχανών ή στο σπίτι.
    2. Ο σοβαρός. Οι χρήστες δεν έχουν δικά τους windows accounts αλλά μπαίνουν με το username/password του "μηχανήματος". Κοινός, γίνεται αχταρμάς. Σε αυτή την περίπτωση είσαι αναγκασμένος να μπ@$7@rέψεις την εφαρμογή σου για να αντιμετωπίσεις το μπάχαλο που έκανε κάποιος admin πριν από ΧΧΧ χρόνια.
    3. Ο άλλος σοβαρός. Υπάρχει ανάγκη οι χρήστες να μπορούν να χρησιμοποιήσουν άμεσα οποιοδήποτε μηχάνημα με τα δικά τους credentials.
      Αυτό αντιμετωπίζεται με δύο τρόπους. Είτε χρησιμοποιείς ένα εξωτερικό μηχανισμό όπως αυτούς που περιγράφει ο Kelman, ή
      μπορείς να κάνεις Impersonate ένα χρήστη με την .... Impersonate. Σε αυτή την περίπτωση όμως ο κώδικας σου πρέπει να τρέχει με elevated priviledges, κάτι που ίσως να μην είναι δυνατόν.

    Σε κάθε περίπτωση, έχει νόημα να χρησιμοποιήσεις τα .NET services για δύο λόγους:

    1. Παρέχουν επιπλέον δυνατότητες πέρα από το απλό authentication/authorization, όπως user profiles
    2. Παρέχουν ένα τρόπο να κάνεις το authentication, authorization ανεξάρτητο από την πραγματική υλοποίηση. Για παράδειγμα, αντί να χρησιμοποιήσεις βάση, μπορείς να χρησιμοποιήσεις το Active Directory Application Mode για να υλοποιήσεις το δικό σου μίνι-AD για την εφαρμογή σου. Ή να χρησιμοποιήσεις ένα LDAP server αν πχ. η εταιρεία χρησιμοποιεί κάποιο single sign-on προϊόν, και θέλεις να χρησιμοποιήσεις τα κοινά accounts και στην εφαρμογή σου.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  14-04-2009, 20:14 50096 σε απάντηση της 50095

    Απ: Windows Forms Authentication

    Το τελευταίο post ήταν και το πιο διαφωτιστικό. Και ναι η σκέψη μου, που νόμιζα ο μπούφος ότι την είχα αναφέρει, ήταν για εφαρμογή που θα είναι εγκατεστημένη σε 1 πισί, θα κάθονται όλοι οι χρήστες στο ίδιο pc αλλά ο καθένας θα πρέπει να έρθει αντιμέτωπος με κάποιο authentication / authorization. 
  •  14-04-2009, 22:35 50097 σε απάντηση της 50096

    Απ: Windows Forms Authentication

    Οι χρήστες αυτοί δεν θα έχουν δικά τους login στο μηχάνημα?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  14-04-2009, 23:03 50098 σε απάντηση της 50097

    Απ: Windows Forms Authentication

    Θα μπαίνει στα XP κατευθείαν. Δηλαδή ένας λογαριασμός για τα windows,  administrator χωρίς password
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems