[keycloak-user] Token exchange in java client

Jean-François HEROUARD jfherouard.almerys at gmail.com
Tue Nov 28 10:52:02 EST 2017


Hi,

I am using the token exchange feature of Keycloak 3.4, which is really
great and useful in my REST backoffice (before the only way i found was to
do a lot of 302 in browser to get needed access tokens).

Everything is documented for server configuration, but in java client is
there a new function to exchange a token ?

I wrote some code extending the current AuthzClient if anybody is looking
for the same thing :

    public AccessTokenResponse exchangeAccessToken(String bearer, String
bearerIdpName) {
        return
this.http.<AccessTokenResponse>post(authzClient.getServerConfiguration().getTokenEndpoint())
                .authentication()
                    .client()
                .param("grant_type",
"urn:ietf:params:oauth:grant-type:token-exchange")
                .param("subject_token", bearer)
                .param("subject_issuer", bearerIdpName)
                .param("subject_token_type",
"urn:ietf:params:oauth:token-type:access_token")
                .param("audience",
authzClient.getConfiguration().getResource())
                .response()
                    .json(AccessTokenResponse.class)
                .execute();
    }
Thanks


More information about the keycloak-user mailing list