Я работаю над проектом, в котором мне нужно создать приложение, которое будет действовать как посредник OID C между клиентом, который поддерживает только OID C для аутентификации, и REST api. REST api может генерировать токены и предоставлять информацию о пользователе, но не поддерживает OID C.
Для этого я думаю использовать keycloak для обработки связи OID C с клиентом и реализовать мои собственное приложение java, которое keycloak может запускать для реализации конечной точки авторизации, токена и пользовательской информации (своего рода настраиваемого поставщика удостоверений), обрабатывающего связь с остальным API.
Я создал область в keycloak и настроил область использования перенаправителя поставщика удостоверений с поставщиком удостоверений, который я добавил в keycloak (определяемый пользователем OpenID Connect v1.0). В конфигурации поставщика удостоверений я установил все URL-адреса так, чтобы они указывали на мое приложение java, но исходный вызов авторизации OID C от клиента просто перенаправляет на redirect_uri с # error = login_required без какой-либо из моих конечных точек в java запущено приложение.
Думаю, я кое-что пропустил ... Мне нужно вмешаться в процесс авторизации, чтобы я мог выбрать параметр запроса из запроса авторизации, который должен быть обработан в моем приложении java. Мне также нужно отобразить токен из остального api в запрос токена (когда этот запрос поступает из серверной части клиентского приложения) и, наконец, сопоставить объект userinfo как ответ на запрос userinfo.
I очень надеюсь, что у кого-то будет время указать мне в правильном направлении. Заранее большое спасибо.
Редактировать: я добавил диаграмму последовательности, чтобы лучше объяснить: ![enter image description here](https://i.stack.imgur.com/6RzA7.png)
Мне нужно перехватить вызов запроса авторизации на выбрать настраиваемый параметр запроса (endUserString), который идентифицирует пользователя. Формы входа в систему не будет. Мне нужен параметр в моем коде, который использует его для REST API. И токен, и информация о пользователе должны быть получены из моего приложения, а не из самого keycloak.
Посредник Java может заранее запросить токен (A) и использовать его для доступа к Rest API (используя предопределенные clientId и clientsecret). В качестве альтернативы этот токен можно получить для каждого метода. Токен должен использоваться для получения информации о клиенте из REST API (B). Я хочу обернуть это поддержкой OID C без какой-либо формы входа. Браузер просто перенаправит в поток авторизации с endUserString, идентифицирующим конечного пользователя. Информация о клиенте будет возвращена посредником java в keycloak, отвечая на это в GetUserInfoRsp.