0

Jwt ベアラー認証で .NET Core 2.0 を使用します。

IIS Express を使用する localhost で実行すると、ログイン機能がシームレスに機能します。

ただし、Prod サーバーにデプロイすると、サイトにログインできますが、「401 Unauthorized」が表示されます。

タイムアウト期間はログオン後 30 分に設定されており、実稼働サーバーで正しく設定されていますが。

IIS に設定がないようです。このリンクを見て変更を加えましたが、問題はまだ存在します。 同様の問題

任意のポインタをいただければ幸いです。

Startup.cs>>

public class Startup
{

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json", optional: false, 
            reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();

        Configuration = builder.Build();
        _env = env;
    }

    public IConfigurationRoot Configuration { get; }
    public IHostingEnvironment _env { get; }
    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.RequireHttpsMetadata = false;
                options.IncludeErrorDetails = true;

                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer = Configuration.GetSection("AppSettings")["WebApiBaseUrl"],
                    ValidAudience = Configuration.GetSection("AppSettings")["WebBaseUrl"],
                    IssuerSigningKey = TokenAuthOption.Key,
                    ClockSkew = TimeSpan.Zero                     
                };


            });

        services.AddMvc().AddJsonOptions(options =>
        {
            options.SerializerSettings.ContractResolver = new ReadOnlyJsonContractResolver();
            options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        });
        services.AddOptions();
        services.AddSingleton<IConfiguration>(Configuration);
        services.AddSingleton<IHostingEnvironment>(_env);
        services.AddMvcCore().AddJsonFormatters().AddXmlSerializerFormatters().AddFormatterMappings().AddXmlDataContractSerializerFormatters();
  }


   public void Configure(IApplicationBuilder app, IHostingEnvironment env, DBContext context)
   {
              app.UseCors("CorsPolicy");
              app.UseSession();
              app.UseAuthentication();
              app.UseMvc();
              app.UseStaticFiles();


    }

}

ありがとうマイウル

4

0 に答える 0