当前位置: 首页 > 知识库问答 >
问题:

Quarkus+KeyCloak-HTTP/1.1 403禁止

刘畅
2023-03-14

我在试用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

任何帮助都将不胜感激

共有1个答案

谷弘致
2023-03-14

对于接受承载令牌的服务应用程序,请使用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作为底层实现框架。所以,我的猜测是与此有关。但我从没见过这样的错误。有人能给我一些关于如何绕过这个问题的见解吗?