运行 OpenIddict 作为容器时令牌发行者的问题
Problems with token issuer when running OpenIddict as a container
我正在尝试 运行 Docker 中的 OpenIddict 以及 Api,Api 通过定义的 link 与 OppenIddict 应用程序通信在 docker-compose (api
-> login
) 中。我有一个前端应用程序 运行ning 在 Docker 之外访问 Api 并通过 localhost
-地址登录。一切正常,直到 Api 使用 linked 地址 (login
) 与登录应用程序通信,然后问题是令牌的颁发者不匹配。
在这种情况下,发行人是 http://localhost:4000
并且当 OpenIddict 验证令牌时它期望 http://login
。
我尝试更改 Startup
和 OpenIddictServerBuilder
中的颁发者,然后问题是它更改了发现文档中使用的基地址,导致前端尝试连接到http://login
.
一个可能的解决方案是更改主机文件并设置网络重定向(将 login
重定向到 127.0.1.1
并将网络重定向设置为使用 localhost:4000),但这感觉像是一个太复杂的解决方案。
我在 IdentityServer4
上遇到过类似的问题,但您可以在不影响基地址的情况下更改发行者。
希望我把问题解释得足够好,任何想法都非常感谢!
终于想通了,您可以在 Startup
中配置 OpenIddict 服务器期间指定有效颁发者列表。在这里我可以说 http://localhost:4000
是一个有效的发行者,因此当 Api 验证它时令牌将有效,即使它使用不同的地址进行通信。如果将来对任何人有帮助,我就是这样做的:
services.AddOpenIddict()
.AddCore()
.AddServer(builder =>
{
builder.Configure(options =>
{
options.TokenValidationParameters.ValidIssuers = new List<string>
{
"http://localhost:4000/",
};
});
});
我正在尝试 运行 Docker 中的 OpenIddict 以及 Api,Api 通过定义的 link 与 OppenIddict 应用程序通信在 docker-compose (api
-> login
) 中。我有一个前端应用程序 运行ning 在 Docker 之外访问 Api 并通过 localhost
-地址登录。一切正常,直到 Api 使用 linked 地址 (login
) 与登录应用程序通信,然后问题是令牌的颁发者不匹配。
在这种情况下,发行人是 http://localhost:4000
并且当 OpenIddict 验证令牌时它期望 http://login
。
我尝试更改 Startup
和 OpenIddictServerBuilder
中的颁发者,然后问题是它更改了发现文档中使用的基地址,导致前端尝试连接到http://login
.
一个可能的解决方案是更改主机文件并设置网络重定向(将 login
重定向到 127.0.1.1
并将网络重定向设置为使用 localhost:4000),但这感觉像是一个太复杂的解决方案。
我在 IdentityServer4
上遇到过类似的问题,但您可以在不影响基地址的情况下更改发行者。
希望我把问题解释得足够好,任何想法都非常感谢!
终于想通了,您可以在 Startup
中配置 OpenIddict 服务器期间指定有效颁发者列表。在这里我可以说 http://localhost:4000
是一个有效的发行者,因此当 Api 验证它时令牌将有效,即使它使用不同的地址进行通信。如果将来对任何人有帮助,我就是这样做的:
services.AddOpenIddict()
.AddCore()
.AddServer(builder =>
{
builder.Configure(options =>
{
options.TokenValidationParameters.ValidIssuers = new List<string>
{
"http://localhost:4000/",
};
});
});