Aracılığıyla paylaş


Raporlama Servisleri içinde kimlik doğrulama

Kimlik doğrulama, kullanıcının sağ için bir kimlik oluşturma işlemidir. Bir kullanıcının kimliğini doğrulamak için kullanabileceğiniz birçok teknik vardır. En yaygın yolu, parolalar kullanmaktır. Örneğin, istediğiniz kullanıcılar için kimlik bilgilerini (genellikle bir kullanıcı adı ve parola isteyen bazı arabirimi tarafından) sorgulayan uygulaması Forms Authentication'u uygulamak ve ardından kullanıcıların veritabanı tablo veya yapılandırma dosyası gibi bir veri depolamaya doğrular. Kimlik bilgileri doğrulanamıyor, kimlik doğrulama işlemi başarısız olur ve kullanıcı anonim kimlik üstlenecek.

Raporlama Servisleri özel kimlik doğrulama

De Reporting Services, Windows tümleşik güvenlik veya Açık Resepsiyon ile kullanıcıların kimlik doğrulaması ve kullanıcı kimlik doğrulama sistemi kolları işletim. Özel kimlik doğrulama olarak geliştirilebilir Reporting Servicesek kimlik doğrulama düzenlerini destek. Bu güvenlik uzantısı arabirimi aracılığıyla mümkün kılan IAuthenticationExtension. Tüm uzantıları den devralan IExtensiontemel arabirim herhangi bir uzantısı dağıtılabilir ve rapor sunucusu tarafından kullanılan. IExtension, hem de IAuthenticationExtension, üyesi olan Microsoft.ReportingServices.Interfacesnamespace.

Bir rapor sunucusunda kimlik doğrulaması için birincil yolu Reporting Servicesolan LogonUseryöntemi. Reporting Services Web hizmeti bu üyesi, kullanıcı kimlik doğrulaması için rapor sunucusu geçiş için kullanılabilir. Temel güvenlik uzantısı Implements IAuthenticationExtension.LogonUser , özel kimlik doğrulama kodunu içerir. Forms kimlik doğrulaması örneğinde, LogonUser, hangi veritabanında sağlanan kimlik bilgileri ve özel kullanıcı deposu karşı bir doğrulama denetimi gerçekleştirir. Uygulaması örneği LogonUser bu gibi görünüyor:

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

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

Aşağıdaki örnek işlevi, sağlanan kimlik bilgilerini doğrulamak için kullanılır:

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

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

Kimlik denetimi akışı

Raporlama Hizmetleri Web hizmetini, rapor Yöneticisi ve rapor sunucusu tarafından Forms kimlik doğrulamasını etkinleştirmek için özel kimlik doğrulama uzantıları sağlar.

LogonUserReporting Services Web hizmeti yöntemi rapor sunucusu kimlik doğrulaması için kimlik bilgilerini göndermek için kullanılır. Web hizmetinin http üstbilgileri ("tanımlama bilgisi" olarak da bilinir) bir kimlik doğrulama bileti geçmek için sunucudan istemciye doğrulanmış oturum açma isteklerini kullanır.

Uygulamanız özel kimlik doğrulama uzantısını kullanacak şekilde yapılandırılmış bir rapor sunucusu ile dağıtıldığında Web hizmeti kullanıcıların kimlik doğrulama yöntemi aşağıda gösterilmektedir.

Reporting Services güvenlik kimlik doğrulaması akışı

Şekil 2'de gösterildiği gibi kimlik doğrulama işlemi aşağıdaki gibidir:

  1. Bir istemci uygulaması Web hizmeti çağrıları LogonUserbir kullanıcının kimliğini doğrulamak için yöntemi.

  2. Web hizmeti çağrısı yapan LogonUser, güvenlik uzantısı yöntemi özellikle uygulayan sınıfı IAuthenticationExtension.

  3. Uygulamanız, LogonUserkullanıcı adı ve parola kullanıcı deposunda veya güvenlik yetkilisinde doğrular.

  4. Başarılı bir kimlik doğrulaması, Web hizmeti bir çerez oluşturur ve oturum için yönetir.

  5. Web hizmeti kimlik doğrulama bileti çağıran uygulama http başlığına döndürür.

Web hizmeti kullanıcı güvenlik uzantısı ile başarıyla doğruladığında, sonraki istekleri için kullanılan bir çerez oluşturur. Rapor sunucusu güvenlik yetkilisi kendi değil çünkü çerez içinde özel güvenlik yetkilisi kalıcı değil. Çerez dönen LogonUsersonraki Web hizmeti yöntem çağrıları ve url erişim kullanılan ve Web hizmeti yöntemi.

[!NOT]

Tanımlama bilgisi iletim sırasında bozmasını önlemek için kimlik doğrulama tanımlama bilgileri dönen LogonUsergüvenli Güvenli Yuva Katmanı (ssl) şifreleme kullanılarak aktarılır.

Özel güvenlik uzantısı yüklü olduğunda, rapor sunucusu url erişim erişiyorsanız Internet Information Services (IIS) ve ASP.NETotomatik olarak kimlik doğrulama bileti iletim yönetmek. soap API rapor sunucusu erişiyorsanız, uygulamanız proxy sınıfının kimlik doğrulama bileti yönetmek için ek destek içermelidir. soap API kullanarak ve kimlik doğrulama bileti, bkz "Web hizmeti ile özel güvenlik kullanma." yönetme hakkında daha fazla bilgi için

Forms kimlik doğrulaması

Forms kimlik doğrulaması türü olan ASP.NETkimlik doğrulama kimliği doğrulanmamış bir kullanıcı bir html formuna yeniden yönlendirilir. Bir kez kullanıcı kimlik bilgilerini sağlar, sistem bir kimlik doğrulama bileti içeren bir tanımlama bilgisi verir. Sonraki istekler, sistem tanımlama bilgisi kullanıcı rapor sunucu tarafından önceden doğrulandı eğer görmek için denetler.

Reporting ServicesFormlar kimlik doğrulaması güvenlik genişletilebilirlik arabirimleri Reporting Services API kullanılabilen desteklemek için uzatılabilir. Eğer genişletirseniz Reporting ServicesForms kimlik doğrulaması kullanmak için Güvenli Yuva Katmanı (ssl) ile rapor sunucusu tüm iletişimler için kötü niyetli kullanıcıların başka bir kullanıcının çerezi erişmesini engellemek için kullanın. ssl istemci ve rapor sunucusu birbirinin kimliğini doğrular ve başka bir bilgisayar, iki bilgisayar arasındaki iletişimin içeriğini okuyabilirsiniz emin olmak için etkinleştirir. Böylece kötü niyetli kullanıcılar parolaları veya rapor sunucuya gönderilen veri müdahale edemez bir istemci ssl bağlantısı üzerinden gönderilen tüm veriler şifrelenir.

Forms kimlik doğrulaması genellikle platformlar Windows dışındaki hesapları ve kimlik doğrulamayı desteklemek için uygulanır. Grafik arabirim bir rapor sunucusuna erişim isteyen bir kullanıcıya sunulur ve sağlanan kimlik bilgileri kimlik doğrulaması için güvenlik yetkilisine gönderilmektedir.

Form kimlik doğrulaması, bir kişinin kimlik bilgilerini girmek için mevcut olmasını gerektirir. Reporting Services Web hizmeti ile doğrudan iletişim katılımsız uygulamalarda, Forms kimlik doğrulaması bir özel kimlik doğrulama düzeni ile Birleşik olarak gerekir.

Forms kimlik doğrulaması için uygun Reporting Serviceszaman:

  • Saklamak ve sahip olmayan kullanıcıların kimliğini doğrulamak gerek MicrosoftWindows hesapları ve

  • Bir Web sitesindeki farklı sayfalar arasında oturum açma sayfası olarak kendi kullanıcı arabirimi formunu sağlamak gerekiyor.

Formlar kimlik doğrulamasını destekleyen özel güvenlik uzantısı yazarken aşağıdaki noktaları dikkate alın:

  • Forms kimlik doğrulaması kullanırsanız, anonim erişimi rapor sunucusu sanal dizini Internet Information Services (IIS) etkinleştirilmesi gerekir.

  • ASP.NETkimlik doğrulama formları için ayarlanmış olması gerekir. Yapılandırdığınız ASP.NETrapor sunucusu Web.config dosyasında kimlik.

  • Reporting Serviceskimlik doğrulaması ve Windows kimlik doğrulaması veya özel kimlik doğrulama ancak ikisini birden kullanıcılar yetki verebilirsiniz. Reporting Servicesbirden çok güvenlik uzantıları kullanılmasını desteklemez.

Ayrıca bkz.

Kavramlar

Güvenlik uzantısı uygulanması