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 (একটি SQL কোয়েরি ব্যবহারকারী আইডি অথবা অন্য কোনো পদ্ধতি এম্বেডিং উল্টোদিকে).
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, জন্য একটি ভাল শব্দ অভাব, manually impersonating an AD user so that we could connect to SQL such that SQL data level security works.
যদিও FBA একটি ASP.NET বৈশিষ্ট্য, আমরা SharePoint নেশন মানুষ বিভিন্ন সার্চ ইঞ্জিন আছে শিখিয়েছিলেন যে যদি আপনি 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.
এই গবেষণা অবশ্যই, আমরা পুনরায় পড়া এই নিবন্ধ: ASP.NET লোক সেজে ভান করা
আরো গবেষণা এই codproject নিবন্ধ আমাদের নেতৃত্বে: http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
যে সাহায্য আমাদের কোড লিখুন, which I’ve included below. It’s not the most elegant stuff, কিন্তু এটা কাজ. I hope you find it helpful.
এখানে কোড আমাদের জন্য যে কাজ:
সংরক্ষিত অনধিকৃত btnSearchCarrier_Click(বস্তুর প্রেরক, EventArgs ই) { চেষ্টা { ImpersonateUser u = নতুন ImpersonateUser(); // সব: শংসাপত্র প্রতিস্থাপন ("ডোমেইন নাম", "ব্যবহারকারীর নাম", "পাসওয়ার্ড"); // CODE // iU.Undo(); } ধরা (ব্যতিক্রম ভূতপূর্ব) { } } // অন্য লোক সেজে ভান বর্গ ব্যবহার করে নীচে উল্লিখিত. জনসাধারণের বর্গ ImpersonateUser { [DllImport("Advapi32.dll", SetLastError = সত্য)] জনসাধারণের অচর বহিরাগত bool LogonUser( স্ট্রিং lpszUsername, স্ট্রিং lpszDomain, স্ট্রিং lpszPassword, int dwLogonType, int dwLogonProvider, রেফারেন্স IntPtr phToken); [DllImport("Kernel32.dll", Charset = CharSet.Auto)] ব্যক্তিগত বহিরাগত অচর bool CloseHandle(IntPtr হ্যান্ডেল); ব্যক্তিগত অচর IntPtr tokenHandle = নতুন IntPtr(0); ব্যক্তিগত অচর WindowsImpersonationContext impersonatedUser; // যদি আপনি একটি ডিএলএল এই কোড সমসংস্থাভুক্ত, যে এটা দাবি করতে ভুলবেন না // FullTrust সঙ্গে রান. [PermissionSetAttribute(SecurityAction.Demand, = কর "পূর্ণ ট্রাস্ট")] জনসাধারণের মূর্ত করা অনধিকৃত(স্ট্রিং DOMAINNAME, স্ট্রিং ব্যবহারকারীর নাম, স্ট্রিং পাসওয়ার্ড) { চেষ্টা { // Unmanaged LogonUser ফাংশন এর জন্য ব্যবহারকারী টোকেন পাওয়া ব্যবহার // চিহ্নিত ব্যবহারকারী, ডোমেইন, এবং পাসওয়ার্ড. const int LOGON32_PROVIDER_DEFAULT = 0; // এই পরামিতিটি পাসিং LogonUser একটি প্রাথমিক টোকেন তৈরি কারণ. const int LOGON32_LOGON_INTERACTIVE = 2; tokenHandle = IntPtr.Zero; // পইঠা -1 LogonUser থেকে একটি প্রবেশাধিকার টোকেন একটি হ্যান্ডল প্রাপ্ত আহ্বান. bool returnValue = LogonUser( ব্যবহারকারীর নাম, ডোমেন নাম, পাসওয়ার্ড, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, রেফারেন্স tokenHandle); // tokenHandle - নতুন নিরাপত্তা টোকেন যদি (মিথ্যা == returnValue) { int K = Marshal.GetLastWin32Error(); Console.WriteLine("LogonUser কল ত্রুটি কোড ব্যর্থ : " + অধিকার); নিক্ষেপ নতুন System.ComponentModel.Win32Exception(অধিকার); } // পইঠা - 2 WindowsIdentity = newId নতুন WindowsIdentity(tokenHandle); // পইঠা -3 impersonatedUser = newId.Impersonate(); } ধরা (ব্যতিক্রম ভূতপূর্ব) { Console.WriteLine("অপবাদ ঘটেছে. " + ex.Message); } } /// <সারাংশ> /// মূর্তিপরিগ্রহ স্টপ /// </সারাংশ> জনসাধারণের অনধিকৃত পূর্বাবস্থায় ফিরুন() { impersonatedUser.Undo(); // টোকেনের মুক্ত. যদি (tokenHandle != IntPtr.Zero) CloseHandle(tokenHandle); } }
</শেষ>
আমার ব্লগ এর জন্য সাবস্ক্রাইব করুন.