在ASP.NET Core中,身份验证中间件不会缓存openid-config。每次请求都会发送一个HTTP请求来获取openid-config。
以下是一个使用ASP.NET Core身份验证中间件的示例代码:
public void ConfigureServices(IServiceCollection services)
{
// 添加身份验证服务
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://your-identity-server.com";
options.ClientId = "your-client-id";
options.ClientSecret = "your-client-secret";
options.ResponseType = "code";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role"
};
});
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略其他配置...
// 启用身份验证中间件
app.UseAuthentication();
// 启用授权中间件
app.UseAuthorization();
// 省略其他配置...
}
在上述代码中,我们通过services.AddAuthentication
方法来配置身份验证服务,并使用AddCookie
和AddOpenIdConnect
方法添加Cookie身份验证和OpenID Connect身份验证。在AddOpenIdConnect
方法中,我们指定了身份验证服务器的地址、客户端ID和客户端密钥等配置信息。
在Configure
方法中,我们使用app.UseAuthentication
和app.UseAuthorization
方法来启用身份验证和授权中间件。
请注意,身份验证中间件每次请求都会发送一个HTTP请求来获取openid-config,因此不需要手动缓存openid-config。