Как реализовать Keycloak Authorization_code с частично обратным каналом? - PullRequest
0 голосов
/ 01 октября 2019

Я реализовал поток 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 вна стороне браузера, а затем обменять токены на стороне сервера.

...