ลงทะเบียนชุดรูปแบบการตรวจสอบสิทธิ์ตามผู้เช่าใน asp.net core 3.1


12

ปัจจุบันฉันได้สร้างเว็บแอพพลิเคชันเซิร์ฟเวอร์ Identity 4 ที่มีผู้ให้บริการเข้าสู่ระบบภายนอกที่มีรหัสลูกค้าและความลับเริ่มต้น แต่เป้าหมายของฉันคือการลงทะเบียนผู้ให้บริการการรับรองความถูกต้องเช่น Azure, Google, Facebook ตามผู้เช่า

ฉันใช้SaasKitชุดประกอบหลายผู้เช่าที่นี่ฉันได้ลองมิดเดิลแวร์ app.usepertenant ()แล้ว แต่UseGoogleAuthentication ()วิธีการล้าสมัยดังนั้นฉันไม่สามารถบรรลุการรับรองความถูกต้องของผู้เช่าหลายคนโดยใช้มิดเดิลแวร์ที่ใช้ก่อนหน้านี้

รหัสปัจจุบัน

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
   .AddMicrosoftAccount(option =>
     {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
     });

รหัสที่คาดหวังเป็นเหมือนด้านล่าง

var authentication = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);

if (tenant.hasMicrosoft)
{
   authentication.AddMicrosoftAccount(option =>
   {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
   });
}

if (tenant.hasGoogle)
{
   authentication.AddGoogle(option =>
   {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
   });
}

authentication.AddCookie( options =>
 {
    options.SlidingExpiration = true;
    options.ExpireTimeSpan = new TimeSpan(7, 0, 0, 0);
 });


บางทีคุณสามารถหาคำตอบหรือวิธีแก้ปัญหาในหัวข้อนี้
Ruard van Elburg

@RuardvanElburg ขอบคุณสำหรับการตอบกลับของคุณจากกระทู้ที่แนะนำของคุณเราสามารถอัปเดตตัวเลือกแผนการลงทะเบียนที่มีอยู่แล้วตามผู้เช่าในขณะที่แอปพลิเคชันเริ่มต้น หลังจากเราไม่สามารถอัปเดตได้
Madhan kumar D

คุณต้องการมีการตั้งค่า ClientId / ClientSecret ที่แตกต่างกันต่อผู้เช่าหรือไม่ หรือคุณต้องการเพิ่มรูปแบบที่แตกต่างกันตามผู้เช่าหรือไม่
Kirk Larkin

@ KirkLarkin มีรูปแบบที่แตกต่างกันพร้อมกับรหัสลูกค้า / ผู้เช่าตามลำดับ เช่นเดียวกับด้านล่างถ้า (tenant.hasMicrosoft) {authentication.AddMicrosoftAccount (option => {option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true;}); }
Madhan kumar D

มีการอัพเดทอะไรบ้าง?
Madhan kumar D

คำตอบ:


3

ดูเอกสาร MS อย่างเป็นทางการผู้ให้บริการการตรวจสอบสิทธิ์ต่อผู้เช่า

ASP.NET Core framework ไม่มีโซลูชันในตัวสำหรับการรับรองความถูกต้องแบบหลายผู้เช่า ในขณะที่ลูกค้าสามารถเขียนได้โดยใช้คุณสมบัติในตัวเราขอแนะนำให้ลูกค้าดูOrchard Coreเพื่อจุดประสงค์นี้


0

เนื่องจากจำเป็นต้องกำหนดค่าการตรวจสอบความถูกต้องระหว่างการลงทะเบียน DI คุณจะต้องตั้งค่าผู้ให้บริการเข้าสู่ระบบภายนอกทั้งหมดโดยทั่วไประหว่างการลงทะเบียนการตรวจสอบความถูกต้อง

ในระหว่างขั้นตอนนั้นคุณจะต้องเพิ่มแบบแผนทั้งหมด แบบแผนมีรหัสประจำตัวลูกค้า / รหัสลับที่แน่นอนดังนั้นคุณต้องบูตเครื่อง IdentityServer ของคุณด้วยข้อมูลประจำตัวของผู้ให้บริการเข้าสู่ระบบภายนอกทั้งหมดที่คุณสนับสนุนลูกค้าของคุณทั้งหมด ชื่อชุดรูปแบบต้องไม่ซ้ำกัน

ตัวอย่างผู้เช่า A อาจมีรูปแบบ "A_microsoft" ผู้เช่า B อาจมีรูปแบบ "B_microsoft" เป็นต้น

จากนั้นคุณสามารถอ้างถึงรูปแบบการพิสูจน์ตัวตนเหล่านั้นเมื่อเรียกใช้เมธอดใน IdentityServer ลงชื่อเข้าใช้ท้าทายลงชื่อออก ฯลฯ

โปรดระวังว่าการทำเช่นนี้จะต้องใช้ Bootstrapping IdentityServer ซึ่งเป็นชุดของผู้เช่าที่สมบูรณ์ ทั้งนี้ขึ้นอยู่กับสถานการณ์ของคุณหากผู้เช่ามีการปรับปรุงเป็นประจำก็จะต้องเริ่มต้นใหม่ประจำ IdentityServer ที่จะต้องตระหนักถึงรูปแบบการตรวจสอบใหม่


ถ้านั่นเป็นปัญหาคุณอาจจะเพิ่มรูปแบบการพิสูจน์ตัวตนที่ลงทะเบียนระหว่างรันไทม์ของ IdentityServer แต่ก็ไม่ง่ายนัก อาจต้องมีการปรับใช้ที่กำหนดเองที่ใหญ่ขึ้นของมิดเดิลแวร์การพิสูจน์ตัวตนที่มาพร้อมกับ AspNetCore


0

คุณหมายถึงคุณต้องการเพิ่มการสนับสนุนสำหรับผู้ให้บริการหลายคนหรือไม่ เอกสารนี้ได้ระบุวิธีเพิ่มผู้ให้บริการรับรองความถูกต้องหลายรายในบริการกำหนดค่า ไม่จำเป็นต้องใช้app.UseXXXอีกต่อไปเพื่อกำหนดค่าไปป์ไลน์ด้วยตัวเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.