FBA ve SQL Server: Bir aşk hikayesi

Benim meslektaşım bir web bölümündeki bir FBA ortamında çalışma. Diğer şeyler arasında, web bölümünün bazı veriler SQL sunucudan çeker.. Bu proje için büyük planın bir DBA SQL veri düzeyi güvenliğini yapılandırır belirler (bir SQL sorgusu veya diğer bir yaklaşım bir kullanıcı kimliği katıştırma aksine).

Bu bize güvenemiyorsun SQL server FBA çevre hakkında hiçbir şey bilmiyor bir sorundur. Biz bu sorunu çözüldü, daha iyi bir kelime olmaması için, Öyle ki SQL veri güvenlik işleri seviye için SQL bağlantısı kurulamadı böylece el ile bir reklam kullanıcı kimliğine bürünüyor.

FBA ASP.NET özellik olsa, Biz SharePoint ulus halk FBA için sorguladığınız varsa, çeşitli arama motorları öğretti, FBA SharePoint'te yapılandırmak bilmek istiyorum demek gerekir. Bulmak başarısız bir FBA etkinleştirme hakkında herhangi bir bilgi odaklı SQL ile biz gerekli şekilde iletişim için ASP.NET uygulamasının bul.

Bu araştırma sırasında, yeniden bu makaleyi okuyun: ASP.NET Kimliğe bürünme

Daha fazla araştırma bu codproject makale götürdü: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Bu bize bizim kod yazmak yardım, Aşağıda bulunan. En şık değil, Ama işe yaradı. Umarım yararlı.

İşte bizim için çalıştı kodu:

korumalı Geçersiz btnSearchCarrier_Click(nesne gönderen, EventArgs e)
 {
 deneyin
 {
 ImpersonateUser IU = Yeni ImpersonateUser();
 // TODO: Kimlik bilgileri iU.Impersonate yerine("EtkiAlanıAdı", "Kullanıcı adı", "Parola");

//
 KODU
//

 iU.Undo();
 }
 yakalamak (İstisna ex)
 {

 }
 }

// Aşağıda belirtilen kimliğe bürünme sınıfını kullanma.

Genel sınıf ImpersonateUser
 {
 [DllImport("advapi32.dll", SetLastError = TRUE)]
 Genel statik extern bool LogonUser(
 Dize lpszUsername,
 Dize lpszDomain,
 Dize lpszPassword,
 int dwLogonType,
 int dwLogonProvider,
 Ürün kodu IntPtr phToken);

 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
 Özel extern statik bool CloseHandle(IntPtr kolu);

 Özel statik IntPtr tokenHandle = Yeni IntPtr(0);
 Özel statik WindowsImpersonationContext impersonatedUser;

 // Bu kod bir DLL içine dahil, Bu kadar talep etmeyi unutmayın
 // FullTrust ile çalışır.
 [PermissionSetAttribute(SecurityAction.Demand, Adı = "FullTrust")]
 Genel void özelliklerini al(dize EtkiAlanıAdı, Kullanıcı adı dizesi, dize şifre)
 {
 deneyin
 {

 // Kullanıcı token için almak için yönetilmeyen LogonUser işlevini kullanın
 // Belirtilen kullanıcı, etki alanı, ve şifre.
 const int LOGON32_PROVIDER_DEFAULT = 0;

 // Bu parametre LogonUser birincil belirteç oluşturmak neden olur..
 const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Adım -1 LogonUser erişim simgesi için bir tanıtıcı elde etmek için arama.
 bool returnValue LogonUser =(
 Kullanıcı adı,
 EtkiAlanıAdı,
 şifre,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 Ürün kodu tokenHandle); // tokenHandle - yeni güvenlik belirteci

 Eğer (returnValue false ==)
 {
 int ret = Marshal.GetLastWin32Error();
 Console.WriteLine("Hata kodu ile LogonUser çağrısı başarısız oldu : " +
 ret);
 atmak yeni System.ComponentModel.Win32Exception(ret);
 }

 // Adım - 2
 WindowsIdentity NEWID = Yeni WindowsIdentity(tokenHandle);
 // Adım -3
 impersonatedUser newId.Impersonate =();

 }
 yakalamak (İstisna ex)
 {
 Console.WriteLine("Özel durum oluştu. " + eski.İleti);
 }
 }


 /// <Özet>
 /// Durak kimliğe bürünme
 /// </Özet>
 Genel Geçersiz geri alma()
 {
 impersonatedUser.Undo();
 // Simgeleri ücretsiz.
 Eğer (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</sonunda>

Benim blog abone.

Technorati Tags:

Bir “konulu düşünceFBA ve SQL Server: Bir aşk hikayesi

  1. David erken
    Bu mesaj için özür alakasız bir soru ama bu blog bir e-posta göndermek nasıl anlamaya değil.
    Bir önceki sonrası nerede etiketsiz verileri görüntülemek için bir kütüphane filtre uygulamak için harika bir yoldur teklif vardı. Nasıl bir tüm belge kitaplığında etiketlenmemiş belgelerin listesini görüntülemek konusunda bir fikrin var mı? Gelişmiş arama boş bir alana kullanarak herhangi bir sonuç döndürmüyor.
    Yanıtla

Cevap bırak

E-posta hesabınız yayımlanmayacak. Gerekli alanlar işaretlendi *