【发布时间】:2019-11-19 08:25:21
【问题描述】:
我正在开发一个 aspnet 核心 MVC 项目,该项目调用由 OAuth2.0 保护的 API。
我能够使用下面的代码访问 API 并正确获取响应,
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.Authority = Configuration["AzureAD:Instance"] +
"/" + Configuration["AzureAD:TenantId"];
options.ClientId = Configuration["AzureAD:ClientId"];
options.Secret = Configuration["AzureAD:Secret"];
options.Callback = Configuration["AzureAD:Callback"];
options.ResponseType = "code id_token";
options.SaveTokens = true;
});
services.AddMvc(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "sign-in",
template: "signin-oidc")};
...
});
}
Controller.cs
我正在从 HttpContext 获取令牌。
但令牌会在几个小时后过期。有没有办法在 id 令牌过期之前刷新它。 我在堆栈溢出中尝试了几个示例。但没有一个对我有用。
有没有办法在不使用下面示例中使用的 IdentityModel 的情况下让它工作? https://github.com/mderriey/aspnet-core-token-renewal/blob/master/src/MvcClient/Startup.cs
【问题讨论】:
标签: asp.net-core cookies oauth-2.0 openid-connect