首页 > 解决方案 > 多重身份验证(基本身份验证 + Keycloak)

问题描述

我的 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

标签: keycloakquarkusquarkus-oidc

解决方案


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


推荐阅读