FBA agus SQL Server: A Scéal grá

My colleague has been working on a web part in an FBA environment. Among other things, the web part pulls some data from SQL server. The grand plan for this project dictates that a DBA configures data level security in SQL (i gcomparáid le neadú le haitheantas úsáideora i ceist SQL nó roinnt cur chuige eile).

The problem is that SQL server doesn’t know anything about our FBA environment so it can’t trust us. We solved this problem by, ar easpa focal níos fearr, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.

Cé go bhfuil FBA gné ASP.NET, táimid ag daoine Nation SharePoint a mhúin an innill chuardaigh éagsúla má tá tú ag ceistiú do FBA, you must mean you want know how to configure FBA in SharePoint. I failed to find find any information on how to enable an FBA oriented ASP.NET application to communicate with SQL in the way we needed.

Le linn an taighde seo, muid ag léamh-airteagal seo: ASP.NET phearsanú

Níos mó taighde thug dúinn a t-airteagal seo codproject: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

A chabhraigh linn an scríobh ár gcód, which I’ve included below. It’s not the most elegant stuff, ach d'oibrigh sé. I hope you find it helpful.

Seo an cód a d'oibrigh le linn:

chosaint neamhní btnSearchCarrier_Click(seoltóir réad, EventArgs e)
 {
 iarracht
 {
 ImpersonateUser AI = nua ImpersonateUser();
 // GACH: Dintiúir Ionadaigh
 ("Ainm Fearainn", "Ainm Úsáideora", "Pasfhocal");

//
 CÓD
//

 iU.Undo();
 }
 ghabháil (Ex Eisceacht)
 {

 }
 }

// Ag baint úsáide as phearsanú rang mar a luaitear anseo thíos.

poiblí ranga ImpersonateUser
 {
 [DllImport("Advapi32.dll", SetLastError = fíor)]
 poiblí statach seachtracha bool LogonUser(
 LpszUsername Teaghrán,
 Teaghrán lpszDomain,
 Teaghrán lpszPassword,
 dwLogonType slánuimhir,
 slánuimhir dwLogonProvider,
 tag IntPtr phToken);

 [DllImport("Kernel32.dll", Tacar carachtar = CharSet.Auto)]
 príobháideach seachtracha statach bool CloseHandle(IntPtr láimhseáil);

 príobháideach statach IntPtr tokenHandle = nua IntPtr(0);
 príobháideach statach WindowsImpersonationContext impersonatedUser;

 // Má tá tú ag ionchorprú an gcód seo isteach i dll?, a bheith cinnte a éileamh go bhfuil sé
 // Ritheann le FullTrust.
 [PermissionSetAttribute(SecurityAction.Demand, Ainmnigh = "FullTrust")]
 poiblí neamhní aithris(teaghrán domainName, ainm úsáideora teaghrán, Focal faire teaghrán)
 {
 iarracht
 {

 // Bain úsáid as an fheidhm LogonUser unmanaged a fháil ar an chomhartha úsáideora do
 // an t-úsáideoir a shonraítear, bhfearann, agus do phasfhocal a.
 CONST LOGON32_PROVIDER_DEFAULT = o 0;

 // Dul thar an paraiméadar is cúis LogonUser a chruthú chomhartha bunscoile.
 CONST slánuimhir LOGON32_LOGON_INTERACTIVE = 2;
 tokenHandle = IntPtr.Zero;

 // Céim -1 Glaoigh LogonUser chun a láimhseáil a fháil ar chomhartha rochtain.
 bool = returnValue LogonUser(
 ainm úsáideora,
 Ainm Fearainn,
 Focal faire,
 LOGON32_LOGON_INTERACTIVE,
 LOGON32_PROVIDER_DEFAULT,
 tag tokenHandle); // tokenHandle - nua slándála chomhartha

 más rud é (bréagach == returnValue)
 {
 slánuimhir RET = Marshal.GetLastWin32Error();
 Console.WriteLine("LogonUser glaoch theip ar a bhfuil cód earráid : " +
 ceart);
 caith System.ComponentModel nua.Win32Exception(ceart);
 }

 // Céim - 2
 WindowsIdentity newId = nua WindowsIdentity(tokenHandle);
 // Céim -3
 impersonatedUser = newId.Impersonate();

 }
 ghabháil (Ex Eisceacht)
 {
 Console.WriteLine("Tharla Eisceacht. " + ex.Message);
 }
 }


 /// <achoimre>
 /// Stadanna pearsanú
 /// </achoimre>
 poiblí neamhní Undo()
 {
 impersonatedUser.Undo();
 // Saor in aisce na comharthaí.
 más rud é (tokenHandle != IntPtr.Zero)
 CloseHandle(tokenHandle);
 }
 }

</deireadh>

Liostáil le mo bhlag.

Clibeanna Technorati:

Shíl amháin ar "FBA agus SQL Server: A Scéal grá

  1. David Luath
    Tá brón orm le haghaidh phost an cheist seo nach mbaineann ach ní raibh mé in ann an figiúr amach conas a sheolann tú ríomhphost ó an bhlag seo.
    You had a previous post where you offered a great way to filter a library to view untagged data. Do you have any thoughts as to how you might view a list of untagged documents in an entire document library? Using an empty field in advanced search does not return any results.
    Freagra

Leave a Reply

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte *