没有可用于令牌的安全令牌验证器

本文关键字:令牌 安全 验证 用于 | 更新日期: 2023-09-27 18:34:14

我创建了一个IdentityServer,可以通过将ClientIdClientSecret传递给令牌端点来成功检索令牌

我的Indetity服务器设置如下

var certFile = env.ApplicationBasePath + $"{Path.DirectorySeparatorChar}idsrv3test.pfx";
var options = new IdentityServerOptions
{
    Factory = new IdentityServerServiceFactory()
        .UseInMemoryClients(Client.Get())
        .UseInMemoryScopes(Scope.Get())
        .UseInMemoryUsers(User.Get()),
            SigningCertificate = new X509Certificate2(certFile, "idsrv3test"),
            RequireSsl = false
};
app.UseIdentityServer(options);

当我调用受保护的 MVC 6 Web API 时,我得到一个

没有可用于令牌的安全令牌验证器: c7f2c3890d83a454fcb504cb96c75fe7

这是我的 API Startup.cs中的设置

app.UseJwtBearerAuthentication(options =>
{
    options.Authority = $@"{tokenServiceUrl}";
    options.Audience = $@"{tokenServiceUrl}/resources";
    options.AutomaticAuthenticate = true;
    options.RequireHttpsMetadata = false;
});

我确保在app.UseMvc()呼叫之前完成此设置。我还有什么要做的吗?

没有可用于令牌的安全令牌验证器

运行

安装包 IdentityServer3.AccessTokenValidation.Integration.AspNet -pre

从包管理器控制台安装 API 的集成包。然后将以下代码添加到 API 的 Startup.cs 类的配置方法中

app.UseIdentityServerBearerTokenAuthentication
(
    new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = tokenServiceUrl,
        ValidationMode = ValidationMode.ValidationEndpoint,
        RequiredScopes = new[] { "SomeScope" }
    }
);