У меня есть два клиента, скажем, ClientA и ClientB, и один пользователь с именем userA, оба клиента имеют конфиденциальный тип доступа, и я следовал этому примеру, чтобы написать свои услуги https://sandor-nemeth.github.io/java/spring/2017/06/15/spring-boot-with-keycloak.html, и все работает, у меня есть одна проблема, хотя, если я запрашиваю токен доступа с помощью этого, запрос почтальона
client_id = ClientA,
grant_type=password,
client_secret= 8657c896-b2fw-4ad6-aa9d-72563240cc62,
scope = openid,
user =userA
password=passwordA.
теперь, когда я делаю запрос к моей защищенной конечной точке, используя этот токен, он работает как следует, но проблема в том, что если я генерирую другой токен, использующий вышеупомянутые запросы тела, за исключением изменения client_id = ClientB и clientB, которые секретируют и вызывают ту же самую конечную точку, это все еще позволит мне получить доступ к конечной точке, но я хочу ограничить (запретить) это, что я хочу сделать, это ограничить запрос только его собственный ресурс.
, и это весенний конфиг
keycloak:
realm: spring-security-example
bearer-only: true
auth-server-url: http://localhost:8080/auth
ssl-required: external
resource: clientA
use-resource-role-mappings: true
principal-attribute: preferred_username
, поэтому, если я сгенерирую токен для clientA, токену, сгенерированному с помощью ClintB, не будет разрешен доступ к любым конечным точкам. (и Я вижу в поле JWT "azp": "ClientA".) Как бы я go об этом, если бы это могло быть достигнуто через конфигурацию. или я должен сделать это в весеннем загрузочном коде?
override fun configure(http: HttpSecurity) {
super.configure(http)
http
.authorizeRequests()
.anyRequest().permitAll()
}