Udostępnij za pośrednictwem


Uwierzytelnianie w usług raportowania

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

Niestandardowe uwierzytelnianie w usług raportowania

W Reporting Services, system operacyjny obsługuje uwierzytelnianie użytkowników przy użyciu zintegrowanych zabezpieczeń lub za pomocą jawnych odbioru i sprawdzanie poprawności poświadczenia użytkownika. Niestandardowe uwierzytelnianie może być realizowana w Reporting Services do obsługi schematów uwierzytelniania dodatkowe. Jest to możliwe za pośrednictwem interfejs rozszerzenie zabezpieczeń IAuthenticationExtension. Wszystkie rozszerzenia dziedziczą IExtension podstawowy interfejs do żadnego rozszerzenia, wdrażania i używane przez serwer raportów. IExtension, a także IAuthenticationExtension, są członkami Microsoft.ReportingServices.Interfaces obszar nazw.

Podstawowy sposób, aby uwierzytelnić serwer raportów w Reporting Services to LogonUser(String, String, String) Metoda. Ten element członkowski usługa Reporting Services Web można używać do przekazywania poświadczenia użytkownika do serwer raportów do sprawdzania poprawności.Na podstawowych narzędzi rozszerzenie zabezpieczeń IAuthenticationExtension.LogonUser zawierający kod niestandardowego uwierzytelnianie.W przykładzie uwierzytelnianie formularzy LogonUser, który sprawdza uwierzytelnianie podanych poświadczenia i magazynie użytkownika niestandardowego w bazie danych.Przykładowa implementacja LogonUser wygląda następująco:

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

Poniższa funkcja próbki jest wykonywany w celu sprawdzenia, podanych 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;
}

Uwierzytelnianie przepływu

usługa Reporting Services Web zapewnia niestandardowe uwierzytelnianie rozszerzenia, które mają być włączone uwierzytelnianie formularzy Menedżer raportów, a serwer raportów.

The LogonUser(String, String, String) metoda of the Reporting Services Web usługa is used to submit poświadczenia to the serwer raportów for uwierzytelnianie. usługa sieci Web używa nagłówków HTTP do przekazania uwierzytelnianie biletu (zwane także "cookie") z serwera do klient w celu sprawdzania poprawności żądania logowania.

Na poniższej ilustracji przedstawiono metoda uwierzytelnianie użytkowników do usługa sieci Web, po wdrożeniu aplikacji serwer raportów skonfigurowany do korzystania z rozszerzenia niestandardowego uwierzytelnianie.

Reporting Services security authentication flow

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

  1. Aplikacja klient wywołuje usługa sieci Web LogonUser(String, String, String) Metoda uwierzytelniania użytkownika.

  2. usługa sieci Web wywołuje numer LogonUser(String, String, String) Metoda użytkownika rozszerzenie zabezpieczeń w szczególności klasy, która implementuje IAuthenticationExtension.

  3. Implementacji LogonUser(String, String, String) sprawdza poprawność nazwy użytkownika i hasła urzędu magazynu lub zabezpieczeń użytkownika.

  4. Po pomyślnym uwierzytelnieniu usługa sieci Web tworzy plik cookie i zarządza nim dla 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 za pośrednictwem rozszerzenie zabezpieczeń, generuje cookie, używany dla kolejnych żądań.Plik cookie może nie zachowywane w ramach urzędu zabezpieczeń niestandardowych, ponieważ serwer raportów nie jest właścicielem urzędu zabezpieczeń.Plik cookie jest zwracany z LogonUser(String, String, String) metoda usługa w sieci Web i jest używany w kolejnych wywołań metod usługa sieci Web i do adresów URL.

Uwaga

Aby uniknąć naruszenia podczas przesyłania pliku cookie, pliki cookie uwierzytelnianie zwrócone przez LogonUser(String, String, String) powinny być przekazywane bezpiecznie przy użyciu szyfrowanie Secure Sockets Layer (SSL).

Jeśli dostęp do serwer raportów do adresów URL podczas niestandardowego za pomocą rozszerzenie zabezpieczeń jest zainstalowany, Internet Information Services (IIS) i ASP.NET Automatyczna obsługa przekazywania biletu uwierzytelnianie. Jeśli uzyskujesz dostęp do serwer raportów za pośrednictwem interfejsu API SOAP, implementacji klasy proxy musi zawierać dodatkowej pomocy technicznej związanych z zarządzaniem biletu uwierzytelnianie.Aby uzyskać więcej informacji na temat korzystania z interfejsu API SOAP i zarządzanie nimi biletu uwierzytelnianie, zobacz „ Korzystanie z usługa sieci Web z zabezpieczeniami niestandardowy. „

Uwierzytelnianie formularzy

Uwierzytelnianie formularzy jest typu ASP.NET uwierzytelnianie, w którym użytkownik nieuwierzytelniony jest kierowany do formularza HTML. Gdy użytkownik udostępnia poświadczenia, system wystawia plik cookie zawierający bilet uwierzytelnienia.Na nowszy żądania system sprawdza najpierw plik cookie, aby zobaczyć, jeśli użytkownik został już uwierzytelniony przez serwer raportów.

Reporting Services mogą być rozszerzone do obsługi uwierzytelnianie formularzy przy użyciu interfejsów rozszerzeń zabezpieczeń, które są dostępne za pośrednictwem interfejsu API usług Reporting Services.Jeśli rozszerzony Reporting Services Aby użyć uwierzytelnianie formularzy, należy użyć Secure Sockets Layer (SSL) dla całej komunikacji z serwer raportów zapobiec złośliwym użytkownikom uzyskanie dostępu do plików cookie przez innego użytkownika. Protokół SSL umożliwia klientów i serwer raportów wzajemne uwierzytelnianie i upewnij się, że nie 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 nie może przechwycić złośliwych użytkowników, hasła lub dane przesyłane do serwer raportów.

Uwierzytelnianie formularzy jest zazwyczaj implementowane do obsługi kont i uwierzytelniania na platformach innych niż system Windows.Graficzny interfejs, są prezentowane użytkownikowi, który żąda dostępu do serwer raportów i dostarczone poświadczenia są przesyłane do urzędu zabezpieczeń do uwierzytelnianie.

Uwierzytelnianie formularzy wymaga występuje osoby o wprowadzenie poświadczenia.W przypadku instalacji nienadzorowanej aplikacji, które bezpośrednio komunikują się z usługa Reporting Services Web uwierzytelnianie formularzy należy łączyć ze schematem niestandardowego uwierzytelniania.

Uwierzytelnianie formularzy jest odpowiednia dla Reporting Services Kiedy:

  • Należy zapisać i uwierzytelniania użytkowników, które nie mają Microsoft Konta systemu Windows i

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

Podczas zapisywania rozszerzenia niestandardowe zabezpieczeń, która obsługuje uwierzytelnianie formularzy, należy wziąć pod uwagę następujące kwestie:

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

  • ASP.NET należy ustawić uwierzytelnianie formularzy.Konfigurowanie ASP.NET Uwierzytelnianie w pliku Web.config 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.