Udostępnij za pośrednictwem


Autoryzacja w usług raportowania

Authorization is the process of determining whether an identity should be granted the requested type of access to a given resource in the report server database.Reporting Services uses a role-based authorization architecture that grants a user access to a given resource based on the user's role assignment for the application.Rozszerzenia zabezpieczeń Reporting Services zawierają implementacji składnika autoryzacja, która chce udzielić dostępu użytkownikom, gdy są one uwierzytelnienie serwer raportów. Autoryzacja jest wywoływana, gdy użytkownik usiłuje wykonać operację na system lub element raportu serwera za pośrednictwem interfejsu API SOAP i za pośrednictwem do adresów URL.Jest to możliwe za pośrednictwem interfejs rozszerzenie zabezpieczeń IAuthorizationExtension.Jak wspomniano wcześniej, dziedziczy wszystkie rozszerzenia IExtension interfejs podstawowy dla żadnego rozszerzenia, które wdrożyć.IExtension and IAuthorizationExtension są członkami Microsoft.ReportingServices.Interfaces obszar nazw.

Kontrola dostępu

In authorization, the key to any custom security implementation is the access check, which is implemented in the CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) method.CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) is called each time a user attempts an operation on the report server.The CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) metoda is overloaded for each operation type. W przypadku operacji folderu przykład kontroli dostępu może wyglądać następująco:

// Overload for Folder operations
public bool CheckAccess(
   string userName, 
   IntPtr userToken, 
   byte[] secDesc, 
   FolderOperation requiredOperation)
{
   // If the user is the administrator, allow unrestricted access.
   if (userName == m_adminUserName) 
      return true;

   AceCollection acl = DeserializeAcl(secDesc);
   foreach(AceStruct ace in acl)
   {
         if (userName == ace.PrincipalName)
         {
            foreach(FolderOperation aclOperation in 
               ace.FolderOperations)
            {
               if (aclOperation == requiredOperation)
                     return true;
            }
         }
   }
   return false;
}

Wywołania serwer raportów CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) Metoda przez przekazywanie w imieniu użytkownika zalogowanego, token użytkownika, deskryptora zabezpieczeń dla tego zapasu i żądanej operacji. W tym miejscu będzie sprawdzać deskryptora zabezpieczeń dla nazwy użytkownika i odpowiednich uprawnień do wykonania żądania, a następnie powróć true wyznaczać udzielić dostępu lub false wyznaczać dostęp jest zabroniony.

Deskryptory zabezpieczeń

Przy ustawianiu zasad autoryzacja w elementach baza danych serwer raportów, aplikacja klient (na przykład Menedżer raportów) przesyła informacje o użytkowniku do rozszerzenie zabezpieczeń wraz z zasad zabezpieczeń dla element.Te informacje użytkowników i zasady zabezpieczeń są wspólnie nazywane deskryptora zabezpieczeń.Deskryptor zabezpieczeń zawiera następujące informacje dla danego element w baza danych serwer raportów:

  • Grupy lub użytkownika, który ma pewien typ uprawnienia do wykonywania operacji na element.

  • Typ element.

  • Lista kontroli dostępu poufnych danych, kontrolowanie dostępu do element.

Deskryptory zabezpieczeń są tworzone przy użyciu usługa sieci Web SetPolicies(String, array<Policy[]) i SetSystemPolicies(array<Policy[]) metody.

Przepływ autoryzacja

Reporting Services Autoryzacja jest kontrolowana przez rozszerzenie zabezpieczeń aktualnie skonfigurowana do uruchamiania na serwerze.Autoryzacja odbywa się na podstawie ról i uprawnień i operacje dostarczonych przez Reporting Services Architektura zabezpieczeń. Na poniższej ilustracji przedstawiono proces autoryzowania użytkowników do pracy na elementy w bazie danych serwer raportów:

Reporting Services security authorization flow

Jak pokazano w tym diagramie, autoryzacja tej sekwencji są następujące:

  1. Po uwierzytelnieniu klient aplikacji tworzenie żądania serwer raportów za pomocą metody usługa sieci Web usług Reporting Services.Bilet uwierzytelnienia jest przekazywany do serwer raportów w postaci pliku cookie w nagłówku HTTP każdego żądania sieci Web.

  2. Plik cookie jest sprawdzany wprowadzenia kontrolę dostępu.

  3. Po uwierzytelnieniu plik cookie wywołuje serwer raportów GetUserInfo(IIdentity%, IntPtr%) użytkownik jest tożsamość.

  4. Użytkownik próbuje operację za pośrednictwem usługa Reporting Services Web.

  5. Wywołania serwer raportów CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) Metoda.

  6. Deskryptor zabezpieczeń jest pobierane i przekazywana do zabezpieczeń niestandardowego rozszerzenia wdrożenia CheckAccess(String, IntPtr, array<Byte[], CatalogOperation). W tym momencie użytkownik, grupa lub komputer jest porównywany z deskryptora zabezpieczeń element, do którego i jest upoważniony do wykonania żądanej operacji.

  7. Jeśli użytkownik jest autoryzowany, usługa sieci Web wykonuje operację i zwraca odpowiedzi do aplikacji wywołującej.