Я могу получить действительный токен от keycloak, но я все равно получаю ответ 404 not found от службы, защищенной с помощью keycloak, когда я пытаюсь получить к нему доступ с помощью токена.Что еще мне нужно сделать?Что еще нужно для доступа к сервису, защищенному с помощью keycloak?
Я получаю токен на предъявителя.
Я создал самый простой из доступных мне сервис и развернул его как WAR на Wildfly.Я установил адаптер keycloak в wildfly и добавил в войну файл keycloak.json вместе с изменением web.xml.
Для web.xml я добавил информацию из документации:
<module-name>application</module-name>
<security-constraint>
<web-resource-collection>
<web-resource-name>Resources</web-resource-name>
<url-pattern>/resources/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>user</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>KEYCLOAK</auth-method>
</login-config>
<security-role>
<role-name>user</role-name>
</security-role>
Я добавил роль пользователя в keycloak
У меня есть клиентская программа, которая берет пользователя и пароль и возвращает токен из установки keycloak
AuthzClient authzClient = AuthzClient.create();
AccessTokenResponse response = authzClient.obtainAccessToken(name, password);
String tokenStr = response.getToken();
Затем я пытаюсь использоватьэтот токен, чтобы сделать вызов REST для WAR, защищенного с помощью keycloak:
String urlString = "http://localhost:8080/simple-rest-0.0.1-SNAPSHOT/resources/message";
URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
String authString = "Bearer " + tokenStr;
con.setRequestProperty("Authorization", authString);
basicStatus = con.getResponseCode();
basicStatus возвращает 404. Я просто здесь неправильно использую keycloak?Я что-то упустил?