【问题标题】:Get Identity Server 4 user data from other application从其他应用程序获取 Identity Server 4 用户数据
【发布时间】:2018-09-24 07:09:34
【问题描述】:

在我的工作中,我们正在逐渐用微服务架构取代单一的遗留系统。我的任务是使用 Asp.Net Core、Identity Server 4 和 Entity Framework* 编写身份验证服务器。遗留系统已经有auth,我们的deadline快到了,所以我们暂时将遗留系统作为后端使用。

如何设置身份服务器/实体框架以通过旧系统提取登录信息?到目前为止,我发现的所有内容都涉及添加像 SQL 服务器这样的数据库。假设为了论证,我无法直接从遗留系统使用的 MySQL 数据库中提取数据,但通过 JSON API 很容易获取用户数据。

我已经编写了一个 DbContext 和一个使用它的 IProfileService 的实现,但我不确定如何在 DbContext 中实际拉取用户,当我尝试从客户端登录时出现此错误:

没有为此 DbContext 配置数据库提供程序。可以通过覆盖 DbContext.OnConfiguring 方法或在应用程序服务提供者上使用 AddDbContext 来配置提供者。如果使用了 AddDbContext,那么还要确保您的 DbContext 类型在其构造函数中接受 DbContextOptions 对象并将其传递给 DbContext 的基本构造函数。

但是我无法找到/弄清楚要在 DbContext.OnConfiguring 中放置什么来设置它。我想我需要在某处实现 IServiceProvider,但找不到任何详细信息。

*我们不接受这些,因此欢迎提出更合适的建议。我们正在使用 .Net Core。

【问题讨论】:

  • 您的问题是关于尝试在 .NET Core 应用程序中连接到 MySQL 数据库(使用数据库优先的 EntityFramework)吗?还是关于将 JSON API 中的数据插入新数据库?
  • @Wurd 两者都不是;我想像使用(只读)数据库一样使用 JSON API。我想要发生的是:(1)用户将登录详细信息发送到 IS4 API; (2) 从 JSON API 检索用户并在 IS4 中进行身份验证; (3) IS4 API 返回一个授权令牌。
  • 好的,你的问题到底是什么?关于如何在 EF 中使用 JSON api? EF 旨在连接到数据库,因此它无法做到这一点。我建议您围绕 JSON API 编写一个包装器并将其公开为 IQueryable。即使它是通过 api 调用获取数据,这也会使它看起来像“数据库”。
  • @Wurd 我的确切问题是:如何为 EF 编写中间件以从 JSON API 中提取数据。所以 IQueryable 可能是正确的方向;我没见过。
  • 看起来我仍然需要实现 DbContext、IServiceProvider 和大约十几个其他类。对吗?

标签: entity-framework asp.net-core .net-core identityserver4


【解决方案1】:

EF 位在这里看起来像是一条红鲱鱼。如果您正在与遗留系统中的 API 交谈,那么您根本不会使用 EF。

如果使用 IdentityServer4,那么将其 EF 实现用于配置和操作存储,然后使用现有系统公开的 API 实现您的登录 UI、IClaimsService 等是有意义的。为此,只需创建一个简单的客户端实现,它调用所述 API 并接受并返回您需要的任何模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2018-06-30
    • 2020-01-06
    • 1970-01-01
    • 2019-09-20
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多