.NET 8 Браузер > Blazor server > API: "сквозная" аутентификация Windows?19.01.2026, 14:46. Показов 742. Ответов 16
Метки нет (Все метки)
Добрый день!
Приложения Blazor и Web API оба хостятся на IIS. В отличие от десктоп-клиента, Blazor передает identity аккаунта Аpplication Pool. Использую как HttpClient, так и SignalR. Если я правильно понимаю, то нужно отключить аутентификацию Windows на IIS и в проекте Web API, и переконфигурировать HttpClient/SignalR и авторизующее middleware, чтобы "вручную" передавать и получать identity конечного пользователя. Как это лучше сделать?
0
|
|
| 19.01.2026, 14:46 | |
|
Ответы с готовыми решениями:
16
Blazor server-side: тестирование
|
|
|
|||
| 19.01.2026, 15:02 | |||
|
- установить "Microsoft.AspNetCore.Authentication.Neg otiate" - инициализировать через .AddNegotiate() и уже будет доступен WindowsIdentity (ClaimsIdentity) в контексте запроса. А дальше уже настраивать то как именно у вас авторизация будет проходить - требования, точка входа и т.п..
0
|
|||
| 19.01.2026, 15:20 [ТС] | |||
|
Добавлено через 6 минут А авторизация и так уже реализована на стороне Web API.
0
|
|||
|
|
||
| 19.01.2026, 15:24 | ||
|
ClaimsIdentity - контейнер для уже авторизованного пользователя. По сути туда попадают всё что прошло стандартные протоколы авторизации. Ядро авторизации AspNetCore запихнёт туда то что считает нужным. Поэтому и был вопрос - сами будете протокол реализовывать или нет. Ну вот, а если была Negotiate авторизация, то текущий Identity будет типа WindowsIdentity. В котором уже содержится намного больше информации - токен доменной авторизации/аутентификации, списки групп в которые входит пользователь. По токену можно будет делать имперсонализацию или запросы в домен для получения более полной информации о полученных данных. Что по вашему "Application Pool identity"? Там вроде бы даже написано - текущий пользователь. В зависимости от настроек, там будет или системный аккаунт, или пользователь компа, или домена. Но в любом случае - виндовый пользователь, который идентифицируется как WindowsIdentity.
0
|
||
| 19.01.2026, 15:27 [ТС] | |
|
0
|
|
|
|
|||
| 19.01.2026, 15:31 | |||
|
В гугле ввёл "c# aspnetcore blazor negotiate simple webapp" ИИ выдал пример простейшего приложения. Добавлено через 2 минуты
0
|
|||
| 19.01.2026, 15:35 [ТС] | ||
|
0
|
||
| 19.01.2026, 16:33 [ТС] | ||||
|
Дальше в загрузчике страницы делаю запрос к API (эндпоинт возвращает информацию об авторизации). На его стороне - identity виртуального аккаунта ApplicationPoolIdenity
0
|
||||
|
|
|||
| 19.01.2026, 16:56 | |||
|
Вот это не понял.
![]() И хотелось бы ещё Program.cs увидеть где всё это настраивается. Как минимум, чтобы сравнить с тем что микрософт рекомендует для блейзора. А то может быть ещё у вас какой-нибудь режим сервера стоит, то там наверняка авторизация вообще по другому работает. (так как я с Блейзором никогда не работал и не хочу, то именно в этой теме у меня опыта нет, только по чтению новостей и статей).
0
|
|||
| 19.01.2026, 17:24 [ТС] | |||||||||||||||||||||
|
Blazor page:
0
|
|||||||||||||||||||||
|
|
|||||||||
| 19.01.2026, 21:35 | |||||||||
|
Не знаю кто такой AuthStateProvider, но User.Identity это оно и есть. не UserInfoService.GetUserInfo() а UserInfoService.GetUserInfo(state.User.Identity)?Но врят ли вы бы столько забыли скопировать. Потому что странно что при этом User правильный, а из WinIdentity другой. Обычно так не бывает. Или бывает если кто-то вызывает WindowsIdentity.CurrentUser() (как-то так), тогда там да, будет AppPool. Вы просто не можете глянуть что находится в Identity? HttpContext.User.Identity без всяких аутсервисов, которые не понятно откуда берут данные.
0
|
|||||||||
| 20.01.2026, 00:57 [ТС] | |
|
HF, я наверное в исходном посте недостаточно подробно объяснил.
Blazor server app и Web API это два разных приложения (проекта) в одном решении. У каждого своя конфигурация в своем собственном program.cs, appsettings.json, launchsettings.json. Web API проект - это «серверная» часть (контроллеры+сервисы), Blazor app - «клиентская» (UI + HttpClient). Оба хостятся на IIS, каждый в своем отдельном Application Pool.
0
|
|
| 20.01.2026, 09:22 [ТС] | ||
|
0
|
||
| 20.01.2026, 09:30 [ТС] | |
|
0
|
|
|
|
||
| 20.01.2026, 11:13 | ||
|
Общие советы (особенно с которыми я сам работаю) без проблем, могу попробовать предлагать. Возможно у кого-то реализованы подобные варианты и смогут помочь, но я врят ли.
0
|
||
| 20.01.2026, 17:40 [ТС] | |
Сообщение было отмечено HF как решение
Решение
В общем после ресерча стало понятно что "из коробки" сквозная аутентификация Windows работать не будет и не должна (именно из-за double-hop). Одним из чистых и масштабируемых решений будет создание отдельной службы Identity Provider Service, управляющей выдачей JWT для различных сценариев: веб-клиент (Blazor Server/WASM), десктоп клиент (WinForms/WPF) и пр.
1
|
|
| 20.01.2026, 17:40 | |
|
Помогаю со студенческими работами здесь
17
Blazor (server-side): избавиться от _Host.cshtml
Добавление Blazor Server в Asp net core MVC 8 Blazor Server не вызывает Dispose() при переходе на несуществующую страницу Blazor server App на MacOs Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|