Как улучшить аутентификацию, чтобы отправлять запросы на согласие администратора только арендаторам из белого списка в AC#

Место общения программистов C#
Ответить
Anonymous
 Как улучшить аутентификацию, чтобы отправлять запросы на согласие администратора только арендаторам из белого списка в A

Сообщение Anonymous »

В моем приложении ASP.NET Core MVC я реализовал аутентификацию, чтобы гарантировать, что пользователи проходят проверку подлинности только в том случае, если их идентификатор клиента внесен в белый список. Ниже приведен фрагмент кода, который я использую:

Код: Выделить всё

// Sign-in users with the Microsoft identity platform
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(options =>
{
Configuration.Bind("AzureAd", options);

options.Events.OnTokenValidated = async context =>
{
string tenantId = context.SecurityToken.Claims
.FirstOrDefault(x => x.Type == "tid" || x.Type == "http://schemas.microsoft.com/identity/claims/tenantid")?.Value;

if (string.IsNullOrWhiteSpace(tenantId))
throw new UnauthorizedAccessException("Unable to retrieve tenantId from token.");

var dbContext = context.HttpContext.RequestServices.GetRequiredService();
var authorizedTenant = await dbContext.AuthorizedTenants
.FirstOrDefaultAsync(t => t.TenantId == tenantId);

if (authorizedTenant == null)
throw new UnauthorizedTenantException("This tenant is not authorized.");
};

options.Events.OnAuthenticationFailed = context =>
{
if (context.Exception is UnauthorizedTenantException)
{
context.Response.Redirect("/Home/UnauthorizedTenant");
context.HandleResponse(); // Suppress the exception
}

return Task.CompletedTask;
};
})
.EnableTokenAcquisitionToCallDownstreamApi(initialScopes)
.AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
.AddInMemoryTokenCaches();
Это работает так, как ожидалось. Однако когда пользователь как из белого, так и из не внесенного в белый список арендатора пытается войти в систему, приложение отправляет запрос на согласие администратора соответствующему арендатору. Я хочу отправлять запросы на согласие администратора только арендаторам из белого списка. Я не хочу никакого взаимодействия с арендаторами, не внесенными в белый список, включая отправку запросов на согласие администратора.
Как я могу улучшить свой процесс аутентификации, чтобы гарантировать, что запросы на согласие администратора отправляются только арендаторам, включенным в белый список, и любой арендатор, не внесенный в белый список, полностью заблокирован от дальнейшего взаимодействия?

Подробнее здесь: https://stackoverflow.com/questions/790 ... hitelisted
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»