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();
}
}
ありがとうマイウル