У меня проблема с входом в Steam с использованием этой библиотеки .
введите описание изображения здесь
Я установил сервер Kestrel на 127.0.0.1:50000
и перенаправлен на secure.mydomain.com
через NGINX reverse proxy
. Все было хорошо, пока я не попытался войти через Steam. Он всегда указывает на 127.0.0.1:50000
, и я не знаю почему. Я попытался использовать настройки без значений по умолчанию, например:
.AddSteam(x =>
{
x.ApplicationKey = "XXXXXXXXXXXXXXXXXXXXXX";
x.ReturnUrlParameter = "https://secure.mydomain.com/signin-steam";
});
Я также установил SameSite
куки и c.
Мой код:
readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
private void CheckSameSite(HttpContext httpContext, CookieOptions options)
{
if (options.SameSite == SameSiteMode.None)
{
var userAgent = httpContext.Request.Headers["User-Agent"].ToString();
options.SameSite = (SameSiteMode)(-1);
}
}
public void ConfigureServices(IServiceCollection services)
{
//services.AddGrpc();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.LoginPath = "/login";
options.LogoutPath = "/signout";
})
.AddOpenId("Orange", "Orange", options =>
{
options.Authority = new Uri("https://openid.orange.fr/");
options.CallbackPath = "/signin-orange";
})
.AddOpenId("StackExchange", "StackExchange", options =>
{
options.Authority = new Uri("https://openid.stackexchange.com/");
options.CallbackPath = "/signin-stackexchange";
})
.AddOpenId("Intuit", "Intuit", options =>
{
options.CallbackPath = "/signin-intuit";
options.Configuration = new OpenIdAuthenticationConfiguration
{
AuthenticationEndpoint = "https://openid.intuit.com/OpenId/Provider"
};
})
.AddSteam();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
services.AddLogging();
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("*")
.AllowAnyHeader()
.AllowAnyOrigin()
.AllowAnyMethod();
});
});
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = (SameSiteMode)(-1);
options.OnAppendCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
options.OnDeleteCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
});
}
public void Configure(IApplicationBuilder app, ILoggerFactory logger)
{
logger.CreateLogger("Logging");
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
});
app.Use((context, next) =>
{
context.Response.Headers.Add("Access-control-allow-headers", "Content-Type, Accept, X-Requested-With, method");
context.Response.Headers.Add("Access-control-allow-methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD");
context.Response.Headers.Add("Access-control-allow-origin", "*");
context.Response.Headers.Add("Access-control-allow-credentials", "true");
return next.Invoke();
});
app.UseCors(option => option.WithHeaders("accept", "content-type", "origin"));
app.UseCookiePolicy();
app.UseCors(MyAllowSpecificOrigins);
app.UseHsts();
app.UseHttpsRedirection();
}
}
var host = new WebHostBuilder()
.UseKestrel()
.UseUrls($"{env_config.KestrelURL}")
.UseStartup<Startup>()
.ConfigureLogging(l =>
{
l.ClearProviders();
l.AddConsole();
})
.Build();
Я бы хотел установить для него значение «Войти в mydomain.com» и c, и после входа в мой домен требуется перенаправление, а не на 127.0.0.1