我目前正在使用 quarkus 开发基于微服务的应用程序。我需要修改 SecurityIdentity(用户通过 oidc 进行身份验证)以注入从另一个微服务检索到的权限列表。我目前将其用于以下目的:
@ApplicationScoped
public class RolesAugmentor implements SecurityIdentityAugmentor {
@Inject
@RestClient
CoreServiceClient coreServiceClient;
@Override
public Uni<SecurityIdentity> augment(SecurityIdentity identity, AuthenticationRequestContext context) {
return context.runBlocking(build(identity));
}
private Supplier<SecurityIdentity> build(SecurityIdentity identity) {
if (identity.isAnonymous()) {
return () -> identity;
} else {
QuarkusSecurityIdentity.Builder builder = QuarkusSecurityIdentity.builder(identity);
var permissions = coreServiceClient.getPermissions();
builder.addRoles(new HashSet<>(permissions));
return builder::build;
}
}
}
其中 CoreServiceClient 是用于检索用户权限的 RestEasy RestClient,但是当我运行代码时,我得到一个 javax.ws.rs.ProcessingException:javax.enterprise.context.ContextNotActiveException
关于如何完成这项任务的任何想法?
谢谢尤克斯