FBA ir SQL serverio: Meilės istorija

Mano kolegos dirbo žiniatinklio dalį FBA aplinkoje.. Tarp kitko, puslapio dalis traukia kai kurie duomenys iš SQL serverio. Grand planas šiam projektui diktuoja, kad a DBA sukonfigūruoja duomenų lygio saugą SQL (o įdėjimas vartotojo ID SQL užklausoje arba kitą požiūrį, kai).

Problema ta, kad SQL serverio nežino nieko apie mūsų FBA aplinkoje, jis negali pasitikėti mums. Mes išspręsti šią problemą iš, trūksta geresnio žodžio, rankiniu būdu apsimestinis reklamos vartotojas, kad mes galėtų prisijungti prie SQL, SQL duomenų lygio saugumui kūriniai.

Nors FBA ASP.NET funkcija yra, Mes SharePoint tautos žmonės mokomi įvairių paieškos sistemų, jei užklausiamčos FBA taikomąją, tu turi tai norite sužinoti, kaip sukonfigūruoti FBA SharePoint. Man nepavyko rasti jokios informacijos apie tai, kaip kad yra FBA orientuotas ASP.NET taikymo bendrauti su SQL, kaip mums reikia rasti.

Atliekant mokslinius tyrimus tai, Mes dar kartą perskaityti šį straipsnį: ASP.NET įasmeninimas

Daugiau tyrimų buvo šio codproject straipsnio: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Tai padėjo mums parašyti mūsų kodą, Aš įtraukta mažesnė. Tai ne labiausiai elegantiškas daiktai, bet jis dirbo. Tikiuosi, kad jums naudinga.

Čia yra kodas, kuris dirbo su mumis:

apsaugoti negaliojantis btnSearchCarrier_Click(objektas, EventArgs e)
 {
 pabandykite
 {
 ImpersonateUser iU = naujas ImpersonateUser();
 // TODO: Pakeisti kredencialus iU.Impersonate("Nazwa_domeny", "Vartotojo vardas", "Slaptažodis");

//
 KODAS
//

 iU.Undo();
 }
 sugauti (Išimtis ex)
 {

 }
 }

// Naudojant apsimetimo klasė, kaip nurodyta toliau.

visuomenės klasės ImpersonateUser
 {
 [DllImport("advapi32.dll", SetLastError = tiesa)]
 visuomenės statinis extern bool LogonUser(
 Eilutės lpszUsername,
 Eilutės lpszDomain,
 Eilutės lpszPassword,
 LC dwLogonType,
 LC dwLogonProvider,
 REF IntPtr phToken);

 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
 privačių extern statinis bool CloseHandle(IntPtr rankena);

 privačių statinis IntPtr tokenHandle = naujas IntPtr(0);
 privačių statinis WindowsImpersonationContext impersonatedUser;

 // Jei turite įtraukti šį kodą į DLL, Įsitikinkite, kad reikalauti, kad ji
 // veikia su FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Pavadinimas = "FullTrust")]
 visuomenės atšaukti apsimesti(eilutės Nazwa_domeny, seka vartotojo vardas, eilutės slaptažodį)
 {
 pabandykite
 {

 // Naudokite funkciją nevaldomas LogonUser gauti vartotojo atpažinimo ženklo
 // nurodytas vartotojas, domeno, ir slaptažodį.
 konstanta LC LOGON32_PROVIDER_DEFAULT = 0;

 // Perduoti šį parametrą sukelia LogonUser sukurti pirminis raktas.
 konstanta LC LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Žingsnis -1 Skambinti LogonUser gauti prieigos žetoną rankenėles..
 bool returnValue = LogonUser(
 Vartotojo vardas,
 Nazwa_domeny,
 slaptažodį,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 nuoroda tokenHandle); // tokenHandle - naujo saugos atpažinimo ženklo

 Jei (FALSE == returnValue)
 {
 LC ret = Marshal.GetLastWin32Error();
 Console.WriteLine("LogonUser skambutis nepavyko, klaidos kodas : " +
 RET);
 mesti naujas System.ComponentModel.Win32Exception(RET);
 }

 // Žingsnis - 2
 WindowsIdentity newId = naujas WindowsIdentity(tokenHandle);
 // Žingsnis -3
 impersonatedUser = newId.Impersonate();

 }
 sugauti (Išimtis ex)
 {
 Console.WriteLine("Įvyko išimtis. " + ex.Pranešimas);
 }
 }


 /// <santrauka>
 /// Stotelių įasmeninimas
 /// </santrauka>
 visuomenės atšaukti anuliuoti()
 {
 impersonatedUser.Undo();
 // Nemokamai žetonų.
 Jei (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</pabaigos>

Prenumeruoti savo dienoraštį.

Technorati Tags:

Viena mintis apie „FBA ir SQL serverio: Meilės istorija

  1. David anksti
    Atsiprašome už posting this nesusijęs klausimas, bet aš niekaip negalėjau suprasti kaip išsiųs jums laišką iš šio dienoraščio.
    Jums buvo ankstesnio posto, kur jums siūloma puiki galimybė filtruoti biblioteka Norėdami Rodyti nepažymėtą duomenų. Ar turite jokių minčių, kaip gali Rodyti nepažymėtų dokumentų sąrašas viso dokumento bibliotekoje? Tuščią lauką Išplėstinė paieška negrąžina jokių rezultatų.
    Atsakyti

palik atsakymą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *