在 Quarkus 中并行使用两个 OIDC 身份验证流程

Use two OIDC Auth flows in parallel in Quarkus

我使用 Quarkus 创建了一个 Rest-API 和一个前端作为自包含系统。 前端是静态服务的。

对于身份验证,我使用 kleycloak 服务器并且配置与 quarkus this 指南中的配置几乎相同。

quarkus.oidc.auth-server-url=http://localhost:8180/auth/realms/quarkus
quarkus.oidc.client-id=frontend
quarkus.oidc.application-type=web-app
quarkus.http.auth.permission.authenticated.paths=/*
quarkus.http.auth.permission.authenticated.policy=authenticated

使用此配置,我需要对其余 api 和前端进行身份验证。这就是我想要的。 如果我尝试加载 index.html 我被重定向到 keycloak 并返回。效果很好。

问题是,同样的事情发生在其余的 api 身上。我被重定向到带有“302 found”状态代码的 keycloak。在这里,我想使用不记名令牌进行身份验证并且不进行重定向。 Quarkus 为此具有以下配置:

quarkus.oidc.application-type=service

这与前端的配置冲突。有没有办法同时使用两者,一个用于静态文件,一个用于其余文件-api?

如果我没记错的话,您正在寻找多租户 oidc 设置(即使您没有设计租户)。可以找到指南和示例 on the official quarkus website here。 这样您将拥有类似的设置:

quarkus.oidc.auth-server-url=http://localhost:8180/auth/realms/quarkus
quarkus.oidc.client-id=frontend
quarkus.oidc.application-type=web-app
quarkus.http.auth.permission.authenticated.paths=/*
quarkus.http.auth.permission.authenticated.policy=authenticated

quarkus.oidc.restapi.auth-server-url=http://localhost:8180/auth/your/path
quarkus.oidc.restapi.client-id=backend
quarkus.oidc.restapi.application-type=service

P.S 你可以把 restapi 换成更可爱的名字。