我在试用Quarkus与keycloak的安全集成
下面是我的restendpoint
@Path("/jwt")
@RequestScoped
public class JWTRestController {
@Inject
@Claim(standard = Claims.preferred_username)
Optional<JsonString> currentUsername;
@GET
@Path("/user")
@Produces(MediaType.TEXT_PLAIN)
@RolesAllowed({"user"})
public String userData() {
return "data for user ";
}
@GET
@Path("/admin")
@Produces(MediaType.TEXT_PLAIN)
@RolesAllowed({"admin"})
public String adminData() {
return "data for admin ";
}
}
我的应用程序属性
# Configuration file
quarkus.http.port=8082
# MP-JWT Config
mp.jwt.verify.publickey.location=http://localhost:8180/auth/realms/demo/protocol/openid-connect/certs
mp.jwt.verify.issuer=http://localhost:8180/auth/realms/demo
quarkus.smallrye-jwt.auth-mechanism=MP-JWT
quarkus.smallrye-jwt.realmName=quarkus-keycloak-demo
quarkus.smallrye-jwt.enabled=true
export access_token=$(\
curl -X POST http://localhost:8180/auth/realms/demo/protocol/openid-connect/token \
--user demo-client:e0da2ad7-5f4c-49b3-ae54-dbd7a28d532a \
-H 'content-type: application/x-www-form-urlencoded' \
-d 'username=user&password=user&grant_type=password' | jq --raw-output '.access_token' \
)
curl -v -H "Authorization: Bearer $access_token" http://localhost:8082/jwt/user
< HTTP/1.1 403 Forbidden
< Content-Length: 9
< Content-Type: text/plain;charset=UTF-8
<
* Connection #0 to host localhost left intact
Forbidden* Closing connection 0
任何帮助都将不胜感激
对于接受承载令牌的服务应用程序,请使用quarkus-oidc,遵循https://quarkus.io/guides/security-openid-connect
我正在使用Quarkus 1.0.1框架开发一套微服务。我希望使用KeyCloak8.0.1作为我的身份提供程序来保护这些信息。我已经在一个Docker容器中启动并运行了Keycloak,并为我的微服务配置了一个领域和相应的客户机。现在我到了我想保护他们的地步,我遇到了一个问题。 我的REST服务没有为它配置的注释或任何授权要求。这应该意味着,即使我没有经过身份验证,我也能够访问该服务。但是,当我
我正在设置一个 Keycloak 实例以使用包含Spring安全性的 spring 启动应用程序。我使用邮递员来测试服务。我从获取新的访问令牌开始,工作正常。当我对安全endpoint进行 HTTP GET 调用时 - 一切正常,员工返回。但是当我对安全endpoint进行 HTTP POST/PUT/DELETE 调用时,Keycloak 说错误 403 禁止。请看一看,告诉我出了什么问题。 我
我目前正在使用多个Quarkus服务和Keycloak RBAC开发一个PoC。工作起来就像一个魅力,很容易引导和开始实现功能。 但我遇到了一个我无法解决的问题。想象一下: null 使JWT的持续时间超过当前的30分钟,但这只是推迟了问题并打开了一些安全门 将用户的输入存储在本地存储器中,以便在令牌刷新后进行恢复(我们也会这样做,以避免浪费用户的工作) 在JS中“静默”刷新令牌,而不让用户知道。
我有以下设置: Keycoap在docker中运行,公共接口映射到127.0.0.1:8180,内部Keycoap-n:8080 Quarkus在docker中运行,公共接口映射到127.0.0.1:8080 两者都在同一docker网络中运行,并可以通信。 外部AutzClient(不在docker中),使用令牌与quarkus通信 如果客户端和quarkus在Docker之外,并通过同一接口与
我使用http://localhost:8080/auth/realms/{realm_name}/protocol/openid-connect/token endpoint创建令牌。 grant_type=client_credentials 客户端-id:------------- 客户端-secret:78296D38-CC82-4010-A817-65C283484E51 现在我想获得r
我以前在其他项目中实现过类似的功能,但从未使用Quarkus作为底层实现框架。所以,我的猜测是与此有关。但我从没见过这样的错误。有人能给我一些关于如何绕过这个问题的见解吗?