Procedura: abilitare l'autenticazione in un'app client HTML
In LightSwitch è possibile rendere più sicura l'applicazione client HTML impedendo la lettura, la modifica o l'eliminazione di dati a utenti non autorizzati. Se si implementa l'autenticazione, gli utenti devono dimostrare la propria identità prima di accedere all'applicazione.
Nota
Il processo per impostare le autorizzazioni è diverso per i client Silverlight. Vedere Procedura: abilitare l'autenticazione in un'app client Silverlight.Le applicazioni LightSwitch abilitate per SharePoint utilizzano l'autenticazione SharePoint per il controllo di accesso.
In caso di più utenti, è inoltre possibile gestire l'accesso più facilmente creando ruoli utente con diversi livelli di accesso a schermate e dati particolari, quindi assegnando a ciascun utente il ruolo appropriato. Ad esempio, in un'applicazione per la gestione degli stipendi si potrebbe consentire ai dipendenti di visualizzare, ma non di modificare, le informazioni relative al proprio stipendio. Tuttavia, un supervisore incaricato degli stipendi potrebbe disporre dell'autorizzazione necessaria per visualizzare e modificare le informazioni sui dipendenti. Ai dipendenti verrebbe assegnato il ruolo di dipendente e al supervisore il ruolo di supervisore.
Anche le autorizzazioni possono essere gestite più facilmente aggiungendo gli utenti a gruppi di sicurezza in Active Directory e assegnando, successivamente, autorizzazioni ai gruppi in questione. Poiché l'appartenenza e le autorizzazioni vengono ereditate, è possibile concedere e negare autorizzazioni non solo per un gruppo, ma anche per tutti i sottogruppi apportando un'unica modifica. Ad esempio, è possibile aggiungere Bob al gruppo Sales in Active Directory. Se Sales è un sottogruppo di Marketing, qualsiasi autorizzazione concessa a Marketing viene concessa anche a Bob.
Autenticazione e autorizzazione possono essere implementate nel server tramite codice Visual Basic o C#. Per implementarle a livello di schermata, è necessario aggiungere query sul server e basare le schermate HTML su tali query, quindi scrivere codice JavaScript per abilitare o disabilitare le schermate basate su autorizzazioni. Sarà inoltre necessario aggiungere un client Silverlight per amministrare utenti e ruoli. Le schermate Utenti e Ruoli basate su Silverlight sono disponibili alla persona definita come Amministratore applicazione durante la pubblicazione.
Autenticazione
Il primo passaggio per la protezione dell'applicazione consiste nell'abilitazione dell'autenticazione. È possibile utilizzare l'autenticazione basata su form o l'autenticazione di Windows. L'autenticazione basata su form viene gestita dall'applicazione stessa e un utente deve fornire un nome utente e una password per accedere all'applicazione. Nell'autenticazione di Windows per l'autenticazione dell'utente dell'applicazione vengono utilizzate le credenziali utilizzate per accedere al computer in cui viene eseguita l'applicazione e non è richiesto alcun nome utente o password ulteriore. In entrambi i casi, un amministratore dell'applicazione gestisce un elenco di utenti autorizzati. Nell'autenticazione basata su form, l'amministratore gestisce anche le password crittografate.
Per abilitare l'autenticazione
In Esplora soluzioni aprire il menu di scelta rapida per il nodo Proprietà, quindi scegliere Apri.
In Progettazione applicazione scegliere la scheda Controllo di accesso.
Nell'elenco Selezionare il tipo di autenticazione da utilizzare scegliere Usa autenticazione di Windows oppure Usa autenticazione basata su form.
Se è stato selezionato Usa autenticazione di Windows, scegliere il pulsante di opzione Consenti solo gli utenti specificati nello schermata Utenti dell'applicazione oppure il pulsante di opzione Consenti qualsiasi utente Windows autenticato.
Nell'applicazione verrà ora richiesto agli utenti di fornire credenziali per l'accesso.
Autorizzazioni
Il passaggio successivo per la protezione dell'applicazione client HTML consiste nella creazione delle autorizzazioni. In primo luogo, definire un oggetto relativo all'autorizzazione in Progettazione applicazione. Successivamente, è possibile fare riferimento all'oggetto nel codice, in uno dei metodi Can, ad esempio <Entity>CanUpdate. Il codice presente in questi metodi consente in genere di controllare se il ruolo o l'utente corrente dispone dell'autorizzazione necessaria e quindi di eseguire l'operazione solo l'autorizzazione viene convalidata.
Per effettuare il test del codice, eseguire l'applicazione sia come utente che dispone dell'autorizzazione necessaria sia come utente che ne è privo. Impostando le autorizzazioni di debug, è possibile rappresentare un utente quando si esegue il test o il debug dell'applicazione.
Per creare un'autorizzazione
In Esplora soluzioni aprire il menu di scelta rapida per il nodo Proprietà, quindi scegliere Apri.
In Progettazione applicazione scegliere la scheda Controllo di accesso.
Nella colonna Nome della griglia Definire o selezionare le autorizzazioni da utilizzare per il debug scegliere <Aggiungi nuova autorizzazione>, quindi immettere un nome a livello di codice per l'autorizzazione.
Il nome deve iniziare con un carattere alfabetico e può contenere solo caratteri alfabetici o numerici oppure sottolineature.
Nella colonna Nome visualizzato immettere il nome dell'autorizzazione come si desidera venga visualizzato nella schermata che l'amministratore dell'applicazione utilizzerà per l'assegnazione dei ruoli.
Nella colonna Descrizione immettere una descrizione per l'autorizzazione.
Per abilitare le autorizzazioni per il debug
In Esplora soluzioni aprire il menu di scelta rapida per il nodo Proprietà, quindi scegliere Apri.
In Progettazione applicazione scegliere la scheda Controllo di accesso.
Nella griglia Definire o selezionare le autorizzazioni da utilizzare per il debug scegliere l'autorizzazione che si desidera abilitare per l'esecuzione del debug, quindi selezionare la casella di controllo Concesso per il debug.
Protezione del server
Il passaggio successivo consiste nell'aggiungere codice per verificare la presenza di autorizzazioni a livello server tramite metodi di controllo di accesso. È possibile scrivere codice in un metodo di entità, ad esempio CanUpdate, oppure in un metodo di query, ad esempio CanExecute. Si consiglia di applicare sempre la protezione a livello server utilizzando i metodi di controllo di accesso per proteggere i dati nel sistema.
Per scrivere codice per impostare autorizzazioni per un'entità
In Esplora soluzioni aprire il menu di scelta rapida per un nodo dell'entità, quindi scegliere Apri.
Verrà visualizzato Entity Designer per l'entità in questione.
Nella barra Prospettiva di Entity Designer scegliere Server.
Espandere l'elenco Scrivi codice e scegliere un metodo EntityName**_Can**Operation in cui EntityName è il nome dell'entità e Operation è il nome dell'operazione per cui scrivere il codice.
Nota
I metodi disponibili variano in base al contesto.Alcuni esempi sono CanInsert, CanDelete e CanUpdate.
Nell'Editor di codice immettere il codice desiderato nel metodo EntityName**_Can**Operation.
Il codice per consentire a un utente di aggiornare un'entità Products basata su un'autorizzazione denominata Can_Edit_Products, ad esempio, sarà analogo al seguente:
Private Sub Products_CanUpdate(ByRef result As Boolean) If Application.User.HasPermission(Can_Edit_Products) Then result = True Else result = False End If End Sub
private void Products_CanUpdate(ref bool result) { if (Application.User.HasPermission(Can_Edit_Products)) { result = true; } else { result = false; } }
Per scrivere codice per impostare autorizzazioni per una query
In Esplora soluzioni aprire il menu di scelta rapida per un nodo della query, quindi scegliere Apri.
Verrà visualizzato Progettazione query per la query in questione.
Nell'elenco Scrivi codice scegliere il metodo QueryName**_CanExecute**, dove QueryName è il nome della query.
Nell'Editor di codice immettere il codice desiderato nel metodo QueryName**_CanExecute**.
Il codice per consentire a un utente di eseguire un a query ViewProducts basata su un'autorizzazione denominata Can_View_Products, ad esempio, sarà analogo al seguente:
Private Sub ViewProducts_CanExecute(ByRef result As Boolean) If Application.User.HasPermission(Can_View_Products) Then result = True Else result = False End If End Sub
private void ViewProducts_CanExecute(ref bool result) { if (Application.User.HasPermission(Can_View_Products)) { result = true; } else { result = false; } }
Protezione del client
Uno scenario comune consiste nel limitare l'accesso a una schermata solo a utenti autorizzati. Tutti gli utenti potrebbero ad esempio visualizzare informazioni sui prezzi, ma solo gli utenti del reparto Contabilità possono modificarle. Per eseguire questa operazione in una schermata di un client HTML, è necessario innanzitutto creare una query che controlli le autorizzazione nel metodo CanExecute, quindi scrivere codice JavaScript nel metodo created della schermata per abilitare o disabilitare gli elementi di interfaccia utente.
Nota
Per un esempio di codice per il controllo dell'autorizzazione, vedere "Per scrivere codice per impostare autorizzazioni per una query" in precedenza in questo argomento.
Per aggiungere una query a una schermata
In Progettazione schermata scegliere il pulsante Aggiungi elemento di dati sulla barra degli strumenti.
Nella finestra di dialogo Aggiungi elemento di dati scegliere il pulsante di opzione Query, quindi scegliere la query nell'elenco.
Nell'albero del contenuto scegliere l'elemento dell'interfaccia utente da abilitare o disabilitare. Si tratta in genere del pulsante che avvia la schermata a cui si desidera limitare l'accesso.
Nella finestra di Proprietà annotare la proprietà Nome per l'elemento dell'interfaccia utente. Tale proprietà sarà necessaria per scrivere il codice.
Per scrivere codice per impostare autorizzazioni per una schermata
In Progettazione schermata scegliere il nodo Schermata, quindi sulla barra degli strumenti espandere l'elenco Scrivi codice e scegliere created.
Nell'Editor di codice immettere il codice nel metodo ScreenName**_created**.
Il codice per abilitare o disabilitare un pulsante denominato Edit basato su una query denominata EditProducts, ad esempio, sarà analogo al seguente:
myapp.ViewProducts.created = function (screen) { screen.getEditProducts().then (function success() { screen.findContentItem("Edit").isEnabled = true; }, function error() { screen.findContentItem("Edit").isEnabled = false; }) };
Il codice chiama la query sulla schermata e avrà esito negativo se l'utente non è autorizzato a eseguire l'operazione, richiamando pertanto il gestore errori. Il pulsante viene abilitato solo se l'autorizzazione dell'utente è verificata. Per nascondere il pulsante anziché disabilitarlo, utilizzare isVisible invece di isEnabled.
Nota
Questo metodo disabiliterà inoltre il pulsante se la query ha esito negativo per un altro motivo.Per una soluzione più affidabile che richiede codice più complesso, vedere il post del blog sull'utilizzo di ServerApplicationContext e WebAPI in LightSwitch per ottenere le autorizzazioni utente.
Amministrazione
Il passaggio finale per abilitare l'autenticazione consiste nell'aggiunta delle schermate necessarie per l'amministrazione dell'applicazione. In un'applicazione client HTML è necessario aggiungere un client Silverlight alla soluzione. In questo modo vengono fornite le schermate Utenti e Ruoli necessarie per l'amministrazione. L'applicazione e le schermate del client Silverlight sono visibili solo all'utente designato come amministratore predefinito durante la pubblicazione oppure a tutti gli utenti a cui in seguito sono state concesse le autorizzazioni amministrative.
Per aggiungere schermate di amministrazione
In Esplora soluzioni aprire il menu di scelta rapida per il nodo dell'applicazione di livello superiore, quindi scegliere Aggiungi client.
Nella finestra di dialogo Aggiungi client scegliere l'icona Client desktop.
Nella casella di testo Nome client immettere un nome per il client, ad esempio Administration, quindi scegliere OK.
Per definire un amministratore
Seguire la procedura indicata in Amministrazione di un'applicazione LightSwitch.
Importante
Se l'autenticazione viene abilitata e non è stato stabilito un gestore predefinito, non sarà possibile accedere all'applicazione pubblicata.
Vedere anche
Attività
Amministrazione di un'applicazione LightSwitch
Procedura: abilitare l'autenticazione in un'app client Silverlight
Altre risorse
Schermate del client HTML per applicazioni LightSwitch
Utilizzo di ServerApplicationContext e WebAPI in LightSwitch per ottenere le autorizzazioni utente