2017-02-10 15 views
3

Asp.netコアは、Web API - 私たちは私たちのアプリケーション AngularJS2 Asp.NetコアAPI のSQL Serverの技術スタック次ている現在のユーザー&Windows認証

今、私たちは、ログインしているユーザーのユーザー名を格納する必要があります指定された項目、すなわちコアAPIの作成/編集中のテーブル内の私たちは、

  • WindowsIdentity.GetCurrent()。名前で試してみました

    は、それが
  • HttpContext.User.Identityがnull値を与える

は、私は、ユーザーを取得するIIS APPPOOL \ Asp.netCoreを与えますVisual Studioで作業中にWindowsIdentityで名前を付けるが、IISではAsp.Netcore(つまりプール名)という値を与える

Windows認証が有効になっており、Anonymous Aut henticationは、IISのバージョン6.1

を使用して

無効になっている私は何も足りませんか?

+0

私は同じ問題を抱えていますが、iis 7.5は生産中です。私の開発マシンでは、私はntIdを取得しますが、私がprodにデプロイするとき、私はまだアプリケーションプール名を取得します。デプロイ時にlaunchSettings.jsonファイルはありません。本番環境にデプロイするときに同じ問題がありますか? – freddoo

+0

update - System.Security.Principal.WindowsIdentity.GetCurrent()。NameをUser.Identity.Nameに変更しました。私は以前は働いていませんでした。 – freddoo

答えて

3

私は、Windows認証を使用してAsp.Net Core WebApiアプリケーションを作成することを推奨しました。

Windows認証を使用してAsp.Net Core WebApiを作成したところ、これはうまく動作し、User.Identityオブジェクトに値がありました。これは前に試みたが、問題が解決し、同じではありませんして、真の -

は、だから私は2つのアプリケーションがWindows認証と1となしの1、すなわち作成し、その後、すべてのファイルを比較し、以下のファイル

  • forwardWidnowsAuthTokenの変化を発見しましたDaboulによって示唆された
  • launchSettings.json、セット "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

私の場合は状況が逆転していましたが、私のlaunchsettings.jsonファイルは正しいですが、両方の場所でanonymousAuthentication = falseを設定したあと、IIS設定が与えられた答えと同じではありませんでした。 私の時間を保存してくれてありがとう:-) –

2

web.configでforwardWindowsAuthTokenをtrueに設定していますか?

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

のWindows Server 2012 R2/8.0、IISでもウェブでforwardWindowsAuthToken = trueを設定した後。私は以下の変更を加えた問題を解決するために、User.Identity.Nameはユーザー名を返さず、IIS APPPOOLを返しました。

  1. ゴーシステムへのIISでWebアプリケーション
  2. オープン設定エディタ
  3. 変更部へ。webServer /のServerRuntime
  4. 詳細は
  5. UseAuthenticatedUserに変更authenticatedUserOverride(私のためにそれがUseWorkerProcessUserに設定した)

は、リンク以下を参照してください。 https://blogs.iis.net/jaroslad/what-does-the-authenticateduseroverrideuser-do

関連する問題