OpenIddict ASP.NET Core 服务器不能用作默认方案处理程序

2024-02-22

我想OpenIddict 3.0 https://github.com/openiddict/openiddict-core。我按照文档中的步骤操作,创建了一个授权控制器,并添加了一个测试应用程序。当我尝试运行时,出现以下异常:

OpenIddict ASP.NET Core 服务器不能用作默认服务器 方案处理程序。确保 DefaultAuthenticateScheme、 默认挑战方案、默认禁止方案、默认登录方案、 DefaultSignOutScheme 和 DefaultScheme 都指向 OpenIddict ASP.NET Core 服务器处理程序

我找不到我做错了什么。

这是我的Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
    {
        // Configure the context to use Microsoft SQL Server.
        options.UseInMemoryDatabase("Identity");

        // Register the entity sets needed by OpenIddict.
        // Note: use the generic overload if you need
        // to replace the default OpenIddict entities.
        options.UseOpenIddict<Guid>();
    });

    AddIdentityCoreServices(services);

    services.AddOpenIddict()

            // Register the OpenIddict core components.
            .AddCore(options =>
            {
                // Configure OpenIddict to use the Entity Framework Core stores and models.
                options.UseEntityFrameworkCore()
                        .UseDbContext<ApplicationDbContext>()
                        .ReplaceDefaultEntities<Guid>();
            })

            // Register the OpenIddict server components.
            .AddServer(options =>
            {
                // Enable the token endpoint (required to use the password flow).
                options.SetTokenEndpointUris("/connect/token");

                // Allow client applications to use the grant_type=password flow.
                options.AllowPasswordFlow();

                // Mark the "email", "profile" and "roles" scopes as supported scopes.
                //options.RegisterScopes(OpenIddictConstants.Scopes.Email,
                //                       OpenIddictConstants.Scopes.Profile,
                //                       OpenIddictConstants.Scopes.Roles);

                // Accept requests sent by unknown clients (i.e that don't send a client_id).
                // When this option is not used, a client registration must be
                // created for each client using IOpenIddictApplicationManager.
                options.AcceptAnonymousClients();

                // Register the signing and encryption credentials.
                options.AddDevelopmentEncryptionCertificate()
                        .AddDevelopmentSigningCertificate();

                // Register the ASP.NET Core host and configure the ASP.NET Core-specific options.
                options.UseAspNetCore()
                        .EnableAuthorizationEndpointPassthrough() // Add this line.
                        .EnableTokenEndpointPassthrough()
                        .DisableTransportSecurityRequirement(); // During development, you can disable the HTTPS requirement.
            })

            // Register the OpenIddict validation components.
            .AddValidation(options =>
            {
                // Import the configuration from the local OpenIddict server instance.
                options.UseLocalServer();

                // Register the ASP.NET Core host.
                options.UseAspNetCore();
            });

    // ASP.NET Core Identity should use the same claim names as OpenIddict
    services.Configure<IdentityOptions>(options =>
    {
        options.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name;
        options.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject;
        options.ClaimsIdentity.RoleClaimType = OpenIdConnectConstants.Claims.Role;
    });

    services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = OpenIddictServerAspNetCoreDefaults.AuthenticationScheme;
    });

    services.AddControllers();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

private static void AddIdentityCoreServices(IServiceCollection services)
{
    var builder = services.AddIdentityCore<ApplicationUser>();
    builder = new IdentityBuilder(
        builder.UserType,
        typeof(ApplicationRole),
        builder.Services);

    builder.AddRoles<ApplicationRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders()
        .AddSignInManager<SignInManager<ApplicationUser>>();
}

请帮助我解决我做错的事情。


我终于知道我错在哪里了。 @Train https://stackoverflow.com/users/4123372/train感谢您为我指明了正确的方向。

改变services.AddAuthentication(...) from

services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = OpenIddictServerAspNetCoreDefaults.AuthenticationScheme;
    });

to

services.AddAuthentication(options =>
            {
                options.DefaultScheme = OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme;
            });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenIddict ASP.NET Core 服务器不能用作默认方案处理程序 的相关文章

  • SL4 AutoCompleteBox 重复筛选结果问题

    我在 AutoCompleteBox 过滤方面遇到问题 它似乎记住了之前的过滤器 例如 我输入 A 它会返回 1 项 我删除 A 并输入 Z 这应该返回 1 项 问题是它返回 A 过滤器加上 Z 的结果 我删除 Z 并输入 S 这会带回 2
  • MVC 重定向到没有控制器的视图

    希望应该是一个简单的 我创建了一个通用错误视图 当整个站点的操作方法内发生异常时 我想显示该视图 我创建了一个部分页面 所有导航都位于其中 因此我不需要在此视图上使用控制器 那么如何从控制器内的操作方法重定向到它 像这样的东西 HttpPo
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 检查列表是否包含另一个列表。 C#

    编辑 只是说 ContainsAllItem 中的注释解释得最好 很抱歉问这个问题 我知道以前有人问过这个问题 但我只是不明白 好的 所以我想检查一个列表是否包含另一个列表中的所有项目WITHOUT重叠 以及根据类字符串 名称变量 称为项目
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • 指示泛型返回动态类型的对象

    这个问题是我原来问题的后续问题here https stackoverflow com questions 2541184 using a type object to create a generic 假设我有以下泛型类 简化 class
  • 使用scanf()时如何区分整数和字符

    我只是使用该功能scanf 代码如下 scanf d a printf d a 当我输入1时 它会像我想要的那样打印1 但即使我输入 1a 它也会像以前一样打印 1 当用户输入非整数时 例如 2 3 12ab 1 a 我想向用户显示 输入整
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • C++ 标准中短语“构造函数没有名称”的含义

    在尝试理解 C 标准中的 构造函数没有名称 这句话时 我似乎在 clang 中发现了一个错误 有人可以证实这一点吗 VS2015 and gcc rejects this code and I think they it are is co
  • 将 bignum 类型结构转换为人类可读字符串的有效方法是什么?

    我有一点问题 为了增长我的 C 知识 我决定尝试实现一个基本的 bigint 库 bigint 结构的核心将是一个 32 位整数数组 选择它们是因为它们适合寄存器 这将允许我在数字之间进行操作 这些操作将在 64 位整数中溢出 这也将适合寄
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标

随机推荐

  • 在不知道键的情况下解析 json

    我试图在不知道 json 格式的键和结构的情况下解析 java 中的 json 并将该数据保存到 hashmap 中 我如何循环遍历整个 json 格式并将键和值存储到 hashmap 中 id 12345 value 123 person
  • 原始“null”和 Java 8

    我知道处理的最佳实践null原语是使用盒装包装器 例如Integer代替int 正如这里所讨论的 原始数据类型为 Null https stackoverflow com questions 11047276 null for primit
  • dartlang 和 dartdap 库以及与活动目录的连接

    我一直在为 Dart 寻找一个好的 ldap 库来连接 Microsoft Active Directory 我找到了 dartdap 但我似乎无法让它工作 我 100 确信我的 CN 和密码是正确的 因为我可以使用 lpap 浏览器连接到
  • 剪切 HTML 标签并再次包装 HTML 标签第 1 部分 [重复]

    这个问题在这里已经有答案了 我尝试转换以下字符串 p string b bold em italic string em also bold b p 到这个字符串 p string p b bold b em italic string e
  • Parse 中的主要错误:[PFUser currentUser] 死锁

    Parse 社区已多次提出通过解析后台调用因线程争用而导致 PFUser 死锁的问题 但 Parse 选择不处理框架中的这个巨大错误 有谁知道这个问题的解决方法 关于此问题的其他明显报告 https developers facebook
  • 如何在android中将数据库文件附加到电子邮件中?

    您好 我正在尝试通过附加数据库发送电子邮件 我收到邮件 但没有附加以下是我的代码 谁能帮我 尝试 String host smtp gmail com String from email protected cdn cgi l email
  • 如何在 JavaFX 中的 TextField 中强制进行双输入?

    如何确保用户仅输入双精度值在给定的文本字段中 我找到了一个整数的解 https stackoverflow com questions 7555564 what is the recommended way to make a numeri
  • django 查询集中的两个或多个 __in 过滤器

    我有这个查询 query select from products where productnr supplier id in s product list 其中 Product list 如下所示 OB520 3 RH402 20 我如
  • 谷歌地图建筑风格

    有什么方法可以像 openlayer 那样在 google 地图中设置建筑物的样式吗 http workshops opengeo org openlayers intro vector style html http workshops
  • 无法使用传入消息调用侦听器方法,并且 ConsumerRecord 的 Backoff 未耗尽

    下面是我的 kafka 侦听器的方法定义 如果有效负载接收到 null 或空字符串 我想我会遇到以下错误 您能帮忙吗 KafkaListener topics kafka consumer topic name reservation gr
  • URL 重写包括尾部斜杠(如果不存在)

    我有这个RewriteRule上班 RewriteBase my path RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule my path
  • 可以将 NSManagedObject 移动到另一个 NSManagedContext 吗?

    我有两个 NSManagedContext 一个父级和一个子级 用于并发 指定如下 self managedObjectContext NSManagedObjectContext alloc initWithConcurrencyType
  • Schema.org 开放时间

    我正在尝试为 openinghours 创建 schema org 定义 该定义在 Google 的丰富摘要测试工具中进行验证 通过此标记 我想定义商店每周一的营业时间为 11 00 22 00
  • AngularJS:非标准属性上的 ng-src 行为?

    我正在使用 在我的应用程序中集成媒体播放器适合所有人的视频 http v4e thewikies com 生成器 如果浏览器不支持 HTML5 播放器会回退到 Flashvideo and audio我必须建立一个object元素与para
  • 计算xml文件中元素的数量

    首先我参考了这篇文章如何获取 XML 或 XElement 变量中的特定元素计数 https stackoverflow com questions 8764510 how to get specific element count in
  • 选择框内的 HTML

    我想知道是否可以将一个项目分成选择框中的两行 我的选择框的值之一是两个长以适合我的 div 不 这是不可能的 您可以考虑使用 javascript 小部件 例如this http sharebrain info brainpicks scr
  • 关闭mysql不安全语句警告

    我正在使用日志错误将警告 错误写入文件 当我执行 INSERT IGNORE SELECT 语句时 它只是继续写入此警告消息 120905 3 01 23 Warning Unsafe statement written to the bi
  • Vim 中的智能换行

    我一直想知道 Vim 是否有能力智能换行代码 以便它保持与缩进的行相同的缩进 我在其他一些文本编辑器 例如电子文本编辑器 上注意到了它 并发现它可以帮助我更轻松地理解我正在查看的内容 例如而不是 p a href http www exam
  • 将多个 CSV 文件导入 pandas 并连接成一个 DataFrame

    我想将目录中的多个 CSV 文件读取到 pandas 中 并将它们连接到一个大的 DataFrame 中 但我还是没能弄清楚 这是我到目前为止所拥有的 import glob import pandas as pd Get data fil
  • OpenIddict ASP.NET Core 服务器不能用作默认方案处理程序

    我想OpenIddict 3 0 https github com openiddict openiddict core 我按照文档中的步骤操作 创建了一个授权控制器 并添加了一个测试应用程序 当我尝试运行时 出现以下异常 OpenIddi