টিএল; ডিআর
আইডেন্টিটি সার্ভার = টোকেন এনক্রিপশন এবং বৈধকরণ পরিষেবাগুলি OAuth 2.0 / ওপেনআইডি-কানেক্টের মাধ্যমে
এএসপি.এনইটি পরিচয় = এএসপি.নেটে বর্তমান পরিচয় পরিচালনা কৌশল
পূর্ববর্তী সংস্করণটির .Net পুরানো পদ্ধতিটি এখনও কাজ করে বা এর চেয়ে আরও নতুন সংস্করণ রয়েছে similar
আপনি এএসপি.নেট কোরটিতে পুরানো পথটি কেন অর্জন করতে পারেন তার কোনও কারণ আমি দেখতে পাচ্ছি না, তবে সাধারণভাবে, সেই কৌশলটি এএসপি.নেট পরিচয় দ্বারা প্রতিস্থাপন করা হয়েছিল, এবং এএসপি.নেট পরিচয়টি এএসপি.নেট কোরে জীবিত এবং ভাল।
https://docs.microsoft.com/en-us/aspnet/core/secures/authentication/ident
এএসপি.এনইটি পরিচয় ব্যবহারকারীর নাম, পাসওয়ার্ড (হ্যাশ), ইমেল, ফোন এবং সহজেই ফার্স্টনাম, লাস্টনাম বা অন্য যে কোনও কিছু ধরে রাখতে প্রসারিত করার জন্য এসকিউএল সার্ভারের মতো একটি ব্যাকিং স্টোর ব্যবহার করে। সুতরাং, কোনও কুকির মধ্যে ব্যবহারকারীর তথ্য এনক্রিপ্ট করার এবং ক্লায়েন্ট থেকে সার্ভারে পিছনে পিছনে পাস করার কোনও কারণ নেই। এটি ব্যবহারকারীর দাবী, ব্যবহারকারী টোকেন, ব্যবহারকারীর ভূমিকা এবং বাহ্যিক লগইনগুলির মত ধারণাকে সমর্থন করে। এএসপি.নেট পরিচয়ের সত্তা এখানে রইল:
- অ্যাসপনেট ব্যবহারকারীরা
- অ্যাসপনেট ইউজাররোলস
- AspNetUserClaims
- AspNetUserLogins (গুগল, এএডি এর মতো বাহ্যিক পরিচয় সরবরাহকারীদের সংযোগ দেওয়ার জন্য)
- AspNetUserTokens (ব্যবহারকারীর দ্বারা অ্যাক্সেস_ টোকেন এবং রিফ্রেশ_ টোকেনের মতো জিনিস সংরক্ষণের জন্য)
আপনার নিজস্ব কাস্টম নীতি তৈরি করে নিজের টোকেন সার্ভার শ্লোকগুলি ব্যবহার করার পক্ষে কি কি?
টোকেন সার্ভারটি এমন একটি সিস্টেম হবে যা অনুমোদনের এবং / অথবা প্রমাণীকরণের তথ্য সম্বলিত একটি সাধারণ ডেটা স্ট্রাকচার তৈরি করে। অনুমোদন সাধারণত টোকেন নামের অ্যাক্সেস_ টোকেন গ্রহণ করে । এটি "বাড়ির চাবি" হবে, তাই কথা বলার জন্য, আপনাকে দ্বার দিয়ে এবং সুরক্ষিত সংস্থান, সাধারণত একটি ওয়েব এপিআইয়ের বাসভবনে প্রবেশ করতে দেয়। প্রমাণীকরণের জন্য, id_token
এতে ব্যবহারকারীর / ব্যক্তির জন্য একটি অনন্য শনাক্তকারী রয়েছে। অ্যাক্সেস_ টোকেনে এই জাতীয় পরিচয়দানকারী রাখা সাধারণ, যদিও এখন এটি করার জন্য একটি ডেডিকেটেড প্রোটোকল রয়েছে: ওপেনআইডি-কানেক্ট ।
আপনার নিজস্ব সুরক্ষা টোকন পরিষেবা (এসটিএস) থাকার কারণ হ'ল ক্রিপ্টোগ্রাফির মাধ্যমে আপনার তথ্য সম্পদগুলি রক্ষা করা এবং কোন ক্লায়েন্ট (অ্যাপ্লিকেশন) এই সংস্থানগুলিতে অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করা। তদ্ব্যতীত, সনাক্তকরণ নিয়ন্ত্রণের মান এখন ওপেনআইডি-সংযোগের নির্দিষ্টকরণে বিদ্যমান। আইডেন্টিটি সার্ভার ওপেনআইডি-কানেক্ট প্রমাণীকরণ সার্ভারের সাথে মিলিত একটি OAuth 2.0 অনুমোদন সার্ভারের একটি উদাহরণ।
তবে আপনি যদি আপনার অ্যাপ্লিকেশনটিতে কেবল একটি ব্যবহারকারীর টেবিল চান তবে এর কোনও প্রয়োজন নেই। আপনার টোকেন সার্ভারের দরকার নেই - কেবল এএসপি.নেট পরিচয় ব্যবহার করুন। এএসপি.এনইটি পরিচয় আপনার ব্যবহারকারীকে সার্ভারের একটি দাবি আইডেন্টিটি অবজেক্টে ম্যাপ করে - কাস্টম আইপিআরসিস্ট্যানাল ক্লাসের প্রয়োজন নেই।
ক্লাউড ভিত্তিক সমাধান বা একটি পৃথক টোকন সার্ভার ব্যবহার করার সময় আপনি কীভাবে এটি আপনার বর্তমান অ্যাপ্লিকেশনটির সাথে একীভূত করবেন, আমার অ্যাপ্লিকেশনটিতে এখনও কি আমার ব্যবহারকারীর টেবিলের প্রয়োজন হবে আপনি কীভাবে দুজনকে সংযুক্ত করবেন?
একটি অ্যাপ্লিকেশন সহ পৃথক পরিচয় সমাধান সংহত করার জন্য এই টিউটোরিয়ালগুলি দেখুন:
https://identityserver4.readthedocs.io/en/latest/quickstarts/0_overview.html
https://auth0.com/docs/quickstart/webapp/aspnet-core
সর্বনিম্ন আপনাকে বাহ্যিক সরবরাহকারীর ব্যবহারকারী শনাক্তকারীকে ব্যবহারকারীর নাম ম্যাপ করার জন্য একটি দুটি কলামের টেবিলের প্রয়োজন হবে। AspNetUserLogins টেবিলটি এএসপি.নেট সনাক্তকরণে এটি করে। সেই টেবিলের সারিগুলি এসপনেট ব্যবহারকারীদের ব্যবহারকারী রেকর্ড হওয়ার উপর নির্ভরশীল।
এএসপি.এনইটি আইডেন্টিটি গুগল, মাইক্রোসফ্ট, ফেসবুক, যে কোনও ওপেনআইডি-সংযোগ সরবরাহকারী, অ্যাজুরে এডি ইতিমধ্যে রয়েছে এমন বাহ্যিক সরবরাহকারীদের সমর্থন করে। (গুগল এবং মাইক্রোসফ্ট ইতিমধ্যে ওপেনআইডি-সংযোগ প্রোটোকল কার্যকর করেছে যাতে আপনার তাদের নিজস্ব কাস্টম ইন্টিগ্রেশন প্যাকেজগুলির প্রয়োজন হয় না, উদাহরণস্বরূপ , এর মতো )। এছাড়াও, এএসএফএস এখনও এএসপি.এনইটি কোর পরিচয় উপলভ্য নয়।
এএসপি.নেট পরিচয় বহিরাগত সরবরাহকারীদের সাথে শুরু করতে এই ডকটি দেখুন:
https://docs.microsoft.com/en-us/aspnet/core/secures/authentication/social/
অন্যান্য এসএসও-তে প্রসারিত করতে সক্ষম হয়েও আমি জিএমএল / ফেসবুকের মাধ্যমে লগইনকে অনুমতি দেওয়ার জন্য কীভাবে একটি এন্টারপ্রাইজ অ্যাপ্লিকেশন তৈরি করতে পারি তার অনেকগুলি বিভিন্ন সমাধান রয়েছে
উপরে বর্ণিত হিসাবে, এএসপি.এনইটি পরিচয় ইতিমধ্যে এটি করে। "বাহ্যিক সরবরাহকারী" টেবিল এবং ডেটা আপনার বাহ্যিক লগইন প্রক্রিয়া চালিত করা মোটামুটি সহজ। সুতরাং যখন কোনও নতুন "এসএসও" বরাবর আসে, কেবল সরবরাহকারীর ইউআরএল, ক্লায়েন্টের আইডি এবং গোপনীয় তারা আপনাকে দেয় এমন বৈশিষ্ট্যগুলির সাথে একটি নতুন সারি যুক্ত করুন। ASP.NET পরিচয় ইতিমধ্যে সেখানে ভিজ্যুয়াল স্টুডিও টেম্পলেটগুলিতে ইউআই নির্মিত হয়েছে, তবে শীতল বোতামগুলির জন্য সামাজিক লগইন দেখুন ।
সারসংক্ষেপ
আপনার যদি কেবল পাসওয়ার্ড সাইন ইন করার ক্ষমতা এবং ব্যবহারকারীর প্রোফাইল সহ একটি ব্যবহারকারীর টেবিলের প্রয়োজন হয় তবে এএসপি.এনইটি পরিচয় সঠিক। বাহ্যিক কর্তৃপক্ষকে জড়িত করার দরকার নেই। তবে, যদি অনেক অ্যাপ্লিকেশনগুলিতে অনেকগুলি এপিআইএস অ্যাক্সেসের প্রয়োজন হয়, তবে পরিচয় এবং অ্যাক্সেস টোকেনগুলি সুরক্ষিত ও বৈধ করার জন্য একটি স্বাধীন কর্তৃপক্ষের অর্থ উপলব্ধি হয়ে যায়। আইডেন্টিটি সার্ভার একটি ভাল ফিট, বা ক্লাউড সমাধানের জন্য ওপেনডিক্টিক্ট-কোর , বা অ্যাথ0 দেখুন ।
আমার ক্ষমাপ্রার্থী হ'ল এটি চিহ্নটিকে আঘাত করছে না বা এটি খুব প্রারম্ভিক হলে। আপনি খুঁজছেন ষাঁড়ের দৃষ্টিতে বিনা দ্বিধায় যোগাযোগ করুন।
সংযোজন: কুকি প্রমাণীকরণ
কুকিজ সহ খালি হাড়ের প্রমাণীকরণ করতে, এই পদক্ষেপগুলি অনুসরণ করুন। তবে, আমার জ্ঞান অনুসারে একটি কাস্টম দাবী অধ্যক্ষ সমর্থিত নয়। একই প্রভাব অর্জন করতে, ClaimPrincipal
অবজেক্টটির দাবি তালিকাটি ব্যবহার করুন ।
কথোপকথনে "কোনও প্রমাণীকরণ নেই" চয়ন করে ভিজ্যুয়াল স্টুডিও 2015/2017 এ একটি নতুন এএসপি.নেট কোর 1.1 ওয়েব অ্যাপ্লিকেশন তৈরি করুন। তারপরে প্যাকেজ যুক্ত করুন:
Microsoft.AspNetCore.Authentication.Cookies
Configure
পদ্ধতির অধীনে এটি Startup.cs
(আগে app.UseMvc
):
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "MyCookieMiddlewareInstance",
LoginPath = new PathString("/Controller/Login/"),
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
তারপরে একটি লগইন ইউআই তৈরি করুন এবং এইচটিএমএল ফর্মটি এই জাতীয় একটি ক্রিয়া পদ্ধতিতে পোস্ট করুন:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(String username, String password, String returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (ModelState.IsValid)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, username),
new Claim("FirstName", "Alice"),
new Claim("LastName", "Smith")
};
var identity = new ClaimsIdentity(claims, "Password");
var principal = new ClaimsPrincipal(identity);
await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal);
return RedirectToLocal(returnUrl);
}
ModelState.AddModelError(String.Empty, "Invalid login attempt.");
return View();
}
HTTPContext.User অবজেক্টে আপনার কাস্টম দাবী থাকা উচিত এবং সহজেই দাবিদার প্রিন্সিপালের তালিকা সংগ্রহটি পুনরুদ্ধারযোগ্য।
আমি আশা করি এটি একটি পর্যাপ্ত সমাধান / প্রকল্প হিসাবে স্ট্যাকওভারফ্লো পোস্টের জন্য যথেষ্ট মনে হচ্ছে suff