كيفية التحقق من اسم المستخدم/اسم الحساب التي يتم تشغيل التعليمات البرمجية?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/96182

سؤال

نريد قطعة من التعليمات البرمجية التي يمكننا لصق في التعليمات البرمجية خلف والحصول على اسم المستخدم بموجبه تشغيل التعليمات البرمجية ل:- (عادة .صافي رمز يعمل تحت حساب تجمع التطبيقات)

  1. توقيت العمل.

  2. استقبال الحدث.

  3. Webpart.

  4. تخطيطات صفحة التطبيق.

  5. تحكم المستخدم

  6. JSOM

ثم نريد أن نستخدم RWEP ومرة أخرى تحقق من اسم المستخدم تشغيل التعليمات البرمجية تحت.

ما مقتطف سنستخدم ؟

التحديث

أنا لا أريد الكود الذي يعطيني اسم تسجيل الدخول للمستخدم.أريد الكود الذي سوف تعطيني اسم الحساب والتي بموجبها سيتم تشغيل التعليمات البرمجية.

التحديث

على صفحة التطبيق:

  SPUser user1 = SPContext.Current.Web.CurrentUser;
        string userName1 = user1.Name;

يعطي قيمة مثل:تسجيل الدخول اسم المستخدم.

 SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(idd))
            {
                using (SPWeb rootWeb = site.OpenWeb())
                {
                    SPUser user2 = SPContext.Current.Web.CurrentUser;
                    string userName2 = user2.Name;
                }

            }
        });

يعطي قيمة مثل:تسجيل الدخول اسم المستخدم.

 var User = System.Security.Principal.WindowsIdentity.GetCurrent().User;
        var UserName = User.Translate(typeof(System.Security.Principal.NTAccount)).Value;

يعطي قيمة مثل:NT AUTHORITY\IUSR

  SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(idd))
            {
                using (SPWeb rootWeb = site.OpenWeb())
                {
                    var User12 = System.Security.Principal.WindowsIdentity.GetCurrent().User;
                    var UserName12 = User12.Translate(typeof(System.Security.Principal.NTAccount)).Value;                        
                }

            }
        });

يعطي قيمة مثل:servername\spadminaccountname

التحديث

(في حالتنا موقع كول.المشرف اسم المستخدم هو نفس تطبيق ويب apppool اسم المستخدم, لذلك الحساب هل هو حقا؟)

1) يمكن أن نستنتج أن وثائق التفويض التي يعمل هو 'NT AUTHORITY\IUSR' و إذا كان لنا أن استخدام RWEP ثم المستخدم 'webapp/sitecol admin user acount'?على سبيل المثال لنفترض أننا الوصول إلى ملف على الخادم ثم فوق 2 حسابات سيتم استخدامها للوصول إلى الملف و لا حساب تسجيل الدخول المستخدم.

2) استخدام أي حساب عند الوصول إلى SharePoint الموارد ؟ هو واحد من 2 أعلاه أو تسجيل في المستخدمين اعتماده ؟

هل كانت مفيدة؟

المحلول

NotVonKaiser في هذه الحالة هو الصحيح:

1 يعمل تحت حساب مزرعة و جميع الآخرين هي قيد تسجيل الدخول في حساب المستخدم!

تسجيل في حساب المستخدم استدعاء nt/مصادقة حساب على ملقم أنه/أنها قد المصادقة على الخادم todo ما هو طلب ما يجب عمله!إذا كان هذا منطقي ;)

أعتقد nt/مصادقة كما لو كنت جسديا تسجيل الدخول إلى الملقم todo مهمة محددة كأنك على جهاز الكمبيوتر المكتبي الخاص بك عندما كنت في السلطة على الجهاز logonto ويندوز!

حيث جعل هذا واضحا:

2-6 تعمل تحت الحالي بتسجيل الدخول في حساب المستخدم الذي لديه nt المصادقة(يسمح الوصول إلى ما هو مورد الحاجة)

الآن أقول هذا ، هناك عامل آخر يشارك و هذا ما يجب عمله مع الويب الخاص بك.التكوين و cas سياسة (أمان الوصول إلى التعليمات البرمجية السياسة) ، اعتمادا على ما قمت بتعيين (كامل, جزئي, منخفض) سوف determin الوصول عليك أن الموارد الحالية في تسجيل حساب!

حيث نشر الوحيد الخلافات بين الثقة الكاملة تنفيذ نموذج bin/CAS تنفيذ نموذج الموقع حيث يمكنك نشر التجميعات و أمان الوصول إلى التعليمات البرمجية السياسات المرتبطة بهذا الموقع.في كلتا الحالتين, أي غير تجميع البنود ، مثل ASP.NET ترميز الملفات, ملفات XML أو ملفات الموارد ، عادة نشر SharePoint الجذر على كل الشبكة الأمامية الملقم.إذا كنت ترغب في نشر مزرعة الحل باستخدام إما من المزرعة حل نماذج التنفيذ ، يجب أن يكون لديك حق الوصول إلى ملقم الملف النظام يكون عضوا في المزرعة مجموعة الأمان Administrators.

http://msdn.microsoft.com/en-us/library/ff798412.aspx

معظم يتم تنفيذ التعليمات البرمجية الحالية تسجيل في حساب المستخدم....إلا إذا كنت مستخدم reunwithelevatedprivlages من ذلك هو شيء آخر!

الآن إلى السؤال الذي لا اجد لشيء أكثر تعقيدا وأعمق لا اجد ما كنت تبحث عن فقد ما يجب عمله مع عملية العامل!

لذا عليك تسجيل الدخول إلى الجهاز -> الانتقال إلى موقع sharepoint التي يصادق حسابك (nt المصادقة) -> من أداء الوظيفة التي تعمل تحت عامل عملية w3wp.exe و أعتقد أن هذا هو أن يشير إلى ؟

عامل عملية وضع المستخدم التعليمات البرمجية التي يتمثل دورها في عملية الطلبات ، مثل معالجة طلبات للعودة إلى صفحة ثابتة, الاحتجاج ISAPI تمديد أو التصفية ، أو تشغيل واجهة العبارة الشائعة (CGI) معالج.

في كل تطبيق العزل وسائط ، عامل عملية التحكم من خلال خدمة WWW.ومع ذلك ، في وضع عزل العملية المنفذة ، تشغيل العملية المنفذة ملف تنفيذي اسمه W3wp.exe في IIS 5.0 وضع عزل عامل عملية يتم استضافتها من قبل Inetinfo.exe.الشكل 2.2 ، الذي يصور العمارة من أجل وضع IIS 5.0 المعزول ، يستخدم خط متقطع تشير إلى العلاقة بين عامل عملية خدمة WWW.

العمليات المنفذة استخدام HTTP.sys لتلقي طلبات لإرسال الاستجابات باستخدام HTTP.العمليات المنفذة أيضا تشغيل رمز التطبيق ، مثل ASP.NET تطبيقات و خدمات ويب XML.يمكنك تكوين IIS لتشغيل العمليات المنفذة متعددة تخدم التطبيقات المختلفة حمامات السباحة في وقت واحد.هذا التصميم يفصل تطبيقات عملية حدود ويساعد على تحقيق أقصى قدر من ملقم ويب الموثوقية.

افتراضي العمليات المنفذة في وضع عزل العملية عامل تشغيل تحت حساب خدمة شبكة الاتصال التي لديها أقوى الأمن (على الأقل الوصول) متوافقة مع الوظائف المطلوبة.

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/29f53968-0115-451f-b26d-5ad58d87b5d1.mspx?mfr=true

وبالتالي فإن العملية المنفذة iis يمكن تنفيذ التعليمات البرمجية في أسفل ولكن القيام بذلك في المقام الأول تحتاج إلى أن يكون nt مصادقة regarless!

الرابط التالي يظهر فهم أفضل!

http://msdn.microsoft.com/en-us/library/ff798428.aspx

تحرير

1) يمكن أن نستنتج أن وثائق التفويض التي يعمل هو 'NT AUTHORITY\IUSR' و إذا كان لنا أن استخدام RWEP ثم المستخدم 'webapp/sitecol admin user acount'?على سبيل المثال لنفترض أننا الوصول إلى ملف على الخادم ثم فوق 2 حسابات سيتم استخدامها للوصول إلى الملف و لا حساب تسجيل الدخول المستخدم.

حسنا أعتقد أن الحصول على الخلط ؟

هناك نوعان من مراحل هذا....يسجل المستخدم في الجهاز ؟ هذا المستخدم لديه حق الوصول و هو جزء من 'NT AUTHORITY\IUSR' إذا كان قادرا على الوصول إلى الموارد المحددة التي تتطلب منك أن تكون 'NT AUTHORITY\IUSR' داخل sharepoint.....الآن تشغيل التعليمات البرمجية على الخلفية من الخادم سيكون ضمن w3wp.exe (مثل .cs رمز (في الجمعية))...هذه هي تعمل تحت حساب تجمع التطبيقات..ولكن هذا لن تشغيل إلا إذا كان تسجيل الدخول المستخدم هو جزء من 'NT AUTHORITY\IUSR'.ليست واحدة أو أخرى ، مثل كليهما في نفس الوقت المستخدمة.

تعرف تسجيل الدخول حساب الخاص بك باستخدام obviouslt ;) ولكن أن تعرف w3wp.exe تحتاج إلى الانتقال إلى الخادم غوتو ذيذ مدير ننظر في عمليات البحث w3wp.exe...يجب أن تشاهد العمود التالي مع اسم المستخدم الذي سيكون ويب حساب تجمع التطبيقات.

2) استخدام أي حساب عند الوصول إلى SharePoint الموارد ؟ هو واحد من 2 أعلاه أو تسجيل في المستخدمين اعتماده ؟

sharepoint الموارد يتم الوصول إليها من خلال تسجيل الدخول المستخدم.نفس المذكور أعلاه.

نصائح أخرى

1-ينبغي أن تعمل دائما تحت حساب مزرعة.

2 ، 3 ، 4 ، 5 ، يجب أن تكون قادرة على النمس هذه المعلومات باستخدام هذه التعليمة البرمجية:

SPUser user = SPContext.Current.Web.CurrentUser;
string userName = user.Name; //you can also call user.Email here

لاحظ أن هذا سوف لا تعمل بشكل صحيح إذا كان لديك 'RunWithElevatedPrivileges' مندوب كتلة.بدلا من ذلك, إذا كنت اسميها ضمن وفد كتلة عليك فقط الحصول على اسم الحساب الذي يتم تشغيل التعليمات البرمجية.إذا كنت تحتاج إلى توفير اسم المستخدم في هذه الحالة استدعاء 'SPContext' الكائن قبل أو بعد تشغيل مندوب كتلة.أنت لن تكون قادرة على تمرير كائن إلى مندوب كتلة مباشرة ولكن يجب أن تكون قادرة على استخراج ما تحتاج إلى سلاسل أو ما كنت وإرسالها لهم في.

بالنسبة CSOM ، على افتراض أنك تستخدم جافا سكريبت رمز كتلة يأتي من هذا MS الصفحة:

function getUserProperties() {

// Replace the placeholder value with the target user's credentials.
var targetUser = "domainName\\userName";

// Get the current client context and PeopleManager instance.
var clientContext = new SP.ClientContext.get_current();
var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

// Get user properties for the target user.
// To get the PersonProperties object for the current user, use the
// getMyProperties method.
personProperties = peopleManager.getPropertiesFor(targetUser);

// Load the PersonProperties object and send the request.
clientContext.load(personProperties);
clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {

// Get a property directly from the PersonProperties object.
var messageText = " \"DisplayName\" property is "
    + personProperties.get_displayName();

// Get a property from the UserProfileProperties property.
messageText += "<br />\"Department\" property is "
    + personProperties.get_userProfileProperties()['Department'];
$get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
$get("results").innerHTML = "Error: " + args.get_message();
}

سيكون لديك لديك SP.js مسبقة قبل هذا البرنامج النصي يعمل ، إما عن طريق الالتصاق في الصفحة الرئيسية أو عن طريق إضافة 'SharePoint:ScriptLink' كتلة في العلامات.

أساسا ما عليك القيام به هو هذا:

  1. استدعاء العميل السياق.
  2. إخبار العميل سياق ما تريد استرداد من ذلك.
  3. جعل استدعاء غير متزامن إلى خدمة ويب للحصول على تلك المعلومات.
  4. إعداد رد أساليب التعامل مع البيانات إذا المتزامن دعوة ناجحة أو لا.

على أمل أن يساعد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top