Porady: Włączanie uwierzytelniania w aplikacji klienta HTML

W LightSwitch można zapewnić większe bezpieczeństwo aplikacji klienckiej HTML poprzez uniemożliwienie nieautoryzowanym użytkownikom odczytywania, zmieniania lub usuwania danych.W przypadku zaimplementowania uwierzytelniania użytkownicy muszą potwierdzić swoją tożsamość, zanim uzyskają dostęp do aplikacji.

[!UWAGA]

Proces ustawiania uprawnień różni się dla klientów Silverlight — zobacz Porady: Włączanie uwierzytelniania w aplikacji klienta Silverlight.Użyj uwierzytelniania programu SharePoint do kontroli dostępu do aplikacji LightSwitch, w których włączono obsługę programu SharePoint.

Jeśli masz wielu użytkowników, możesz łatwiej zarządzać dostępem, tworząc role użytkowników, które mają różne poziomy dostępu do poszczególnych ekranów i danych, a następnie przypisując każdemu użytkownikowi odpowiednie role.Na przykład, aplikacja do obsługi płac może zezwalać pracownikom na wyświetlanie, ale nie na zmienianie ich informacji o płacach.Jednakże, nadzorca zajmujący się wynagrodzeniami, może posiadać uprawnienie do wyświetlania i zmiany informacji o pracownikach.Pracownikom zostanie przypisana rola Employee, a nadzorcy rola Supervisor.

Możesz także zarządzać uprawnieniami w łatwiejszy sposób, dodając użytkowników do grup zabezpieczeń w usłudze Active Directory, a następnie przypisując uprawnienia do tych grup.Ponieważ członkostwo i uprawnienia są dziedziczone, możesz udzielić i odmówić uprawnień nie tylko grupie, ale również wszystkim jej podgrupom, poprzez pojedynczą zmianę.Na przykład, możesz dodać użytkownika Bob do grupy Sales w usłudze Active Directory.Jeśli Sales jest podgrupą grupy Marketing, to wszelkie uprawnienia udzielone grupie Marketing, zostaną również udzielone użytkownikowi Bob.

Uwierzytelnianie i autoryzacja mogą zostać zaimplementowane na serwerze przez napisanie kodu języka Visual Basic lub C#; do jej wdrożenia na poziomie ekranu musisz dodać zapytania na serwerze i oprzeć ekrany HTML na tych zapytaniach, a następnie napisać kod JavaScript włączający lub wyłączający ekrany na podstawie uprawnień.Musisz także dodać klienta Silverlight, aby administrować użytkownikami i rolami.Oparte na technologii Silverlight ekrany Użytkownicy i Role będą dostępne dla osoby wyznaczonej podczas publikowania jako Administrator aplikacji.

Uwierzytelnianie

Pierwszym krokiem zabezpieczania aplikacji jest włączenie uwierzytelniania.Możesz użyć uwierzytelniania formularzy lub uwierzytelniania systemu Windows.Uwierzytelnianie formularzy jest zarządzane przez samą aplikację, a użytkownik musi podać nazwę użytkownika i hasło, aby uzyskać dostęp do aplikacji.W przypadku uwierzytelniania systemu Windows poświadczenia, które zostały użyte do logowania się na komputerze, na którym uruchomiona jest aplikacja, zostaną użyte do uwierzytelniania użytkownika aplikacji i żadna dodatkowa nazwa użytkownika ani hasło nie są wymagane.W obu przypadkach administrator aplikacji utrzymuje listę autoryzowanych użytkowników; w przypadku uwierzytelniania formularzy, administrator utrzymuje równie zaszyfrowane hasła.

Aby włączyć uwierzytelnianie

  1. W Eksploratorze rozwiązań otwórz menu skrótów dla węzła Właściwości, a następnie wybierz Otwórz.

  2. W oknie Projektant aplikacji wybierz kartę Kontrola dostępu.

  3. Na liście Wybierz używany typ uwierzytelniania:, wybierz Użyj uwierzytelniania systemu Windows albo Użyj uwierzytelniania formularzy.

    W przypadku wybrania opcji Użyj uwierzytelniania systemu Windows wybierz przycisk opcji Zezwalaj tylko użytkownikom określonym na ekranie Użytkownicy aplikacji lub Zezwalaj każdemu uwierzytelnionemu użytkownikowi systemu Windows.

    Aplikacja będzie teraz wymagać od użytkowników podania poświadczeń, aby mogli uzyskać dostęp do aplikacji.

Uprawnienia

Następnym krokiem zabezpieczania aplikacji klienckiej HTML jest utworzenie uprawnień.Najpierw, zdefiniuj obiekt uprawnień w Projektancie aplikacji.Następnie możesz odwołać się do obiektu w kodzie, w jednej z metod Can, takich jak <Entity>CanUpdate.Kod w tych metodach zwykle sprawdza, czy bieżący użytkownik lub rola ma uprawnienie, a następnie zezwala na wykonanie operacji tylko wtedy, gdy uprawnienie zostanie zweryfikowane.

Aby przetestować kod, uruchom aplikację zarówno jako użytkownik, który ma uprawnienie, jak i użytkownik, który go nie ma. Przez ustawienie uprawnień debugowania możesz personifikować użytkownika podczas testowania i debugowania aplikacji.

Aby utworzyć uprawnienie

  1. W Eksploratorze rozwiązań otwórz menu skrótów dla węzła Właściwości, a następnie wybierz Otwórz.

  2. W oknie Projektant aplikacji wybierz kartę Kontrola dostępu.

  3. W siatce Zdefiniuj uprawnienia lub wybierz uprawnienia używane do debugowania w kolumnie Nazwa kliknij opcję <Dodaj nowe uprawnienie>, a następnie wpisz programową nazwę uprawnienia.

    Nazwa musi zaczynać się od znaku alfabetycznego i może zawierać tylko znaki alfabetyczne, numeryczne lub podkreślenia.

  4. W kolumnie Nazwa wyświetlana wpisz nazwę uprawnienia, która będzie wyświetlana na ekranie, którego będzie używać administrator aplikacji do przypisywania ról.

  5. W kolumnie Opis, wpisz opis uprawnienia.

Aby włączyć uprawnienia do debugowania

  1. W Eksploratorze rozwiązań otwórz menu skrótów dla węzła Właściwości, a następnie wybierz Otwórz.

  2. W oknie Projektant aplikacji wybierz kartę Kontrola dostępu.

  3. W siatce Zdefiniuj uprawnienia lub wybierz uprawnienia używane do debugowania wybierz uprawnienie, które ma zostać włączone do debugowania i zaznacz pole wyboru Udzielone na potrzeby debugowania.

Zabezpieczanie serwera

Następnym krokiem jest dodanie kodu, który sprawdza uprawnienia w warstwie serwera za pomocą metody kontroli dostępu.Można napisać kod w metodzie obiektu, takiej jak CanUpdate lub w metodzie zapytania, takiej jak CanExecute.Dobrą praktyką jest zabezpieczanie warstwy serwera za pomocą metod kontroli dostępu w celu ochrony danych w systemie.

Aby napisać kod ustawiający uprawnienia do obiektu

  1. W Eksploratorze rozwiązań otwórz menu skrótów dla węzła obiektu, a następnie wybierz Otwórz.

    Zostanie wyświetlony Projektant ekranu dla tej obiektu.

  2. W Projektancie danych na pasku Perspektywa wybierz Serwer.

  3. Rozwiń listę Wpisz kod i wybierz metodę EntityName**_Can**Operation, gdzie EntityName jest nazwą obiektu, a Operation jest nazwą operacji, dla której chcesz napisać kod.

    [!UWAGA]

    Dostępność metod zależy od kontekstu.Niektóre przykłady to: CanInsert, CanDelete, i CanUpdate.

  4. W oknie Edytor kodu w metodzie EntityName**_Can**Operation wpisz odpowiedni kod.

    Na przykład, kod zezwalający użytkownikowi na aktualizowanie obiektu Products na podstawie uprawnienia o nazwie Can_Edit_Products miałby następującą postać:

    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;
    }
    
    }
    

Aby napisać kod ustawiający uprawnienia do zapytania

  1. W Eksploratorze rozwiązań otwórz menu skrótów dla węzła zapytania, a następnie wybierz Otwórz.

    Zostanie wyświetlony Projektant zapytań dla tego zapytania.

  2. Z listy Wpisz kod wybierz metodę QueryName**_CanExecute**, gdzie QueryName to nazwa zapytania.

  3. W oknie Edytor kodu w metodzie QueryName**_CanExecute** wpisz odpowiedni kod.

    Na przykład, kod zezwalający użytkownikowi na wykonanie zapytania ViewProducts na podstawie uprawnienia o nazwie Can_View_Products miałby następującą postać:

    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;
    }
    
    }
    

Zabezpieczanie klienta

Typowym scenariuszem jest zezwalanie na dostęp do ekranu tylko uprawnionym użytkownikom.Na przykład wszyscy użytkownicy mogą być w stanie wyświetlać informacje o cenach, ale tylko użytkownicy w dziale księgowości mogą je zmienić.Aby to zrobić, na ekranie klienta HTML utwórz najpierw kwerendę sprawdzającą uprawnienia w metodzie CanExecute, a następnie napisz kod JavaScript w metodzie ekranu created włączający lub wyłączający elementy interfejsu użytkownika.

[!UWAGA]

Aby obejrzeć przykładowy kod do sprawdzania uprawnień, zobacz „Aby napisać kod ustawiający uprawnienia do zapytania” wcześniej w tym temacie.

Aby dodać zapytanie do ekranu

  1. W oknie projektant ekranu na pasku narzędzi wybierz przycisk Dodaj element danych.

  2. W oknie dialogowym Dodaj element danych wybierz przycisk opcji Zapytanie, a następnie z listy wybierz swoje zapytanie.

  3. W drzewie zawartości wybierz element interfejsu użytkownika, który chcesz włączyć lub wyłączyć.Jest to zazwyczaj przycisku uruchamiający ekran, do którego chcesz ograniczyć dostęp.

  4. W oknie Właściwości zwróć uwagę na właściwość Nazwa elementu interfejsu użytkownika.Będzie potrzebna do napisania kodu.

Aby napisać kod ustawiający uprawnienia do ekranu

  1. W projektancie ekranu wybierz węzeł Ekran, a następnie na pasku narzędzi rozwiń listę Wpisz kod i wybierz created.

  2. W Edytorze Kodu dodaj następujący kod w metodzie ScreenName**_created**.

    Na przykład, kod włączający lub wyłączający przycisk o nazwie Edit na podstawie zapytania o nazwie EditProducts miałby następującą postać:

    myapp.ViewProducts.created = function (screen) {
        screen.getEditProducts().then (function success() {
            screen.findContentItem("Edit").isEnabled = true;
        }, function error() {
            screen.findContentItem("Edit").isEnabled = false;
        })
    };
    

    Kod wywołuje zapytanie na ekranie i kończy się niepowodzeniem, jeśli użytkownik nie ma uprawnień do wykonywania zapytania, wywołując program obsługi błędów.Ten przycisk jest włączony tylko wtedy, gdy uprawnienie użytkownika zostanie zweryfikowane.Aby ukryć przycisk, a nie wyłączać, użyj isVisible zamiast isEnabled.

    [!UWAGA]

    Ta metoda również spowoduje wyłączenie przycisku, jeśli zapytanie nie powiedzie się z innego powodu.Aby obejrzeć solidniejsze rozwiązanie, które wymaga bardziej skomplikowanego kodu, zobacz wpis w blogu Używanie LightSwitch ServerApplicationContext i WebAPI do uzyskiwania uprawnień użytkowników.

Administracja

Ostatni krok włączania uwierzytelniania to dodanie ekranu potrzebnego do administrowania aplikacją.W aplikacji klienckiej HTML musisz dodać do rozwiązania klienta Silverlight.Umożliwiają to domyślne ekrany Użytkownicy i Role potrzebne do administracji.Aplikacja kliencka Silverlight i ekrany są widoczne jedynie dla osoby, która podczas publikowania została wyznaczona jako domyślny administrator, lub do wszystkich użytkowników, którym później udzielono uprawnienia Administracja.

Aby dodać ekrany administracji

  1. W oknie Eksplorator rozwiązań otwórz menu skrótów dla węzła aplikacji najwyższego poziomu i wybierz Dodaj klienta.

  2. W oknie dialogowym Dodaj klienta wybierz ikonę Klient stacjonarny.

  3. W polu tekstowym Nazwa klienta wprowadź nazwę klienta, na przykład Administration, a następnie wybierz przycisk OK.

Aby zdefiniować administratora

  • Wykonaj kroki opisane w Administrowanie aplikacją LightSwitch.

    Ważna uwagaWażne

    Jeśli jest włączone uwierzytelnianie i jeszcze nie zdefiniowano domyślnego administratora, nie będziesz mieć dostępu do opublikowanej aplikacji.

Zobacz też

Zadania

Administrowanie aplikacją LightSwitch

Porady: Włączanie uwierzytelniania w aplikacji klienta Silverlight

Inne zasoby

Ekrany klienta HTML dla aplikacji LightSwitch

Używanie LightSwitch ServerApplicationContext i WebAPI do uzyskiwania uprawnień użytkowników