Step 1: User Authentication to get an OIDC token and Access Token (ClientId: AppClient)
Request :
curl --location --request POST ‘http://localhost:8080/auth/realms/MyFirstRealm/protocol/openid-connect/token’
–header ‘Content-Type: application/x-www-form-urlencoded’
–header ‘Cookie: AUTH_SESSION_ID_LEGACY=ecfa1c43-a80c-41c6-9cfa-fdc5d4ce4af7.vpn-100’
–data-urlencode ‘client_id=AppClient’
–data-urlencode ‘client_secret=f81a92f6-d5b0-4b06-ad28-6dd1d4698b10’
–data-urlencode ‘grant_type=password’
–data-urlencode ‘scope=MyFirstClientScope openid’
–data-urlencode ‘username=achalla’
–data-urlencode ‘password=admin’
Step-2 Exchange Access Token for a Different Client’s Access Token (ClientId: AppAdmin)
Request:
curl --location --request POST ‘http://localhost:8080/auth/realms/MyFirstRealm/protocol/openid-connect/token’
–header ‘Content-Type: application/x-www-form-urlencoded’
–header ‘Cookie: AUTH_SESSION_ID_LEGACY=ecfa1c43-a80c-41c6-9cfa-fdc5d4ce4af7.vpn-100’
–data-urlencode ‘subject_token=eyJhbGciOiJSUzI1NiIsInR5cCIgO***********’
–data-urlencode ‘grant_type=urn:ietf:params:oauth:grant-type:token-exchange’
–data-urlencode ‘client_id=AppClient’
–data-urlencode ‘client_secret=f81a92f6-d5b0-4b06-ad28-6dd1d4698b10’
–data-urlencode ‘audience=AppAdmin’
–data-urlencode ‘request_token_type=urn:ietf:params:oauth:token-type:access_token’