2016-10-12 2 views
0

異なる認証を使用するようにASP.NETアプリケーションを構成する場合は、環境によって異なります。開発環境ではWindows認証を使いたいが、他のすべての環境ではFacebook認証を使いたい。Windows認証を使用するようにASP.NETコアアプリケーションを構成するにはどうすればよいですか?

私はすでに非開発環境向けにFacebook認証を設定しています。開発環境用のWindows認証を設定するにはどうすればよいですか? Windows認証は開発中にのみ使用されるため、開発者はVSでアプリケーションを実行するたびにログインする必要はありません。私たちには複数の開発者がいます。つまり、誰がそれを実行しているかによってWindowsのIDが異なることになります。ウィンドウのアイデンティティが作成されたら、ウィンドウのアイデンティティにクレームを追加します。

public class Startup 
{ 
    public Startup(IHostingEnvironment env) 
    { 
     // some stuff here for building configuration 
    } 

    public IConfigurationRoot Configuration { get; } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddAuthorization(); 
     services.AddMvc(config => 
     { 
      var policy = new AuthorizationPolicyBuilder() 
       .RequireAuthenticatedUser()    
       .Build(); 
      config.Filters.Add(new AuthorizeFilter(policy)); 
     }); 
    }   

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime) 
    {    
     if(env.IsDevelopment()) 
     { 
      // How do i use windows authentication here 
     } 
     else 
     { 
          // this is my custom extension method 
      app.UseFacebookAuthentication(); 
     } 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     });    
    } 
} 

答えて

2

のWindows認証は、具体的にはUseIISIntegration()ラインですProgram.csの

var host = new WebHostBuilder() 
    .UseKestrel() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 
    .UseIISIntegration() 
    .UseStartup<Startup>() 
    .Build(); 

にWebホストの設定時に設定されています。

これで、自分自身は何もしません。aspNetCoreノードのweb.configでも設定する必要があります。

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

forwardWindowsAuthTokenの値を設定する必要があります。

だから、env.IsDevelopment()チェックではできません。

1

開発環境にIIS Expressを使用する場合、Windows認証を簡単に設定することができます。プロパティフォルダにはlaunchSettings.jsonがあり、クラスのスタートアップを変更せずに開発用にWindows認証を使用するように簡単に変更できます。

このファイルでは、「windowsAuthentication」をtrueに、「anonymousAuthentication」をfalseに変更できます。ここで

はサンプルlaunchSettings.jsonです:この修正後

{ 
    "iisSettings": { 
    "windowsAuthentication": true, 
    "anonymousAuthentication": false, 
    "iisExpress": { 
     "applicationUrl": "http://localhost:6366/", 
     "sslPort": 0 
    } 
    }, 
    profiles": { 
    "IIS Express": {... 
} 

は、デバッグ対象としてIIS Expressを選択することで、アプリケーションを実行することができます。

関連する問題