多重身份验证(基本身份验证 + Keycloak)

时间:2021-03-23 12:57:44

标签: keycloak quarkus quarkus-oidc

我的 Quarkus 项目中有 2 个不同的休息端点:

/api/ws/...
/api/web/...

根据我的理解,使用 Keycloak 之前我会获得一个不记名令牌,使用此令牌我可以访问端点。 但是,如果我只想使用基本身份验证(用户名 + 密码)保护“ws”端点,我该怎么做? 这样我还包含 SecurityIdentity (Principal) 中的用户?

当前的“application.properties”如下所示:

# AUTH
quarkus.http.auth.basic=true
quarkus.http.auth.permission.authenticated.paths=/*
quarkus.http.auth.permission.authenticated.policy=authenticated
quarkus.http.auth.permission.web.paths=/*
quarkus.http.auth.permission.web.policy=authenticated
quarkus.oidc.tenant-id=RealmResolver
quarkus.oidc.enabled=true

quarkus.oidc.auth-server-url=${keycloak.url}/auth/realms/${keycloak.realm}
quarkus.oidc.client-id=${keycloak.client_id}
quarkus.oidc.token-path=${keycloak.url}/auth/realms/${keycloak.realm}/protocol/openid-connect/token
quarkus.oidc.token.refresh-expired=true
quarkus.oidc.application-type=WEB_APP

## WS
quarkus.http.auth.ws.basic=true
quarkus.oidc.ws.auth-server-url=${keycloak.url}/auth/realms/${keycloak.realm}
quarkus.oidc.ws.client-id=${keycloak.client_id}
quarkus.oidc.ws.application-type=hybrid
quarkus.http.auth.permission.ws.paths=/api/ws/*
quarkus.http.auth.permission.ws.policy=authenticated

1 个答案:

答案 0 :(得分:1)

Quarkus 可以同时支持多种认证机制——但目前它不能只对特定的请求路径应用一种机制。请观看https://github.com/quarkusio/quarkus/issues/11886 谢谢