FBA Et SQL sèvè: Yon istwa renmen

Pèsòn nan travay mwen te travay sou yon pati entènèt nan yon anviwonman FBA. Pami lòt bagay, pati entènèt a ke yo retire nan kèk done nan SQL sèvè. Gwo plan pou pwojè sa a exige ke yon DBA configures done kiyè sekirite nan SQL (Kontrèman l' yon Didantite kap itilize li an nan yon requête SQL oubyen kèk lòt apwòch).

Pwoblèm lan se sa SQL sèvè pa konnen anyen osijè anviwònman FBA nou pou l' pa ka fè nou. Nou rezoud pwoblèm sa a pa, for lack of yon pi bon pawòl, lamen passer yon Piblisite kap itilize li an, pou nou te ka marye pou SQL comme ke SQL done nivo sekirite fè sa.

Menm si FBA, ki se yon mak ASP.NET, nou menm, pèp nasyon SharePoint a plizyè rechèch la moteurs ke si w ap Sur pou FBA, ou dwe di ou vle konnen kijan pou configure FBA nan SharePoint. Mwen te tonbe pou jwenn jwenn gen enfòmasyon sou kouman pou pèmèt FBA yon oryante ASP.NET aplikasyon pou kominike ak SQL nan fason nou bezwen pou.

Natirèlman sou sa, nou te re-lecture atik sa a: D' ASP.NET

Plis rechèch te mennen nou pou atik codproject sa a: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

Sa te ede nou ekri nou kòd, ki mwen te gen ladan yo pi ba pase. Se pa bagay ki pi gwo bèl chato la, Men, li te travay. M espere ou a jwenn li konsèy pou ede.

Isit la se kòd ki te travay pou nou:

pwoteje btnSearchCarrier_Click vid(objè l', EventArgs e)
 {
 eseye
 {
 UI ImpersonateUser = nouvo ImpersonateUser();
 // TODO: Ranplase kredi yo pou iU.Impersonate("DomainName", "Nom", "Modpas");

//
 KÒD
//

 iU.Undo();
 }
 ran fredi/lè (Eksepsyon ansyen)
 {

 }
 }

// W ap itilize D' klas jan mansyone pi ba pase.

piblik klas ImpersonateUser
 {
 [DllImport("advapi32.dll", SetLastError = vre)]
 piblik menm jan extern bool LogonUser(
 Chaîne lpszUsername,
 Chaîne lpszDomain,
 Chaîne lpszPassword,
 int dwLogonType,
 int dwLogonProvider,
 ref IntPtr phToken);

 [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
 pwive extern menm jan bool CloseHandle(IntPtr manch);

 pwive menm jan IntPtr tokenHandle = nouvo IntPtr(0);
 pwive menm jan WindowsImpersonationContext impersonatedUser;

 // Si ou intégrer kòd sa a nan yon DLL, asire w ou pou te mande ke li
 // kouri ak FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Non = "FullTrust")]
 piblik L' vid(chaîne domainName, chaîne D', chaîne modpas)
 {
 eseye
 {

 // Sèvi ak non fonksyon LogonUser pou jwenn moun kap itilize li an senbolik pou
 // Pwogram leta a utilisateur, domèn, Et modpas.
 const int LOGON32_PROVIDER_DEFAULT = 0;

 // Pase paramètre sa a lakòz LogonUser pou kreye yon jeton principal.
 const int LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Étape -1 Rele LogonUser pou jwenn yon manch pou yon jeton aksè.
 bool returnValue = LogonUser(
 D',
 domainName,
 modpas,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 ref tokenHandle); // tokenHandle - nouvo sekirite jeton

 Si (False == returnValue)
 {
 int ret = Marshal.GetLastWin32Error();
 Console.WriteLine("Apèl LogonUser echwe ak kòd erreur : " +
 ret);
 voye nouvo System.ComponentModel.Win32Exception(ret);
 }

 // Étape - 2
 WindowsIdentity newId = nouvo WindowsIdentity(tokenHandle);
 // Étape -3
 impersonatedUser = newId.Impersonate();

 }
 ran fredi/lè (Eksepsyon ansyen)
 {
 Console.WriteLine("Eksepsyon ki te fèt. " + ansyen.Mesaj);
 }
 }


 /// <rezime>
 /// S' D'
 /// </rezime>
 piblik Annuler vid()
 {
 impersonatedUser.Undo();
 // Bay libète jetons yo.
 Si (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</fen>

Vous pou m' blog.

Technorati baj:

Youn te panse sou "FBA Et SQL sèvè: Yon istwa renmen

  1. David byen bonè
    Mwen regrèt validation sa enfòme kesyon Men, mwen te kapab pa evalye kijan pou l te voye w yon kouryèll de blog sa a.
    Ou te gen yon ansyen pòs kote ou te ofri yon gwo fason pou filtre yon bibliyotèk pou wè non done. Èske ou gen okenn lide: ki jan ou ka wè yon lis dokiman non nan yon dokiman an antye bibliyotèk? W ap itilize yon tèren vid nan rechèch avanse pa retounen nan kèk rezilta yo.
    N. repons

kite yon repons

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make *