WCF una connessione Entity Framework

1

Ho oltre 100 utenti su un'applicazione Silverlight che utilizza WCF e framework di entità.

Ognuno ha il proprio database e qui viene il mio problema.

Come faccio ad assicurarmi che solo l'utente possa accedere al suo database tramite WCF. Devo inviare il connectiontring ogni volta che effettuo una chiamata al servizio o?

    
posta user1741807 02.11.2012 - 17:18
fonte

2 risposte

1

dovresti avere una qualche forma di meccanismo di autenticazione, quindi sai chi è l'utente connesso al tuo servizio web di back-end. Quindi puoi cercare l'ID utente con una configurazione di DB 'globale' per ottenere la stringa di connessione - così l'utente "Dave" si connette, cerchi nella lista dei DB per vedere che il DB di Dave è "DB_001gh443a" (o qualunque cosa sia è).

    
risposta data 02.11.2012 - 19:25
fonte
1

L'invio della stringa di connessione al servizio non sarebbe una buona idea. Il chiamante non dovrebbe avere alcuna idea se c'è un database o un milione (a meno che non si stia creando qualcosa di veramente strano, come un front-end del database, sulla falsariga di phpMyAdmin).

Sul lato Entity Framework delle cose, è possibile modificare la connessione quando viene creato il contesto. Quindi, ad esempio:

    public class EFContext : DbContext
    {
        public EntityFrameworkSession()
            : base(DetermineConnection(), true)
       {
       }

       private static DbConnection DetermineConnection()
       {
           // create an ADO.NET connection here based on your criteria
       }
    }

Quale lascerebbe aperta la connessione su come memorizzare / recuperare la connessione. Ci sono alcuni modi per gestirlo, iniziando dal modo più semplice (memorizzare più stringhe di connessione nel tuo web.config e tirare quello che si applica all'utente corrente) a metodi più sofisticati (come mettere tutte le tue stringhe di connessione in un database crittografato ).

Essendo il tipo paranoico, sarei più propenso a fare quest'ultimo.

Il metodo che ha senso per l'autenticazione di un utente (e, quindi, avere le informazioni per determinare quale connessione al database utilizzare) dipende in gran parte dalla configurazione. Alcuni buoni collegamenti sull'impostazione di WCF includono:

  1. link
  2. link

Dato che stai usando WCF, userei Active Directory se è del tutto fattibile. L'autenticazione di Windows tende a giocare molto bene con la sicurezza .NET.

    
risposta data 02.11.2012 - 20:10
fonte

Leggi altre domande sui tag