এএসপি.নেট আইডেন্টিটির আইউজারসিকিউরিটিস্ট্যাম্পস্টোর <টু ইউজার> ইন্টারফেস কী?


178

এএসপি.এনইটি পরিচয় (এএসপি.এনইটিতে নতুন সদস্যপদ বাস্তবায়ন) এর দিকে তাকিয়ে, আমার নিজের প্রয়োগ করার সময় আমি এই ইন্টারফেসটি জুড়ে এসেছি UserStore:

//Microsoft.AspNet.Identity.Core.dll

namespace Microsoft.AspNet.Identity
{ 
    public interface IUserSecurityStampStore<TUser> :
    {
        // Methods
        Task<string> GetSecurityStampAsync(TUser user);
        Task SetSecurityStampAsync(TUser user, string stamp);
    }
}

IUserSecurityStampStoreডিফল্ট দ্বারা প্রয়োগ করা হয় EntityFramework.UserStore<TUser>যা প্রয়োজনীয় TUser.SecurityStampসম্পত্তি অর্জন করে এবং সেট করে ।

আরও কিছু খননের পরে, এটি প্রদর্শিত হয় যে SecurityStampএটি একটি Guidযা নতুন পয়েন্টগুলিতে নতুন উত্পন্ন হয়েছে UserManager(উদাহরণস্বরূপ, পাসওয়ার্ড পরিবর্তন করা)।

আমি রিফ্লেক্টরে এই কোডটি পরীক্ষা করে নিচ্ছি বলে আমি এর বাইরে অনেক কিছুই বোঝাতে পারি না । প্রায় সমস্ত প্রতীক এবং অ্যাসিঙ্ক তথ্য অপ্টিমাইজ করা হয়েছে।

এছাড়াও, গুগল খুব একটা সাহায্য করে নি।

প্রশ্নগুলি হ'ল:

  • SecurityStampএএসপি.নেট পরিচয় একটি কী এবং এটি কীসের জন্য ব্যবহৃত হয়?
  • না SecurityStampকোনো ভূমিকা পালন যখন প্রমাণীকরণ কুকি সৃষ্টি করা হয়েছে?
  • এটির সাথে সুরক্ষার কোনও পদক্ষেপ বা সতর্কতা অবলম্বন করা দরকার? উদাহরণস্বরূপ, ক্লায়েন্টদের এই মানটি প্রবাহকে প্রবাহিত করবেন না?

আপডেট (9/16/2014)

উত্স কোড এখানে উপলব্ধ:


1
@ ট্রাইংটোআইপ্রোভ, নতুন আইডেন্টিটি স্টোর এবং নির্ভরশীল ওউইন মিডলওয়্যারকে অত্যন্ত কাস্টমাইজ করার জন্য ডিজাইন করা হয়েছে। সিম্পল মেম্বারশিপের মতো, এসকিউএল এক্সপ্রেসে সর্বশেষতম ইএফের উপকারের বাইরে একটি বাকী বাস্তবায়ন রয়েছে। তবে স্কিমা, ডেটা অনুসন্ধান পদ্ধতি, ডেটাবেস উত্স এবং এমনকি মাঝারি ওয়্যারগুলি আপনার নির্দিষ্ট puprose চারপাশে কাস্টমাইজযোগ্য। আরও কি, এমএস দ্বারা প্রকাশিত বাস্তবায়ন নিজেই বিকশিত। এজন্য প্রত্যেকেই একটি নির্দিষ্ট সংজ্ঞা খুঁজতে লড়াই করে।
ডেভ আল্পেরোভিচ

উত্তর:


224

এটি আপনার ব্যবহারকারীর শংসাপত্রগুলির বর্তমান স্ন্যাপশটটি উপস্থাপন করার উদ্দেশ্যে। সুতরাং যদি কিছু পরিবর্তন না হয় তবে স্ট্যাম্পটি একই থাকবে। তবে যদি ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করা হয়, বা একটি লগইন সরানো হয় (আপনার গুগল / এফবি অ্যাকাউন্টটি লিঙ্কমুক্ত করা হয়), স্ট্যাম্পটি পরিবর্তিত হবে। এটি স্বয়ংক্রিয়ভাবে ব্যবহারকারীদের স্বাক্ষর করা / পুরানো কুকিজগুলি প্রত্যাখ্যান করার মতো জিনিসের জন্য প্রয়োজন যা 2.0 এ আসে।

সনাক্তকরণ এখনও মুক্ত উত্স নয়, এটি বর্তমানে পাইপলাইনে রয়েছে।

সম্পাদনা: ২.০.০-এর জন্য আপডেট হয়েছে। সুতরাং এর প্রাথমিক উদ্দেশ্য SecurityStampহ'ল সর্বত্র সাইন আউট সক্ষম করা। মূল ধারণাটি হ'ল যখনই কোনও পাসওয়ার্ডের মতো সুরক্ষার সাথে সম্পর্কিত কিছু ব্যবহারকারীর উপর পরিবর্তন করা হয় তখন কুকিজের যে কোনও বিদ্যমান সাইনটি স্বয়ংক্রিয়ভাবে অকার্যকর করা ভাল ধারণা, সুতরাং আপনার পাসওয়ার্ড / অ্যাকাউন্টটি আগে আপস করা থাকলে আক্রমণকারীটির আর অ্যাক্সেস থাকবে না।

২.০.০-তে আমরা নীচের কনফিগারেশনটি যুক্ত করেছি যাতে কুকিজ পরিবর্তন হয়ে গেলে তা দেখতে এবং প্রত্যাখ্যান করার OnValidateIdentityপদ্ধতিটি হুক করতে হবে। এটি স্ট্যাম্প অপরিবর্তিত থাকলে (যা ভূমিকা পরিবর্তন করার মতো জিনিসের যত্ন নেয় ইত্যাদি) ডাটাবেস থেকে ব্যবহারকারীদের দাবিগুলি স্বয়ংক্রিয়ভাবে সতেজ করে তোলেCookieMiddlewareSecurityStamprefreshInterval

app.UseCookieAuthentication(new CookieAuthenticationOptions {
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider {
        // Enables the application to validate the security stamp when the user logs in.
        // This is a security feature which is used when you change a password or add an external login to your account.  
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
    }
});

যদি আপনার অ্যাপ্লিকেশনটি এই আচরণটি স্পষ্টভাবে ট্রিগার করতে চায় তবে এটি কল করতে পারে:

UserManager.UpdateSecurityStampAsync(userId);

1
আমি যদি এমভিসি 4 টেবিলের কাঠামো থেকে ডেটা মাইগ্রেশন করছি? আমি কি কেবল সেই ক্ষেত্রটি ফাঁকা রাখতে পারি? বা এটি কোনওভাবে জিনিসগুলি স্ক্রু করতে চলেছে?
Dmytro শেভচেনকো

1
কার্যকরভাবে এটিকে কোনও বিকল্প হিসাবে তৈরি করতে আপনি কেবল এটি আইডি বা ধ্রুবক কিছু ফিরিয়ে দিতে পারেন। নাল / "" সম্ভবত কাজ করবে।
হাও কুং

2
ইউজারম্যানেজআর.অপ্যাটেটসিকিউরিটিস্ট্যাম্পএেন্সিক (ইউজারআইডি) ইউজঅউথবিয়ার টোকেন্সের জন্য কাজ করে?
রিকার্ড

7
না, ওআউথবিয়ার টোকেনগুলি বর্তমানে প্রভাবিত হচ্ছে না।
হাও কুং

3
UseCookieAuthenticationহয় অবচিত এখন দ্বারা। আমি এটি ব্যবহার করে কনফিগার করতে সক্ষম হয়েছি services.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromSeconds(10));
রিজেবোসচ

11

ইউজকুকিঅথেন্টিকেশনটি এখনই অবহেলা করা হয়েছে । আমি এটি ব্যবহার করে কনফিগার করতে সক্ষম হয়েছি

services.Configure<SecurityStampValidatorOptions>(o => 
    o.ValidationInterval = TimeSpan.FromSeconds(10));

প্রতি উত্তর থেকে উত্তর থেকে সরানো হয়েছে অনুরোধের


3
যদি আমি এএসপি.এনইটি (কোর না) ব্যবহার করি তবে এটি কি কাজ করে? আমি দ্বিধান্বিত. আমি যদি Asp পরিচয় রেপোতে যাই তবে এটি বলছে এটি Asp.NET কোরের জন্য।
এল ম্যাক

5

টোকেন যাচাইকরণের জন্য সিকিউরিটিস্ট্যাম্পটি পর্যবেক্ষণ করেছি।

রেপো করতে: ডেটাবেসে নালার জন্য সিকিউরিটিস্ট্যাম্প সেট করুন একটি টোকেন উত্পন্ন করুন (ঠিক আছে) টোকেন যাচাই করুন (ব্যর্থ)


এটি একটি বাগ হতে পারে। এটি টোকেন তৈরি করার কোনও অর্থ নেই যা যাচাই করা যায় না।
উইলিয়াম টি। ম্যালার্ড

বাগটি হ'ল সুরক্ষা স্ট্যাম্পটি ফাঁকা থাকলে এটি আপনাকে একটি টোকেন তৈরি করতে দেয়। (GenerateEmailConfirmationToken এই প্রোগ্রামটিতে যদি কোন নিরাপত্তা স্ট্যাম্প হয় ব্যর্থ উচিত এই উত্তরটি দেখুন:। stackoverflow.com/a/29926407/1058214 )
মেন্ডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.