我已经基于OpenIdConnect概念创建了非常简单的IdentityServer。 身份验证后,我的身份服务器返回到我的应用JwtToken。 当我尝试访问授权路由时,有以下日志:
Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler [2]
成功验证了令牌。
但下面有:
Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler [7] 未验证OpenIdConnect。失败消息:未通过认证
,我被重定向到IdentityServer中的身份验证路由。
那是为什么?
这是我的客户端(不是IdentityServer)配置:
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.IncludeErrorDetails = true;
options.RequireHttpsMetadata = false;
options.Audience = "http://localhost:5001";
options.MetadataAddress = "http://localhost:5000/.well-known/openid-configuration";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = "http://localhost:5000"
};
})
.AddOpenIdConnect(options =>
{
options.SignInScheme = JwtBearerDefaults.AuthenticationScheme;
options.AuthenticationMethod = OpenIdConnectRedirectBehavior.FormPost;
options.MetadataAddress = "http://localhost:5000/.well-known/openid-configuration";
options.RequireHttpsMetadata = false;
options.ClientId = "user";
options.ClientSecret = "secret";
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.SaveTokens = true;
});
答案 0 :(得分:1)
如果您只需要使用IdentityServer对承载令牌进行身份验证,请查看使用IdentityServer4.AccessTokenValidation nuget包。
您的创业公司看起来像这样:
foreach