我创建了一个 quarkus 应用程序,该应用程序使用我的其他团队创建的其他自定义库来验证使用 quarkus OIDC 的 oauth 访问令牌。当我使用 @Authentication 注释时,即使我传递了过期的令牌,也不会发生任何事情。当我深入研究该库时,我发现其他团队创建了一个优先级为 1000 的自定义 ContainerRequestFilter 过滤器,因为这可能是此身份验证注释不起作用。
如果这是原因,那么如何在不更改库代码的情况下重置 quarkus OIDC @Authentication 注释优先级。
此外,我尝试创建自己的过滤器,但不知道如何添加 OIDC 身份验证过滤器链,以便进行 OIDC 身份验证。
这是另一个团队的图书馆代码:
@Priority(2000)
static class IdentityAndAccessManagementFilter implements ContainerRequestFilter {
public void filter(ContainerRequestContext context) {
SecurityContext sc = context.getSecurityContext();
if (sc == null) {
context.abortWith(Response.status(Status.UNAUTHORIZED).build());
} else {
SecurityPrincipal principal = (SecurityPrincipal)sc.getUserPrincipal();
try {
// doing some validation
} catch (AccessControlException var5) {
context.abortWith(Response.status(Status.FORBIDDEN.getStatusCode(),var5.getMessage()).build());
}
}
}
}