Ошибка политики Blazor Server <AuthorizeView>: «Не удалось установить доверительные отношения между основным доменом и дC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка политики Blazor Server <AuthorizeView>: «Не удалось установить доверительные отношения между основным доменом и д

Сообщение Anonymous »

Это веб-приложение Blazor, использующее глобальную интерактивность сервера в .NET 10.
Я использую нашу внутреннюю Windows Active Directory для назначения пользовательских ролей, с которыми у меня не возникло проблем. Однако после добавления нового пользовательского удостоверения с помощью преобразователя мой компонент завершается с ошибкой.

Не удалось установить доверительные отношения между основным доменом и доверенным доменом.

Я сталкивался с этим раньше с приложениями, не принадлежащими Blazor, при попытке прочитать несуществующую группу AD, поэтому я считаю, что добавляемое мной пользовательское утверждение роли не выбирается. up.
У меня есть следующий преобразователь утверждений, урезанный для принудительного применения роли администратора:
using Microsoft.AspNetCore.Authentication;
using System.Security.Claims;

namespace MyApp
{
public class ClaimsTransformer : IClaimsTransformation
{
public Task TransformAsync(ClaimsPrincipal principal)
{
var customIdentity = new ClaimsIdentity();
customIdentity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));

principal.AddIdentity(customIdentity);

return Task.FromResult(principal);
}
}
}

Затем я добавляю этот преобразователь утверждений в свой запуск, полный запуск выглядит следующим образом:
using MyApp;
using MyApp.Components;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Negotiate;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();

// Add authentication
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();

// Register the transformer
builder.Services.AddTransient();

// Required for use in apparently?
builder.Services.AddCascadingAuthenticationState();

// Policy for the to use
builder.Services.AddAuthorizationBuilder()
.AddPolicy("AdminPolicy", policyBuilder =>
{
policyBuilder.RequireAuthenticatedUser();
policyBuilder.RequireRole("Admin");
});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
app.UseHttpsRedirection();

app.UseAntiforgery();
app.MapStaticAssets();

app.UseAuthentication();
app.UseAuthorization();

app.MapRazorComponents()
.AddInteractiveServerRenderMode();

app.Run();

Затем, чтобы проверить, я просто настроил его в своем компоненте Home.razor:


Admin


Not Admin




Подробнее здесь: https://stackoverflow.com/questions/798 ... hip-betwee
Ответить

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

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

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

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

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