Uwierzytelnianie w Reporting Services

Uwierzytelnianie to proces ustanawiania prawo do tożsamości użytkownika.Istnieje wiele technik, które służą do uwierzytelniania użytkownika.Najczęstszym sposobem jest użycie hasła.Podczas implementowania uwierzytelniania formularzy, na przykład chcesz Implementacja kwerendy użytkowników o poświadczenia (zazwyczaj przez niektóre interfejs, który żąda nazwy logowania i hasła) i sprawdza poprawność użytkowników przed magazyn danych, takich jak tabela bazy danych lub plik konfiguracja.Nie można sprawdzić poprawności poświadczenia, proces uwierzytelnianie zakończy się niepowodzeniem, a użytkownik przejmie Tożsamość anonimowa.

Niestandardowe uwierzytelnianie w Reporting Services

W Reporting Services, system operacyjny obsługuje uwierzytelnianie użytkowników za pośrednictwem zintegrowanych zabezpieczeń lub odbiór jawne i sprawdzania poprawności poświadczenia użytkownika.Niestandardowe uwierzytelnianie może być realizowana w Reporting Services do obsługi uwierzytelniania dodatkowe schematy.Jest to możliwe za pośrednictwem interfejs rozszerzenie zabezpieczeń IAuthenticationExtension.Dziedziczyć wszystkie rozszerzenia IExtension interfejs podstawowy dla rozszerzenia wdrożyć i używane przez serwer raportów.IExtension, jak również IAuthenticationExtension, są członkami Microsoft.ReportingServices.Interfaces obszaru nazw.

Podstawowy sposób uwierzytelniania przeciwko serwer raportów w Reporting Services jest LogonUser metoda.To element członkowski z Reporting Services Web usługa może być wykorzystane do przekazywania poświadczenia użytkownika do serwer raportów do sprawdzania poprawności.Sieci podstawowej implementuje rozszerzenie zabezpieczeń IAuthenticationExtension.LogonUser zawierający kod niestandardowego uwierzytelnianie.W próbce uwierzytelniania formularzy Wykonywanie funkcji LogonUser, który wykonuje uwierzytelnianie przed podanych poświadczenia i magazynu użytkownika niestandardowego w bazie danych.Przykładowa implementacja Wykonywanie funkcji LogonUser wygląda podobnie do następującej:

public bool LogonUser(string userName, string password, string authority)
{
   return AuthenticationUtilities.VerifyPassword(userName, password);
}

Poniższa funkcja próbki jest używana do sprawdzenia podane poświadczenia:

internal static bool VerifyPassword(string suppliedUserName,
   string suppliedPassword)
{ 
   bool passwordMatch = false;
   // Get the salt and pwd from the database based on the user name.
   // See "How To: Use DPAPI (Machine Store) from ASP.NET," "How To:
   // Use DPAPI (User Store) from Enterprise Services," and "How To:
   // Create a DPAPI Library" for more information about how to use
   // DPAPI to securely store connection strings.
   SqlConnection conn = new SqlConnection(
      "Server=localhost;" + 
      "Integrated Security=SSPI;" +
      "database=UserAccounts");
   SqlCommand cmd = new SqlCommand("LookupUser", conn);
   cmd.CommandType = CommandType.StoredProcedure;

   SqlParameter sqlParam = cmd.Parameters.Add("@userName",
       SqlDbType.VarChar,
       255);
   sqlParam.Value = suppliedUserName;
   try
   {
      conn.Open();
      SqlDataReader reader = cmd.ExecuteReader();
      reader.Read(); // Advance to the one and only row
      // Return output parameters from returned data stream
      string dbPasswordHash = reader.GetString(0);
      string salt = reader.GetString(1);
      reader.Close();
      // Now take the salt and the password entered by the user
      // and concatenate them together.
      string passwordAndSalt = String.Concat(suppliedPassword, salt);
      // Now hash them
      string hashedPasswordAndSalt =
         FormsAuthentication.HashPasswordForStoringInConfigFile(
         passwordAndSalt,
         "SHA1");
      // Now verify them. Returns true if they are equal.
      passwordMatch = hashedPasswordAndSalt.Equals(dbPasswordHash);
   }
   catch (Exception ex)
   {
       throw new Exception("Exception verifying password. " +
          ex.Message);
   }
   finally
   {
       conn.Close();
   }
   return passwordMatch;
}

Przepływ uwierzytelniania

usługa Reporting Services Web zawiera rozszerzenia niestandardowe uwierzytelnianie włączyć uwierzytelnianie formularzy Menedżer raportów i serwer raportów.

LogonUser metoda usługa Reporting Services Web jest używany do przesyłania poświadczenia do serwer raportów dla uwierzytelnianie.Usługa sieci Web używa nagłówki HTTP do przekazania uwierzytelnianie biletu (znany jako "cookie") z serwera do klient dla sprawdzania poprawności żądania logowania.

Następująca ilustracja przedstawia metoda uwierzytelniania użytkowników do usługa sieci Web, gdy aplikacja jest wdrażana z serwer raportów skonfigurowany do korzystania z rozszerzenia niestandardowego uwierzytelniania.

Przepływ uwierzytelniania zabezpieczeń usług Reporting Services

Jak pokazano na rysunku 2, proces uwierzytelnianie jest następująca:

  1. Aplikacja klient wywołuje usługa sieci Web LogonUser metoda uwierzytelnienia użytkownika.

  2. Usługa sieci Web dzwoni do LogonUser metoda na rozszerzenie zabezpieczeń w szczególności klasy, która implementuje IAuthenticationExtension.

  3. Implementacji LogonUser sprawdza nazwę użytkownika i hasło użytkownika magazynu lub zabezpieczeń urzędu.

  4. Po pomyślnym uwierzytelnianie, usługa sieci Web tworzy plik cookie i zarządza nim sesja.

  5. Usługa sieci Web zwraca biletu uwierzytelnianie do aplikacji wywołującej w nagłówku HTTP.

Usługa sieci Web pomyślnie uwierzytelnia użytkownika przez rozszerzenie zabezpieczeń, generuje cookie, używany dla kolejnych żądań.Plik cookie nie mogą obowiązywać w ramach urzędu zabezpieczeń niestandardowych, ponieważ serwer raportów nie jest właścicielem urząd zabezpieczeń.Plik cookie jest zwracany z LogonUser metoda usługa w sieci Web i jest używany w kolejnych wywołań metod usługa sieci Web i dostępu do adresu URL.

Ostrzeżenie

W celu uniknięcia utraty pliku cookie podczas transmisji, pliki cookie uwierzytelnianie zwrócony z LogonUser powinny być przekazywane bezpiecznie za pomocą szyfrowanie SSL (Secure Sockets Layer).

Jeśli dostęp do serwera raportu za pomocą adresu URL access podczas niestandardowej rozszerzenie zabezpieczeń jest zainstalowany, Internet Information Services (IIS) i ASP.NET automatycznie zarządzać przekazywania biletu uwierzytelnianie.Uzyskują dostęp do serwer raportów za pośrednictwem interfejsu API SOAP, należy dołączyć dodatkowe wsparcie zarządzania biletu uwierzytelnianie implementacji klasy proxy.Aby uzyskać więcej informacji dotyczących korzystania z interfejsu API SOAP i zarządzania nimi biletu uwierzytelnianie, zobacz "Korzystanie z usługi sieci Web niestandardowe zabezpieczeń."

Uwierzytelnianie formularzy

Uwierzytelnianie formularzy jest typu ASP.NET uwierzytelniania, w której użytkownik nieuwierzytelniony jest kierowany do formularza HTML.Gdy użytkownik podaje poświadczenia, system wystawia plik cookie zawierający biletu uwierzytelnianie.Na dalsze żądania system sprawdza najpierw plik cookie, aby zobaczyć, jeśli użytkownik został już uwierzytelniony przez serwer raportów.

Reporting Services może zostać przedłużony do obsługi uwierzytelniania formularzy za pomocą interfejsów rozszerzeń zabezpieczeń dostępne za pośrednictwem interfejsu API programu Reporting Services.Jeśli rozszerzony Reporting Services do uwierzytelniania formularzy za pomocą protokołu SSL (Secure Sockets Layer) dla całej komunikacji z serwer raportów aby zapobiec uzyskiwaniu dostępu do innego użytkownika plik cookie. złośliwych użytkownikówSSL umożliwia klientów i serwer raportów wzajemne uwierzytelnianie i zapewnienia, że żadne inne komputery mogą odczytywać zawartość komunikacji między dwoma komputerami.Wszystkie dane przesyłane od klient za pośrednictwem połączenia SSL są zaszyfrowane i złośliwych użytkowników przechwytywaniu haseł lub dane wysyłane do serwer raportów.

Uwierzytelnianie formularzy jest z reguły implementowany do obsługi kont i uwierzytelniania dla platform innych niż Windows.Interfejs graficzny jest prezentowane użytkownikowi, który żąda dostępu do serwer raportów i podane poświadczenia są przesyłane do urzędu zabezpieczeń uwierzytelnianie.

Uwierzytelnianie formularzy wymaga, że osoba ma wprowadzić poświadczenia.Dla nienadzorowanej aplikacji, które bezpośrednio komunikować się z usługa Reporting Services Web uwierzytelnianie formularzy musi być połączony ze schematu niestandardowego uwierzytelniania.

Uwierzytelnianie formularzy jest odpowiednia dla Reporting Services podczas:

  • Należy przechowywać i uwierzytelniać użytkowników, których nie Microsoft kont systemu Windows i

  • Należy podać własny formularz interfejs użytkownika jako strona logowania między różnymi stronami witryna sieci Web.

Należy uwzględnić następujące, pisząc własne rozszerzenie zabezpieczeń , obsługuje uwierzytelnianie formularzy:

  • Jeśli używasz uwierzytelniania formularzy, musi być włączony dostęp anonimowy na serwer raportów katalogu wirtualnego w Internet Information Services (IIS).

  • ASP.NET uwierzytelniania musi być zestaw do formularzy.Możesz skonfigurować ASP.NET uwierzytelnianie w sieci Web.plik konfiguracji serwer raportów.

  • Reporting Services can authenticate and authorize users with either Windows Authentication or custom authentication, but not both.Reporting Services does not support simultaneous use of multiple security extensions.