PDA

View Full Version : گرفتن username كاربر از ويندوز هنگام login در سيستم client



nkhozooii
شنبه 20 مهر 1387, 15:56 عصر
من برنامه اي دارم كه روي سرور اجرا مي شود و بايد كاربري را كه در شبكه محلي وارد مي شود را بر اساس username آن در سيستم خودش شناسايي كند. از كد هاي زير جهت گرفتن user name استفاده كرده ام. اما وقتي برنامه به صورت local در سيستم خودم اجرا مي شود جواب مي دهد اما وقتي پابليش مي گيرم و از سيستم هاي client برنامه را اجرا مي كنم جواب نمي دهد آيا بايد تنظيمات خاصي را در IIS انجام دهم يا كد ديگري بنويسم؟


string userN;
userN = System.Security.Principal.WindowsIdentity.GetCurre nt().Name.ToString();



جوابي كه در سيستم خودم مي دهد و درست هم است به صورت زير است كه nkhozooii كلمه كاربري مي باشدكه از ويندوز گرفته:



OAUTOMATION\nkhozooii

اما جوابي كه هنگام اجراي برنامه در سيستم هاي client مي دهد ( هنگامي كه برنامه آپلود مي شود)به صورت زير است!!!



NT AUTHORITY\NETWORK SERVICE


لطفا راهنمايي كنيد . خيلي ضروري است.من هرقدر جستجو كردم به نتيجه نرسيدم.:ناراحت:

nkhozooii
یک شنبه 21 مهر 1387, 07:36 صبح
شما را به خدا يكي جواب دهد يعني هيچ راهي براي گرفتن كلمه كاربري در سيستم client وجود ندارد؟برنامه اي كه در سمت client اجرا شود و username سيستم او را بدهد؟؟؟؟

asp2.net
چهارشنبه 24 مهر 1387, 19:38 عصر
عزیزم من هم همین مشکل را داشتم کلی سعی کردم نشد مجبور شدم از IP کامپیوتر استفاده کنم

nkhozooii
شنبه 27 مهر 1387, 07:50 صبح
من مشكل را حل كردم البته براي شبكه LAN كه ليست كاربران در Active directory موجود مي باشد و به سيستم join شده اند. در اين حالت كد نوشته شده درست كار مي كند فقط بايد تنظيمات زير را انجام داد.
1) در IIS گزينه Anonymous access را disable مي كنيم.
2) عبارت زير را در wib config وارد مي كنيم:


<authentication mode="Windows"/>
<identity impersonate="true"/>

كه به اين صورت مشكل من براي شبكه داخلي حل شد اما همچنان اين مشكل براي كاربراني كه از اينترنت استفاده مي كنند باقي است و نمي دانم آيا راهي وجود دارد كه كلمه كاربري آنها را هم به محض ورود بتوان از سيستم خودشان گرفت يا نه؟؟

sena123
شنبه 18 آبان 1387, 11:06 صبح
authenticationmode="Windows
سلام خواهش می کنم استفاده از authenticationmode="Windows برای کاربران بانک را توضیح دهید

dr.pantagon
شنبه 18 آبان 1387, 21:28 عصر
سلام
اگر یوزر نیم سیستم رو می خواهید کد زیر

System.Net.Dns.GetHostName()اگر نوع سیستم عامل نسخه و بیلد رو می خواهید

Environment.OSVersion.Clone.ToString()اگر نوع Browser رو می خواین

Request.Browser.Type.ToString()اگر هم آیپی رو می خواهین


Request.UserHostAddress()

nkhozooii
یک شنبه 19 آبان 1387, 10:49 صبح
جناب dr.pantagon نمي دانم كد هاي نوشته شده توسط شما در سيستم هاي client جواب مي دهد يا نه . مثلا من كد زير را در سيستم خودم به كار بردم جواب داد و نام كاربري را برگرداند ولي در سيستم هاي كلاينت نام كاربري ماشين سرور را برميگرداند:


system.enviroment.username

به هرحال كدها را امتحان مي كنم. با تشكر

dr.pantagon
دوشنبه 20 آبان 1387, 18:08 عصر
من خودم برای بلاک کردن کاربرانی که به سایت هام Attack می دن تنها به کوکی و فیلتر کردن IP اکتفا نمی کنم یک سری از مشخصات خاص که unique باشن رو از سیستم کلاینت می گیرم یوزر رو هم همیشه می گیرم .

جواب می دن مطمئن باش :چشمک:

nkhozooii
چهارشنبه 22 آبان 1387, 16:09 عصر
جناب dr.pantagon شما را به خدا ؛ لطفا دقيقا بگيد چگونه مي توانم يوزر نيمي را كه كاربر با آن به سيستم لاگين كرده به دست آورم؟ در كد قبلي تان خطي كه از GetHostName استفاده كرده بوديد فقط نام كامپيوتر را مي دهد. خيلي ضروري است لطفا واضح توضيح دهيد.از لطف شما پيشاپيش سپاسگذارم.