如何将Keycloak与Payara Micro集成?



如何将Keycloak与Payara Micro集成?

我想创建一个使用 Keycloak 作为身份验证和授权服务器的无状态 REST JAX-RS 应用程序,但我不知道该怎么做。

Eclipse MicroProfile JWT Authentication API 定义了@LoginConfig注释:

@LoginConfig(authMethod = "MP-JWT", realmName = "admin-realm")
@ApplicationPath("/")
public class MyApplication extends Application {...}

Java EE@RolesAllowed注释:

@Path("/api/v1/books")
public class BooksController {
@GET
@RolesAllowed("read-books")
public Books findAll() {...}
}

如何将这两件事结合起来?

Keycloak项目没有为Payara Server或Payara Micro提供本机适配器,Payara项目也没有提供。

但是Keycloak也提供了一个通用的servlet过滤器适配器,它也应该与Payara Micro一起使用:https://www.keycloak.org/docs/latest/securing_apps/index.html#_servlet_filter_adapter

只需将keycloak-servlet-filter-adapter依赖项添加到 Web 应用程序中,并根据文档在web.xml中配置适配器。不过我还没有测试过它,所以我不知道它是否真的有效。

我在个人项目中遇到了同样的挑战,如前所述,Keycloak 项目没有为 Payara提供本机适配器,在那一刻我做了一个库来保护我的应用程序使用 Keycloak,如果你愿意,你可以看看它,让我知道它是否可以或我们如何改进它。

https://github.com/pablobastidasv/kc_security

您可以在2019年4月的Payara月度综述中找到解决方案

MicroProfile JWT with Keycloak- 在这个分步博客中,Hayri Cicek 演示了如何使用 MicroProfile JWT 和 Keycloak 保护您的服务。

初始化登录配置并使用声明角色映射您的角色

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import org.eclipse.microprofile.auth.LoginConfig;
import javax.annotation.security.DeclareRoles;
@LoginConfig(authMethod = "MP-JWT")
@ApplicationPath("/")
@DeclareRoles({ "mysimplerole", "USER" })
public class ApplicationConfig extends Application {
}

将参数添加到 microprofile-config.properties

mp.jwt.verify.publickey.location=http://localhost:8084/auth/realms/public/protocol/openid-connect/certs
mp.jwt.verify.issuer=http://localhost:8084/auth/realms/public

您可以在"允许的角色"中使用您的角色

@ApplicationScoped
@Path("/hello")
public class HelloWorldEndpoint {
@GET
@Produces("text/plain")
@RolesAllowed("mysimplerole")
public Response doGet() {
return Response.ok("Hello from MicroProfile!").build();
}
}

相关内容

  • 没有找到相关文章

最新更新