ASP.NET 样板多项服务
ASP.NET Boilerplate multiple services
早上好,
我正在尝试了解扩展 ASP.Net 样板的正确方法,以创建使用相同身份验证和授权(例如 JWT)和底层框架的多个 Web 服务。
例如,我想构建主 Web API 以在 /api/webapp1 上具有起始端点
启动第二项服务 on/api/webapp2
第三个服务启动 on/api/webapp3
在 /api/webapp4 上启动的第四项服务 - 也许这需要 运行 在 .Net 标准而不是核心上?
我不想构建一个单一的 Web 应用程序,因为我可能希望我的一个或某些 Web 服务在 Windows 上 运行 因为它可能具有依赖性,而其余的代码库可以 运行 在 Linux 等
构建应用程序和项目的最佳方式是什么?我正在尝试最大程度地减少代码重复 (DRY)。我目前的想法是复制 web.host 项目,但我是否应该创建一个单独的 Web 服务来完全管理身份验证?
创建四个 .NET 5.0 WebApis,您可以在 Linux 和 Windows 上 运行 它们。当涉及到身份验证时,假设您使用的是 Open Id Connect,在每项服务中只需六行代码就可以很容易地实现基本的 JWT。
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
o.Authority = "https://localhost:5001";
});
您只是通过设置权限将身份验证中间件指向您的 Open Id Connect 服务器,仅此而已。它将为您验证令牌并填充 ClaimsPrincipal
。 .NET 5.0 和 .NET Core 充满了如此简单的横切关注点配置,所以这就是为什么我说你可以轻松地将你的应用程序拆分为四个 API 并且仍然符合 DRY。为共享的东西添加一个额外的项目也是一个好主意,但不要添加太多,这样整个系统就不会退化为一个单一的伪装分布式系统。
should I create a separate web service that completely manages Authentication?
这是一个好主意,我会更进一步并建议不要自己执行登录逻辑、存储密码等,而是使用一些现有的解决方案来实现 Open Id Connect,例如 IdentityServer4 或 KeyCloack。
如果您想将所有这些应用程序都放在同一个地址下,例如/api 路线。您可以使用 Ocelot 作为您的 API 网关。
顺便说一句,你不能 运行 你的 API 在 .netstandard 上,它必须是 Framework、Core 或 5.0。
早上好,
我正在尝试了解扩展 ASP.Net 样板的正确方法,以创建使用相同身份验证和授权(例如 JWT)和底层框架的多个 Web 服务。
例如,我想构建主 Web API 以在 /api/webapp1 上具有起始端点 启动第二项服务 on/api/webapp2 第三个服务启动 on/api/webapp3 在 /api/webapp4 上启动的第四项服务 - 也许这需要 运行 在 .Net 标准而不是核心上?
我不想构建一个单一的 Web 应用程序,因为我可能希望我的一个或某些 Web 服务在 Windows 上 运行 因为它可能具有依赖性,而其余的代码库可以 运行 在 Linux 等
构建应用程序和项目的最佳方式是什么?我正在尝试最大程度地减少代码重复 (DRY)。我目前的想法是复制 web.host 项目,但我是否应该创建一个单独的 Web 服务来完全管理身份验证?
创建四个 .NET 5.0 WebApis,您可以在 Linux 和 Windows 上 运行 它们。当涉及到身份验证时,假设您使用的是 Open Id Connect,在每项服务中只需六行代码就可以很容易地实现基本的 JWT。
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(o =>
{
o.Authority = "https://localhost:5001";
});
您只是通过设置权限将身份验证中间件指向您的 Open Id Connect 服务器,仅此而已。它将为您验证令牌并填充 ClaimsPrincipal
。 .NET 5.0 和 .NET Core 充满了如此简单的横切关注点配置,所以这就是为什么我说你可以轻松地将你的应用程序拆分为四个 API 并且仍然符合 DRY。为共享的东西添加一个额外的项目也是一个好主意,但不要添加太多,这样整个系统就不会退化为一个单一的伪装分布式系统。
should I create a separate web service that completely manages Authentication?
这是一个好主意,我会更进一步并建议不要自己执行登录逻辑、存储密码等,而是使用一些现有的解决方案来实现 Open Id Connect,例如 IdentityServer4 或 KeyCloack。
如果您想将所有这些应用程序都放在同一个地址下,例如/api 路线。您可以使用 Ocelot 作为您的 API 网关。
顺便说一句,你不能 运行 你的 API 在 .netstandard 上,它必须是 Framework、Core 或 5.0。