OpenIdDict 不从 .Net Core API 返回令牌

2024-01-01

我有一个 .Net Core API 项目,我在其中使用 OpenIDDict 进行身份验证。我在那里提到官方存储库 https://github.com/openiddict/openiddict-samples/blob/dev/samples/Imynusoph/Imynusoph.Server/Controllers/AuthorizationController.cs但是它不会将令牌返回给最终用户(目前我正在使用邮递员进行测试)

这是我的 Program.cs 文件

  //OPENID
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{ options.UseSqlServer(builder.Configuration.GetConnectionString("ApplicationDb"));
    options.UseOpenIddict();
});

// Register the Identity services.
//builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
//    .AddEntityFrameworkStores<ApplicationDbContext>()
//    .AddDefaultTokenProviders();

builder.Services.Configure<IdentityOptions>(options =>
{
    options.ClaimsIdentity.UserNameClaimType = Claims.Name;
    options.ClaimsIdentity.UserIdClaimType = Claims.Subject;
    options.ClaimsIdentity.RoleClaimType = Claims.Role;
    options.ClaimsIdentity.EmailClaimType = Claims.Email;
});

builder.Services.AddQuartz(options =>
{
    options.UseMicrosoftDependencyInjectionJobFactory();
    options.UseSimpleTypeLoader();
    options.UseInMemoryStore();
});

builder.Services.AddOpenIddict()

    // Register the OpenIddict core components.
    .AddCore(options =>
    {
            // Configure OpenIddict to use the Entity Framework Core stores and models.
            // Note: call ReplaceDefaultEntities() to replace the default OpenIddict entities.
        options.UseEntityFrameworkCore()
               .UseDbContext<ApplicationDbContext>();

            // Enable Quartz.NET integration.
        options.UseQuartz();
    })

    // Register the OpenIddict server components.
    .AddServer(options =>
    {
            // Enable the token endpoint.
        options.SetTokenEndpointUris("/connect/token");
        options.AllowPasswordFlow();
        options.AcceptAnonymousClients();
        options.AddDevelopmentEncryptionCertificate()
               .AddDevelopmentSigningCertificate();
        options.UseAspNetCore()
               .EnableTokenEndpointPassthrough();
    })

    // Register the OpenIddict validation components.
    .AddValidation(options =>
    {
        options.UseLocalServer();
        options.UseAspNetCore();
    });...

我的 AuthorizationController.cs 文件

 [HttpPost("~/connect/token"), Produces("application/json")]
public async Task<IActionResult> Exchange()
{
    var request = HttpContext.GetOpenIddictServerRequest();
    var claimsPrincipal = new ClaimsPrincipal();
    if (request.IsPasswordGrantType())
    {
        try
        {
            var user = await _userManager.FindByNameAsync(request.Username);
            if (user == null)
            {
                //Return Error message
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, lockoutOnFailure: true);
            if (!result.Succeeded)
            {
                 //Return Error message
            }
            var principal = await _signInManager.CreateUserPrincipalAsync(user);
            principal.SetScopes(new[]
            {
            Scopes.OpenId,
            Scopes.Email,
            Scopes.Profile,
            Scopes.Roles
        }.Intersect(request.GetScopes()));

            foreach (var claim in principal.Claims)
            {
                claim.SetDestinations(GetDestinations(claim, principal));
            }
            return SignIn(principal, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme);
 ...

它应该返回一个类似于这个答案 https://stackoverflow.com/a/42561144/2376652但是我在邮递员中获得了 500 状态。 错误是找不到实体类型“OpenIddictEntityFrameworkCoreToken”。确保实体类型已添加到模型中。

不确定,我需要为此创建表吗?或者我错过了什么?我可以看到OpenIdDict 官方网站 https://github.com/openiddict/openiddict-samples/tree/dev/samples/Hollastin/Hollastin.Server,他们没有提到过类似的事情。

我正在使用 .Net 6,VS 2022。


您尝试添加吗?

services.AddIdentity<User, Role>()
    .AddSignInManager()
    .AddUserStore<UserStore>()
    .AddRoleStore<RoleStore>()
    .AddUserManager<UserManager<User>>();

检查这个博客 https://nwb.one/blog/openid-connect-dotnet-5

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

OpenIdDict 不从 .Net Core API 返回令牌 的相关文章

随机推荐

  • WP All Import Pro:Polylang 兼容性

    我正在尝试使用 WP All Import 的专业版将数据从 Excel 工作表导入到 WordPress 中 我们使用 Polylang 来支持多语言 我想知道如何管理将内容导入正确的语言版本 我发现有一个隐藏的分类 语言 我可以手动将其
  • iPhone:协处理器偏移超出范围

    我在 xcode 和 iphone 上遇到了一个奇怪的编译问题 我的游戏即将完成 但现在我突然遇到这个编译错误 standard input 6108 co processor offset out of range gcc 4 2 fai
  • 使用 iOS 11 中增加的导航栏标题

    iOS 11 Beta 1 几乎所有系统应用程序都使用了增加的导航栏标题 它开始在 iOS 10 和音乐应用程序中这样做 我想知道 Apple 是否在 iOS 11 中为此提供了公共 API 或者目前是否会保持私有状态 行为是标题的字体大小
  • 创建带有限制的 XSD 可选小数元素

    我已经成功地使用以下方法创建了一个可选的小数元素
  • HandlerThread 中的 NullPointerException

    这个错误让我困惑了几个小时 我正在得到空指针异常 问题是这个错误不一致 当我启动应用程序时会发生这种情况 但只是偶尔 所以我不确定是什么原因造成的 对于错误日志中的冗长问题 我深表歉意 但我找不到其他询问方式 错误日志如下 FATAL EX
  • 查找某个表的数据来源-ORACLE

    这可能是一个微不足道的问题 但是 由于我正在处理很久以前由其他人创建的数据库 没有包含适当的文档或注释 所以我遇到了一个关键问题 我需要知道数据如何插入到某个表中 有没有脚本或者其他方法可以识别数据源 换句话说 我需要知道数据是否是通过某些
  • 仅允许视频嵌入代码 (Rails)

    我想知道是否有人知道一种方法 只允许将来自 youtube vimeo blip tv 等的代码嵌入到表单字段中 我的网站上有一个表单 允许用户嵌入视频 但我只希望他们添加嵌入代码 html 而不添加任何其他危险的内容 例如 JS 或其他
  • 使用 node-inspector 调试 karma-jasmine 测试

    几乎同样的问题使用 node inspector 调试 jasmine node 测试 https stackoverflow com questions 6162920 debugging jasmine node tests with
  • Xcode 11 beta 无法将应用程序上传到 TestFlight

    我正在尝试将我的应用程序分发到 TestFlight 目前我的应用程序需要 iOS 13 以及 NFC 访问 在 iOS 13 结束测试版之前 我不打算发布我的应用程序 但我希望我的 QA 团队能够对其进行测试 我可以从 Xcode 11
  • 多个图表延迟问题,SVG 还是 HTML5 Canvas?

    我正在寻找使用 Javascript 构建动态且交互式的多个图表 在此练习中涉及同时移动 平移多个图表 我已经使用 SVG 和各种图表库实现了这个练习 然而 我发现当我开始拥有超过 12 个图表时 平移渲染变得缓慢 Highcharts 库
  • 在 C# 中,Array.ToArray() 是否执行深度复制?

    这应该是一个非常基本的问题 但我在找到明确的答案时遇到了一些困难 当你有一个值数组并使用 ToArray 方法 它创建数组的深副本还是浅副本 No 您可以通过编写一个小程序进行测试来轻松验证这一点
  • PHP 警告: include(/var/www/html/....../lib/Cake/Error/ErrorHandler.php): 无法打开流错误

    我在尝试加载网页时遇到此错误 错误消息中显示的路径是 PHP 警告 包括 var www html test com www products abc lib Cake Error ErrorHandler php 无法打开流 它无法找到
  • Angular 6 Universal 不等待解析器完成

    我刚刚安装了 Angular Universal 启动套件版本6并在其中创建了我的组件 该组件应在加载时通 过 API 获取用户信息并将其显示以供查看 问题是 API 结果显示在浏览器中 但未显示在 查看源代码 什么叫普惠如此 My get
  • 变量神秘消失? AWS 代码构建

    接下来是我的 buildspec yml build commands IMAGE TAG cat package json grep version head 1 awk F print 2 sed s g echo IMAGE TAG
  • 如何防止 WKWebView 对象崩溃?

    Scenario 我正在用 Swift 构建一个 iOS 应用程序 其中一项功能是将实时视频源作为应用程序背景 视频源源自本地网络上的 Raspberry Pi 使用sudo motion Motion 已成功在默认端口上托管源8081 S
  • 如何调整撬片颜色

    Edit 褪色的灰色仅是 0 9 7 3 及之前版本的问题 此后它已更改为深灰色 Pry 具有很好的着色功能 但是创建或更改对象时返回的值是褪色的灰色 我几乎看不到 u User new gt
  • 在 R 中搜索列表条目的索引

    给定一个 R 列表 我希望找到给定列表条目的索引 例如 对于条目 36 我希望我的输出是 2 另外 我如何使用 lapply 并行执行此类查询 gt list 1 1 7 12 26 29 2 1 11 36 3 1 20 49 4 1 3
  • 为什么 isnan 含糊不清以及如何避免它?

    Since isnan可以是宏 在 C 98 中 或命名空间中定义的函数std 在 C 11 中 这个简单的示例说明了编写在两种情况下都有效的代码的明显 可能是天真的 方法 include
  • iOS Objective C 中的单例不会阻止多个实例

    我知道有几个关于此的主题 但没有一个回答我的问题 我已经像这样实现了我的单例类 意识到有关单例的争议 MyClass sharedInstance static MyClass sharedInstance nil static dispa
  • OpenIdDict 不从 .Net Core API 返回令牌

    我有一个 Net Core API 项目 我在其中使用 OpenIDDict 进行身份验证 我在那里提到官方存储库 https github com openiddict openiddict samples blob dev sample