FBA un SQL Server: Mīlas stāsts

Mana kolēģe ir strādājusi par web daļu FBA vidē. Cita starpā, web daļu atvelk datus no SQL servera. Grand plāns šim projektam diktē, ka DBA konfigurē datu drošības līmeni SQL (nevis iekļaujot lietotāja ID SQL vaicājumā vai cita pieeja).

Problēma ir tā, ka SQL servera nezina neko par mūsu FBA vidē, tāpēc tam nevar uzticēties mums. Mēs atrisināt šo problēmu, trūkuma dēļ labāks vārds, manuāli uzdoties par reklāmu lietotāju, tāpēc, ka mēs varētu pieslēgties SQL tādam SQL datu līmeņa drošības darbi.

Pat FBA ir ASP.NET līdzeklis, SharePoint Nation cilvēki mums ir mācījuši, dažādas meklētājprogrammas, ja vaicājamās, FBA, nedrīkst nozīmēt, jūs vēlaties zināt, kā konfigurēt SharePoint FBA. Man neizdevās atrast atrast jebkādu informāciju par to, kā iespējot FBA orientēta ASP.NET lietojumprogrammas, tā, kā mums vajadzēja sazināties ar SQL.

Laikā pētot šo, Mēs vēlreiz izlasīt šo rakstu: ASP.NET personifikācija

Vairāk pētījumu mūs atveda uz šo rakstu codproject: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Kas palīdzēja mums mūsu koda rakstīšana, kurā ir iekļauta zemāk. Tas nav visvairāk elegants stuff, bet tā strādāja. Es ceru, ka jums tas šķiet noderīgs.

Šeit ir kods, kas strādāja ar mums:

aizsargāti spēkā neesošu btnSearchCarrier_Click(objekts sūtītājs, EventArgs e)
 {
 mēģiniet
 {
 ImpersonateUser Sv = jaunā ImpersonateUser();
 // TODO: IU.Impersonate akreditācijas aizvietot("DomainName", "UserName", "Parole");

//
 KODS
//

 iU.Undo();
 }
 nozvejas (Izņēmums ex)
 {

 }
 }

// Identifikācijas klasi, kā minēts turpmāk, izmantojot.

valsts klase ImpersonateUser
 {
 [DllImport("advapi32", SetLastError = patiess)]
 valsts statiskā extern bool LogonUser(
 Virkne lpszUsername,
 Virkne lpszDomain,
 Virkne lpszPassword,
 Int dwLogonType,
 Int dwLogonProvider,
 ATS IntPtr phToken);

 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
 privāts extern statiskā bool CloseHandle(IntPtr rokturi);

 privāts statiskā IntPtr tokenHandle = jaunā IntPtr(0);
 privāts statiskā WindowsImpersonationContext impersonatedUser;

 // Ja šajā kodeksā iestrādāt DLL, Pārliecinieties, vai pieprasīt, ka tas
 // sākas ar FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Nosaukums = "FullTrust")]
 valsts spēkā neesošu Impersonate(virkne domainName, virkne userName, virkne paroli)
 {
 mēģiniet
 {

 // Izmantojiet funkciju nepārvaldītu LogonUser iegūt lietotāju pilnvaru, lai
 // norādīto lietotāju, domēna, un paroli.
 konst Int LOGON32_PROVIDER_DEFAULT = 0;

 // Nododot šo parametru izraisa LogonUser izveidot primārā marķiera.
 konst Int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Solis -1 Zvanu LogonUser iegūt rokturi ar piekļuves tiesībām.
 bool returnValue = LogonUser(
 Lietotājvārds,
 domainName,
 parole,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 ATS tokenHandle); // tokenHandle - jaunu drošības pilnvaru

 Ja (FALSE = = returnValue)
 {
 Int ret = Marshal.GetLastWin32Error();
 WriteLine("LogonUser izsaukums neizdevās ar kļūdas kodu : " +
 RET);
 mest jaunu System.ComponentModel.Win32Exception(RET);
 }

 // Solis - 2
 WindowsIdentity newId = jaunā WindowsIdentity(tokenHandle);
 // Solis -3
 impersonatedUser = newId.Impersonate();

 }
 nozvejas (Izņēmums ex)
 {
 WriteLine("Radās izņēmums. " + ex.Ziņojums);
 }
 }


 /// <kopsavilkums>
 /// Apstājas personifikācija
 /// </kopsavilkums>
 valsts spēkā neesošu atsaukt()
 {
 impersonatedUser.Undo();
 // Bezmaksas marķieri.
 Ja (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</beigās>

Abonēt manu blogu.

Technorati Tags: Technorati Tags:

Viena doma parFBA un SQL Server: Mīlas stāsts

  1. David agri
    Atvainojamies par norīkošanu šo nesaistīts jautājums, bet es nevarēju saprast, kā nosūtīt jums e-pastu no šī emuāra.
    Bija iepriekšējā amatā, kur piedāvā lielisku iespēju filtrēt bibliotēku bez tagiem datus var apskatīt. Vai jums ir kādas domas par to, kā iespējams apskatīt sarakstu dokumentos bez tagiem visu dokumentu bibliotēkā? Izmantojot tukšu lauku Izvērstā meklēšana neatgriež rezultātus.
    Atbilde

atstāt atbildi

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *