Если я запущу программа использует IIS Express, работает нормально и проблем нет. Но если я добавлю его на тестовый сервер, он получит сообщение об ошибке:
Ошибка: в текущем канале произошло необработанное исключение, поэтому этот канал будет быть прекращено. Для получения более подробной информации включите подробные исключения, установив «DetailedErrors: true» в «appSettings.Development.json» или задав «CircuitOptions.DetailedErrors».
I используйте этот код для получения AD пользователя:
Код: Выделить всё
public class CustomAuthStateProvider : AuthenticationStateProvider
{
private readonly IAppUserRepository _appUserRepository;
public CustomAuthStateProvider(IAppUserRepository appUserRepository)
{
_appUserRepository = appUserRepository;
}
public override async Task GetAuthenticationStateAsync()
{
var userName = GetCurrentUserName();
var fullName = await GetFullName();
var role = await GetCurrentUserRoleAsync();
if (userName is not null)
{
var claims = new[]
{
new Claim(ClaimTypes.Name, userName),
new Claim(ClaimTypes.NameIdentifier, fullName),
new Claim(ClaimTypes.Role, role),
};
var identity = new ClaimsIdentity(claims, "Windows Authentication");
var user = new ClaimsPrincipal(identity);
return new AuthenticationState(user);
}
else
{
return new AuthenticationState(new ClaimsPrincipal());
}
}
public string GetCurrentUserName()
{
var loggedUser = WindowsIdentity.GetCurrent();
string? userName = loggedUser.Name;
userName = userName?.Replace("\\", "/");
int slash = userName.LastIndexOf('/');
return slash >= 0 ? userName.Substring(slash + 1) : userName;
}
public async Task GetFullName()
{
var userName = GetCurrentUserName();
var adUser = await _appUserRepository.GetUserFullname(userName);
if (string.IsNullOrEmpty(adUser))
{
return $"not registered({adUser})";
}
return adUser;
}
public async Task GetCurrentUserRoleAsync()
{
var userName = GetCurrentUserName();
var role = await _appUserRepository.GetUserRoleAsync(userName);
return role;
}
Есть ли у кого-нибудь идеи? в чем проблема?
Подробнее здесь: https://stackoverflow.com/questions/784 ... 8-using-ad