Share via


Reporting Services ile yetkilendirme

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.Güvenlik Uzantıları Reporting Services uygulaması, raporu sunucuda kimlik doğrulamasından sonra kullanıcılara erişim vermek için kullanılan bir yetkilendirme bileşen içerir. Yetkilendirme, kullanıcı, sistem veya rapor sunucusu maddenin SOAP API aracılığıyla ve URL erişim yoluyla, bir işlem gerçekleştirmeye çalıştığında çağrılır.Bu güvenlik uzantısı arabiriminden olası yapılır IAuthorizationExtension.Yukarıda belirtildiği gibi gelen tüm uzantıları devralma IExtension dağıttığınız uzantıyı temel arabirim.IExtension and IAuthorizationExtension üyeleri olanMicrosoft.ReportingServices.Interfaces ad alanı.

Erişim denetimi

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) yöntem is overloaded for each operation type. Klasör operasyonlar için erişim denetimi örneği aşağıdakine benzeyebilir:

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

Rapor sunucusu çağrıları CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) öğe ve istenen işlem için yöntem tarafından geçirilmesi adını, oturum açan kullanıcının, bir kullanıcı belirteci, güvenlik tanımlayıcısı. Güvenlik tanımlayıcısı kullanıcı adını ve bu isteği tamamlamak ve döndürmek için uygun izinlere burayı true erişim izni bitişini işaret eder için veya false erişim engellendi bitişini işaret eder için .

Güvenlik tanımlayıcıları

rapor sunucusu veritabanı öğeleri yetkilendirme ilkesi ayarlarken, bir istemci uygulaması) Rapor Yöneticisi gibi (öğe için bir güvenlik ilkesi ile birlikte güvenlik uzantının kullanıcı bilgilerini gönderir.Bu güvenlik ilkesini ve kullanıcı bilgilerini bilinen topluca güvenlik tanımlayıcısı.Güvenlik tanımlayıcısı için aşağıdaki bilgileri içeren bir öğe rapor sunucusu veritabanında:

  • Tür öğe işlemleri gerçekleştirmek için izni olan kullanıcı veya grup.

  • öğe'S yazın.

  • Bir isteğe bağlı erişim denetim listesi erişimin denetlenmesini öğe.

Web'i kullanarak oluşturulan güvenlik tanımlayıcılarını hizmet SetPolicies(String, array<Policy[]) ve SetSystemPolicies(array<Policy[]) yöntemleri.

Yetkilendirme akışı

Reporting Services Yetkilendirme, sunucu üzerinde çalıştırmak için şu anda yapılandırılmış güvenlik uzantısı tarafından denetlenir.Yetkilendirme rol tabanlı izinler ve işlemler tarafından sağlanan sınırlı ise Reporting Services güvenlik mimarisi. Aşağıdaki şemada, rapor sunucusu veritabanı öğeleri çalışan kullanıcıların yetkilendirme işlemi göstermektedir:

Reporting Services security authorization flow

Yetkilendirme, bu çizimde gösterildiği gibi bu sırası aşağıdaki gibidir:

  1. Kimlik doğrulamasından sonra istemci uygulamaları ile Reporting Services Web hizmet yöntemleri istekleri için rapor sunucusu yapın.Bir kimlik doğrulaması bileti HTTP üstbilgisinde, her Web isteği, bir tanýmlama bilgisinin formundaki rapor sunucusuna geçirilir.

  2. Tanımlama bilgisi, önce herhangi bir erişim denetimi doğrulanır.

  3. Tanımlama bilgisi doğrulandıktan sonra rapor sunucusu arar. GetUserInfo(IIdentity%, IntPtr%) ve kullanıcı kimlik verilir.

  4. Kullanıcı ile Reporting Services Web hizmet işlemi çalışır.

  5. Rapor sunucusu çağrıları CheckAccess(String, IntPtr, array<Byte[], CatalogOperation) yöntem.

  6. Güvenlik tanımlayıcısı alınır ve bir özel güvenlik uzantısı uygulaması için geçirildi. CheckAccess(String, IntPtr, array<Byte[], CatalogOperation). Bu noktada, kullanıcı, Grup veya bilgisayar için güvenlik tanımlayıcısı erişilen maddenin karşılaştırılır ve istenen işlemi gerçekleştirmeye yetkili olduğu.

  7. Kullanıcı yetkilendirilirse, Web hizmet işlemi gerçekleştirir ve çağıran uygulama yanıt verir.