Đăng ký chương trình xác thực dựa trên người thuê trong lõi asp.net 3.1


12

Hiện tại, tôi đã tạo một ứng dụng web 4 máy chủ Nhận dạng với các nhà cung cấp đăng nhập bên ngoài với các bí mật và id khách hàng mặc định. Nhưng mục tiêu của tôi là đăng ký các nhà cung cấp xác thực như Azure, Google, Facebook dựa trên người thuê.

Tôi đã sử dụng lắp ráp đa thuê nhà SaasKit , ở đây tôi đã dùng thử phần mềm trung gian app.usepertenant () . Nhưng phương thức UseGoogleAuthentication () đã lỗi thời, vì vậy tôi không thể đạt được xác thực nhiều bên thuê bằng cách sử dụng phần mềm trung gian hữu dụng này.

Mã hiện tại,

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

Mã dự kiến ​​là như dưới đây,

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);
 });


Có lẽ bạn có thể tìm thấy một câu trả lời hoặc một cách giải quyết trong chủ đề này .
Ruard van Elburg

@RuardvanElburg cảm ơn bạn đã trả lời, từ chuỗi đề xuất của bạn, chúng tôi có thể cập nhật các tùy chọn chương trình đã đăng ký dựa trên người thuê trong khi ứng dụng bắt đầu. Sau khi chúng tôi không thể cập nhật chúng.
Madhan kumar D

Bạn có muốn có các cài đặt ClientId / ClientSecret khác nhau cho mỗi bên thuê không? Hay bạn chỉ muốn thêm các chương trình khác nhau dựa trên người thuê nhà?
Kirk Larkin

@KirkLarkin các chương trình khác nhau với clientId / bí mật của người thuê nhà tương ứng. Giống như bên dưới, if (tenant.hasMicrosoft) {xác thực.AddMicrosoftAccount (tùy chọn => {tùy chọn.ClientId = "clientid"; tùy chọn.ClientSecret = "clientecret"; tùy chọn.SaveTokens = true;}); }
Madhan kumar D

Bất kỳ cập nhật về điều này?
Madhan kumar D

Câu trả lời:


3

Xem tài liệu MS chính thức, nhà cung cấp xác thực cho mỗi người thuê

Khung ASP.NET Core không có giải pháp tích hợp để xác thực nhiều bên thuê. Mặc dù khách hàng chắc chắn có thể viết một cái, bằng cách sử dụng các tính năng tích hợp, chúng tôi khuyên khách hàng nên tìm hiểu về Core Core cho mục đích này.


0

Vì xác thực cần phải được cấu hình trong quá trình đăng ký DI, bạn sẽ phải thiết lập tất cả các nhà cung cấp đăng nhập bên ngoài nói chung trong quá trình đăng ký xác thực.

Trong bước đó, bạn cần thêm tất cả các chương trình. Một lược đồ có id khách hàng / bí mật cố định, vì vậy bạn cần khởi động lại máy chủ Nhận dạng của mình với tất cả thông tin đăng nhập của nhà cung cấp đăng nhập bên ngoài, mà bạn hỗ trợ cho tất cả các khách hàng của mình. Tên chương trình cần phải là duy nhất.

Ví dụ, người thuê A có thể có sơ đồ "A_microsoft", người thuê B có thể có sơ đồ "B_microsoft", v.v.

Sau đó, bạn có thể tham khảo các lược đồ xác thực đó, khi gọi các phương thức trong IdentityServer. Đăng nhập, Thử thách, Đăng nhập, v.v.

Xin lưu ý rằng điều này sẽ yêu cầu bootstrapping IdentityServer một bộ đầy đủ các đối tượng thuê. Tùy thuộc vào kịch bản của bạn, nếu người thuê được cập nhật thường xuyên, nó cũng sẽ yêu cầu khởi động lại thường xuyên Máy chủ Nhận dạng để nhận biết các chương trình xác thực mới.


Nếu đó là một vấn đề, có lẽ bạn có thể bằng cách nào đó tăng cường các lược đồ xác thực đã đăng ký trong thời gian chạy của IdentityServer, nhưng nó sẽ không dễ dàng. Nó có thể yêu cầu triển khai tùy chỉnh lớn hơn của phần mềm trung gian xác thực đi kèm với AspNetCore.


0

Bạn có nghĩa là bạn muốn thêm hỗ trợ cho nhiều nhà cung cấp xác thực? Tài liệu này đã chỉ định cách thêm nhiều nhà cung cấp xác thực trong dịch vụ cấu hình. Không cần phải sử dụng app.UseXXXnữa để tự cấu hình đường ống

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.