gpt4 book ai didi

identityserver4 - 如何将 IdentityServer4 MVC 应用程序拆分为前端 UI/API 和后端 API,以便在 DMZ 中安全托管?

转载 作者:行者123 更新时间:2023-12-05 06:25:41 26 4
gpt4 key购买 nike

出于安全原因,我的客户坚持认为 IdentityServer4 不应完全托管在 DMZ 中,尤其是考虑到它可以直接访问数据库服务器。

从 IdentityServer4 文档和其他一些帖子来看,似乎应该可以在 DMZ 中托管 MVC 登录页面并将 IdentityServer4 API 留在防火墙后面。如果我理解正确,我可以使用 LoginUrl、LogoutUrl、ConsentUrl、ErrorUrl、DeviceVerificationUrl 设置来实现这一点。

但是,我不确定 OpenID API。我的 SPA 应用程序不仅需要登录页面,还需要访问 OpenID 端点(connect/authorize、connect/userinfo、connect/checksession .well-known/openid-configuration)。

我如何安全地公开 DMZ 中的那些 IdentityServer4 端点?

目前我不知道这些 OpenID 端点是如何由 IdentityServer4 创建的。在我的应用程序启动代码中,我只调用了 AddIdentityServerUseIdentityServer,这很神奇,用我的 MVC 应用程序注册端点,然后在内部某个深处处理所有身份验证逻辑IdentityServer4.

显然,如果我想分离 IdentityServer4 后端,我应该在我的后端 API Web 服务代码中调用 AddIdentityServerUseIdentityServer,对吗?我无法在 DMZ 中的前端网站中使用这些方法调用,因为 IdentityServer4 将尝试连接到数据库以获取 OpenID 数据,但数据库位于防火墙后面,无法直接从 DMZ 访问。

我有以下典型的 IdentityServer4 初始化代码:

services.AddIdentityServer(
options =>
{
...
})
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = b => b.UseSqlServer(Configuration.GetConnectionString("IdsvConnection"));
...
})
// this adds the operational data from DB (codes, tokens, consents)
.AddOperationalStore(options =>
{
options.ConfigureDbContext = b => b.UseSqlServer(Configuration.GetConnectionString("IdsvConnection"));
...
})
.AddAspNetIdentity<ApplicationUser>();

但是如果我把这段代码留在前端,IdentityServer4 将无法工作。有没有办法通过后端 API 配置其他类型的操作和配置存储数据库访问?

我当前的 IdentityServer4 基础架构如下所示:

SPA APP, 
mobile apps
|
|
MVC app
with login pages
and IdentityServer4 OpenID endpoint
|
|
SQL server
with IdentityServer4 config
and operational stores

但我需要这样:

SPA APP, 
mobile apps
|
|
--- DMZ ---
MVC app
with login pages
and IdentityServer4 OpenID endpoint
|
|
--- firewall ---
API web service
|
|
SQL server
with IdentityServer4 config
and operational stores

最佳答案

实际上是一个常见的要求,而不是关于编码。它是关于确保如果 DMZ 受到损害,则其他层不会受到损害。标准解决方案是在授权服务器(您的情况下为 IdentityServer)之前使用反向代理。它确保 UI 仍然可以到达 OAuth 端点 - 但如果 DMZ 基础设施遭到破坏,攻击者将无法获得实际的授权服务器及其数据库连接。

关于identityserver4 - 如何将 IdentityServer4 MVC 应用程序拆分为前端 UI/API 和后端 API,以便在 DMZ 中安全托管?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56803476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com