Я реализовал поток KeyCloak Authorization_Code в своем приложении, в котором ReactJs во внешнем интерфейсе и SpringBoot в бэкэнде.
Я использовал адаптеры KeyCloak в обоих концах, и он работает очень хорошо, но весь процесс, т.е. получение кода и обмен на токен,происходящее на стороне браузера означает фронт канала.
Теперь я хочу внести в него некоторые изменения, чтобы он получал Auth_code только в браузере, а затем отправлял этот auth_code на сервер, а затем сервер обменивался кодом с токеном из KeyCloak, а затем отправлял обратно в браузер. и браузер сохранит в кеше.
Я проверил много источников, но не нашел никакой ссылки на этот способ.
Я попытался нажать некоторые конечные точки Rest, но они попадают в поток Auth_Code и даютнаконец токен
Конечная точка отдыха http://localhost:8081/auth/realms/book-shop/protocol/openid-connect/auth
Это мой конфиг в React
componentDidMount() {
const keycloak = Keycloak({
"realm": "book-shop",
"url": "http://localhost:8081/auth",
"clientId" : "book-shop-main",
"ssl-required": "external",
"credentials":{
"secret" : "5dfd7e2c-ab12-4517-aad7-8bd063ce694b"
}
});
keycloak.init({onLoad: 'login-required'}).then(authenticated => {
this.setState({ keycloak: keycloak, authenticated: authenticated })
console.log(this.state);
localStorage.setItem("react-token", keycloak.token);
localStorage.setItem("react-refresh-token", keycloak.refreshToken);
//this.props.history.push('/books');
});
}
Я ожидаю, что должен быть какой-нибудь способ, где я могу получить auth_code вна стороне браузера, а затем обменять токены на стороне сервера.