2017-02-10 4 views
3

Мы имеем следующие технического стека в нашем приложении AngularJS2 Asp.Net API ядра SQL ServerAsp.net Ядро Web API - Текущий пользователь и проверка подлинности Windows

Теперь нам нужно сохранить имя пользователя для зарегистрированного пользователя в таблице во время создания/редактирования для данного элемента, то есть в Core API.

Мы попытались с

  • WindowsIdentity.GetCurrent(). Имя, это дает IIS AppPool \ Asp.netCore
  • HttpContext.User.Identity дает нулевое значение

Я получаю пользователя Имя с WindowsIdentity во время работы с Visual Studio, но с IIS, оно дает значение Asp.Netcore, то есть имя пула

Аутентификация Windows включена и анонимный Aut hentication отключена

Использование IIS версии 6.1

Я пропускаю что-нибудь?

+0

У меня такая же проблема, но с iis 7.5 в производстве. На моей машине dev я получаю свой ntId, но когда я развертываю prod, я все равно получаю имя пула приложений. При развертывании нет файла launchSettings.json. Есть ли у вас такая же проблема при развертывании на производство? – freddoo

+0

update - я изменил свой System.Security.Principal.WindowsIdentity.GetCurrent(). Имя на User.Identity.Name и теперь он работает. Я не работал раньше. – freddoo

ответ

3

Я огляделся, и было предложено создать приложение Asp.Net Core WebApi с использованием Windows Authentication.

Итак, когда я создал Asp.Net Core WebApi с использованием проверки подлинности Windows, он работал, и я получил значения в объектах User.Identity.

Так я создал 2 приложения, то есть один с проверкой подлинности Windows и один без, а затем сравнили все файлы и обнаружили изменения в следующих файлах

  • forwardWidnowsAuthToken - Правда, это был судим, но проблема не была решена, и то же самое было предложено Daboul
  • launchSettings.json, Set "WindowsAuthentication": правда & "anonymousAuthentication": ложные

После этого, я был в состоянии ценностей в User.Identi ти объект.


launchSettings.json файл:

{ 
    "iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false 
    } 
} 

web.config,:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> 
    </handlers> 
    <aspNetCore forwardWindowsAuthToken="true" processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\YourWebsite.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" /> 
     <security> 
      <authentication> 
       <windowsAuthentication enabled="true" /> 
       <anonymousAuthentication enabled="false" /> 
      </authentication> 
     </security> 
    </system.webServer> 
</configuration> 
+1

В моем случае ситуация была обратная, файл mysetsettings.json был прав, но настройки IIS были не в соответствии с заданным ответом после установки anonymousAuthentication = false в обоих местах. Это сработало для меня. Спасибо за сохранение моего времени :-) –

2

У вас есть forwardWindowsAuthToken установлен в true в web.config?

<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true"/> 
0

В Windows Server 2012 R2/IIS 8.0, даже после установки forwardWindowsAuthToken = верно в Интернете. config, User.Identity.Name не возвращал имя пользователя, но IIS APPPOOL, чтобы решить проблему, которую я сделал ниже;

  1. Перейти к веб-приложения в IIS
  2. редактор Open Configuration
  3. Изменить раздел в системе.WebServer/serverRuntime
  4. Изменение authenticatedUserOverride к UseAuthenticatedUser (для меня это было установлено в UseWorkerProcessUser)

Для получения более подробной информации обратитесь к ссылке ниже; https://blogs.iis.net/jaroslad/what-does-the-authenticateduseroverrideuser-do

Смежные вопросы