问题标签 [quarkus-oidc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
227 浏览

quarkus - 有没有办法从 Quarkus OIDC 验证中排除一些路径

我正在使用 quarkus-oidc 组件在对微服务的调用中强制执行 JWT 令牌验证。

关键是有一些路径 ( /api/public/*) 可以公开调用(无需授权:Bearer JWT)。

有没有办法从令牌验证中排除路径?

0 投票
1 回答
2565 浏览

docker - 构建并运行 Quarkus 的 Docker 镜像

我尝试使用 Quarkus 创建一个简单的微服务项目。可以构建本机可执行文件,但无法启动已创建应用程序的 Docker 容器。

微服务使用 OIDC 进行身份验证,即微服务从调用方接收到必须有效的 JWT。JWT 由 Keycloak 应用程序发布和验证。该应用程序使用 PostgreSQL 数据库。Keycloak 和 Postgres 都作为 Docker 容器运行。整个部署仍然只在本地机器上相关。

我添加了扩展名quarkus-container-image-docker。我正在使用 Maven 及以下,我列出了所有来自pom.xml.

我使用 Linux 操作系统。

我可以使用以下命令构建所有微服务的本机可执行文件。执行和调用它们工作正常。

我修改了 中的端口,Dockerfile.native因为我更改了每个服务运行的端口。以下代码显示了一个Dockerfile.native带有端口的代码8081

我可以使用这些本机可执行文件构建 Docker 映像。

但是,当我尝试使用以下命令从映像启动容器时,

我收到一个错误:

在我研究的过程中,我发现了另一个有趣的选项来告诉 Maven 插件构建一个容器。

从生成的图像启动容器也会导致错误。

有人可以向我提供一些信息如何处理这种情况以允许 Docker 构建然后可以成功运行吗?

0 投票
0 回答
65 浏览

keycloak - 我们可以在 Quarkus 中混合使用 OIDC 身份验证和基本身份验证吗?

我正在通过 Quarkus 构建休息服务,我有一些通过 keycloak 进行身份验证的端点,但有些通过基本身份验证进行了身份验证。我可以在 Quarkus 中做到这一点吗?

非常感谢。

0 投票
1 回答
47 浏览

quarkus - 自动保护所有端点

我在这里关注 Quarkus OpenID Connect 教程。

但我不需要检查角色。

我希望除了 health-check 和 swagger-ui 之外的所有端点来检查令牌是否有效。有时我可能会注入 JsonWebToken 以使用声明。如何使用扩展程序做到这一点?

0 投票
1 回答
70 浏览

keycloak - 使用 OIDC 和 KeyCloak 从 SecurityIdentity 获取字段 issueFor

我正在使用 OIDC 和 KeyCloak Quarkus 扩展。

目前,我访问令牌信息是这样的:

我在这些抽象中找不到 issueFor 字段。这似乎有我需要的东西。

但注入失败。那么,如何使用 quarkus-oidc 获取信息?

0 投票
1 回答
53 浏览

keycloak - 多重身份验证(基本身份验证 + Keycloak)

我的 Quarkus 项目中有 2 个不同的休息端点:

根据我的理解,使用 Keycloak 之前我得到了一个不记名令牌,并且有了这个令牌,我可以访问端点。但是,如果我只想使用基本身份验证(用户名 + 密码)来保护“ws”端点,我该怎么做?那么我是否还包含 SecurityIdentity (Principal) 中的用户?

当前的“application.properties”如下所示:

0 投票
0 回答
123 浏览

java - 使用 OIDC 时未在 websocket OnOpen 调用中设置 Quarkus SecurityIdentity

quarkus-oidc我有一个用于用户身份验证的 Quarkus (1.6.1.Final) 应用程序。我的服务器有一个 websocket 端点:

我希望能够在此端点上进行一些用户身份验证,最好是通过@RolesAllowed类上的注释。通过连接调试器,我可以单步执行OidcAuthenticationMechanism并验证SecurityIdentity对象是否正在构建并正确反映我的 JWT 的内容 - 但是,当我到达OnOpen回调时,它不再设置。@RolesAllowed(同样,在我的端点上使用 a 的任何尝试都会失败,因为SecurityIdentity是调用中的匿名用户RolesAllowedCheck。)

0 投票
1 回答
229 浏览

quarkus - 使用 RestClient 时出现 ContextNotActiveException

我目前正在使用 quarkus 开发基于微服务的应用程序。我需要修改 SecurityIdentity(用户通过 oidc 进行身份验证)以注入从另一个微服务检索到的权限列表。我目前将其用于以下目的:

其中 CoreServiceClient 是用于检索用户权限的 RestEasy RestClient,但是当我运行代码时,我得到一个 javax.ws.rs.ProcessingException:javax.enterprise.context.ContextNotActiveException

关于如何完成这项任务的任何想法?

谢谢尤克斯

0 投票
0 回答
440 浏览

java - Quarkus SmallRye-JWT JSON Web 密钥集刷新间隔

我正在使用 SmallRye JWT 生成和验证 JWT 令牌。
使用微服务 A,我生成 JWT 令牌。
使用微服务 B,我必须验证 JWT 令牌。
在微服务 B 中,我使用以下属性:

微服务 A 具有生成 JWKS 的端点 /key:

当我同时运行两个微服务时,我可以验证微服务 B 中的令牌......但是如果我重新启动微服务 A(它将生成另一个 JWKS),但微服务 B 将无法再验证 JWT 令牌。在 SmallRye - Quarkus 文档中,我发现了以下属性:

smallrye.jwt.jwks.refresh-interval:JWK 缓存刷新间隔,以分钟为单位。除非 mp.jwt.verify.publickey.location 指向基于 HTTP 或 HTTPS URL 的 JWK 集,并且没有从 JWK 集端点返回具有正 max-age 参数值的 HTTP Cache-Control 响应标头,否则它将被忽略。

smallrye.jwt.jwks.forced-refresh-interval:以分钟为单位的强制 JWK 缓存刷新间隔,用于限制由于缓存没有 JWK 密钥而导致令牌验证失败时可能发生的强制刷新尝试的频率与孩子与当前令牌的孩子标头匹配的属性。除非 mp.jwt.verify.publickey.location 指向基于 HTTP 或 HTTPS URL 的 JWK 集,否则它将被忽略。

如您所见,我将两个属性都设置为 2 分钟:

但它不起作用。

我该怎么做才能使它起作用?我想再次调用 key.location (http://localhost:8084/key) 来再次阅读新的 JKWS。

谢谢你。

0 投票
1 回答
466 浏览

quarkus - Quarkus JWT 身份验证不能用作本机应用程序

我使用以下命令创建了一个新的 Quarkus 应用程序:

然后,我修改了生成HelloResource的以打印出用户名。

为了与 Okta 一起工作,我添加了几个属性application.properties

我修复了它,HelloResourceTest所以它现在需要一个 401。

然后,我跑了./mvnw quarkus:dev。我能够使用 OIDC 调试器生成有效的访问令牌并使用HTTPie访问此 API。

回应是:

但是,如果我将其构建为本机映像./mvnw package -Pnative并尝试运行它,我将无法访问 API。

我不确定Unable to get GraalVM version构建时是否需要担心错误。

跑步./target/quarkus-1.0.0-SNAPSHOT-runner开始一切都很好。

但是,我无法使用/hello有效的访问令牌访问端点。

如果我停止本机应用程序并运行./mvnw quarkus:dev,则相同的命令有效。