|
1 | 1 | package org.acme.security.openid.connect.client; |
2 | 2 |
|
3 | | -import java.util.Map; |
4 | | - |
5 | | -import org.eclipse.microprofile.config.inject.ConfigProperty; |
6 | 3 | import org.eclipse.microprofile.rest.client.inject.RestClient; |
7 | 4 |
|
8 | | -import io.quarkus.oidc.client.OidcClient; |
9 | | -import io.quarkus.oidc.client.OidcClientConfig; |
10 | | -import io.quarkus.oidc.client.OidcClientConfig.Grant.Type; |
11 | | -import io.quarkus.oidc.client.OidcClients; |
12 | 5 | import io.quarkus.oidc.client.Tokens; |
| 6 | +import io.quarkus.oidc.client.runtime.TokensHelper; |
13 | 7 | import io.smallrye.mutiny.Uni; |
14 | 8 | import jakarta.inject.Inject; |
15 | 9 | import jakarta.ws.rs.GET; |
|
19 | 13 | @Path("/frontend") |
20 | 14 | public class FrontendResource { |
21 | 15 | @Inject |
22 | | - OidcClients oidcClients; |
23 | | - |
24 | | - @ConfigProperty(name = "quarkus.oidc.auth-server-url") |
25 | | - String oidcProviderAddress; |
26 | | - |
| 16 | + OidcClientCreator oidcClientCreator; |
| 17 | + TokensHelper tokenHelper = new TokensHelper(); |
| 18 | + |
27 | 19 | @Inject |
28 | 20 | @RestClient |
29 | 21 | RestClientWithOidcClientFilter restClientWithOidcClientFilter; |
@@ -54,54 +46,34 @@ public Uni<String> getAdminNameWithOidcClientToken() { |
54 | 46 | @Path("user-name-with-oidc-client-token-header-param") |
55 | 47 | @Produces("text/plain") |
56 | 48 | public Uni<String> getUserNameWithOidcClientTokenHeaderParam() { |
57 | | - Uni<OidcClient> oidcClient = createOidcClientDynamically(); |
58 | | - return oidcClient.onItem() |
59 | | - .transformToUni(client -> client.getTokens().onItem() |
60 | | - .transformToUni(tokens -> restClientWithTokenHeaderParam.getUserName("Bearer " + tokens.getAccessToken()))); |
| 49 | + return tokenHelper.getTokens(oidcClientCreator.getOidcClient()).onItem() |
| 50 | + .transformToUni(tokens -> restClientWithTokenHeaderParam.getUserName("Bearer " + tokens.getAccessToken())); |
61 | 51 | } |
62 | 52 |
|
63 | 53 | @GET |
64 | 54 | @Path("admin-name-with-oidc-client-token-header-param") |
65 | 55 | @Produces("text/plain") |
66 | 56 | public Uni<String> getAdminNameWithOidcClientTokenHeaderParam() { |
67 | | - Uni<OidcClient> oidcClient = createOidcClientDynamically(); |
68 | | - return oidcClient.onItem() |
69 | | - .transformToUni(client -> client.getTokens().onItem() |
70 | | - .transformToUni(tokens -> restClientWithTokenHeaderParam.getAdminName("Bearer " + tokens.getAccessToken()))); |
| 57 | + return tokenHelper.getTokens(oidcClientCreator.getOidcClient()).onItem() |
| 58 | + .transformToUni(tokens -> restClientWithTokenHeaderParam.getAdminName("Bearer " + tokens.getAccessToken())); |
71 | 59 | } |
72 | 60 |
|
73 | 61 | @GET |
74 | 62 | @Path("user-name-with-oidc-client-token-header-param-blocking") |
75 | 63 | @Produces("text/plain") |
76 | 64 | public String getUserNameWithOidcClientTokenHeaderParamBlocking() { |
77 | | - Uni<OidcClient> oidcClient = createOidcClientDynamically(); |
78 | | - OidcClient client = oidcClient.await().indefinitely(); |
79 | | - Tokens tokens = client.getTokens().await().indefinitely(); |
| 65 | + Tokens tokens = tokenHelper.getTokens(oidcClientCreator.getOidcClient()).await().indefinitely(); |
80 | 66 | return restClientWithTokenHeaderParam.getUserName("Bearer " + tokens.getAccessToken()).await().indefinitely(); |
81 | 67 | } |
82 | 68 |
|
83 | 69 | @GET |
84 | 70 | @Path("admin-name-with-oidc-client-token-header-param-blocking") |
85 | 71 | @Produces("text/plain") |
86 | 72 | public String getAdminNameWithOidcClientTokenHeaderParamBlocking() { |
87 | | - Uni<OidcClient> oidcClient = createOidcClientDynamically(); |
88 | | - OidcClient client = oidcClient.await().indefinitely(); |
89 | | - Tokens tokens = client.getTokens().await().indefinitely(); |
| 73 | + Tokens tokens = tokenHelper.getTokens(oidcClientCreator.getOidcClient()).await().indefinitely(); |
90 | 74 | return restClientWithTokenHeaderParam.getAdminName("Bearer " + tokens.getAccessToken()).await().indefinitely(); |
91 | 75 | } |
92 | 76 |
|
93 | | - private Uni<OidcClient> createOidcClientDynamically() { |
94 | | - OidcClientConfig cfg = new OidcClientConfig(); |
95 | | - cfg.setId("myclient"); |
96 | | - cfg.setAuthServerUrl(oidcProviderAddress); |
97 | | - cfg.setClientId("backend-service"); |
98 | | - cfg.getCredentials().setSecret("secret"); |
99 | | - cfg.getGrant().setType(Type.PASSWORD); |
100 | | - cfg.setGrantOptions(Map.of("password", |
101 | | - Map.of("username", "alice", "password", "alice"))); |
102 | | - return oidcClients.newClient(cfg); |
103 | | - } |
104 | | - |
105 | 77 | @GET |
106 | 78 | @Path("user-name-with-propagated-token") |
107 | 79 | @Produces("text/plain") |
|
0 commit comments