1818
1919import java .util .Optional ;
2020
21- import org .cloudfoundry .UnknownCloudFoundryException ;
2221import org .cloudfoundry .client .CloudFoundryClient ;
2322import org .cloudfoundry .doppler .DopplerClient ;
2423import org .cloudfoundry .operations .CloudFoundryOperations ;
3231import org .cloudfoundry .reactor .tokenprovider .PasswordGrantTokenProvider ;
3332import org .cloudfoundry .reactor .uaa .ReactorUaaClient ;
3433import org .cloudfoundry .uaa .UaaClient ;
35- import org .cloudfoundry .uaa .UaaException ;
36- import org .cloudfoundry .uaa .clients .Clients ;
37- import org .cloudfoundry .uaa .clients .CreateClientRequest ;
38- import org .cloudfoundry .uaa .clients .DeleteClientRequest ;
39- import org .cloudfoundry .uaa .tokens .GrantType ;
34+
35+ import org .springframework .beans .factory .annotation .Qualifier ;
4036import org .springframework .boot .autoconfigure .condition .ConditionalOnProperty ;
4137import org .springframework .boot .context .properties .EnableConfigurationProperties ;
4238import org .springframework .context .annotation .Bean ;
4339import org .springframework .context .annotation .Configuration ;
44- import reactor .core .publisher .Mono ;
4540
4641@ Configuration
4742@ EnableConfigurationProperties (CloudFoundryProperties .class )
4843public class CloudFoundryClientConfiguration {
4944
50- static final String ACCEPTANCE_TEST_OAUTH_CLIENT_ID = "acceptance-test-client" ;
51- static final String ACCEPTANCE_TEST_OAUTH_CLIENT_SECRET = "acceptance-test-client-secret" ;
52- private static final String [] ACCEPTANCE_TEST_OAUTH_CLIENT_AUTHORITIES = {
53- "openid" , "cloud_controller.admin" , "cloud_controller.read" , "cloud_controller.write" ,
54- "clients.read" , "clients.write"
45+ public static final String ACCEPTANCE_TEST_OAUTH_CLIENT_ID = "acceptance-test-client" ;
46+ public static final String ACCEPTANCE_TEST_OAUTH_CLIENT_SECRET = "acceptance-test-client-secret" ;
47+ public static final String [] ACCEPTANCE_TEST_OAUTH_CLIENT_AUTHORITIES = {
48+ "openid" ,
49+ "cloud_controller.admin" ,
50+ "cloud_controller.read" ,
51+ "cloud_controller.write" ,
52+ "clients.read" ,
53+ "clients.write"
54+ };
55+
56+ public static final String APP_BROKER_CLIENT_ID = "app-broker-client" ;
57+ public static final String APP_BROKER_CLIENT_SECRET = "app-broker-client-secret" ;
58+ public static final String [] APP_BROKER_CLIENT_AUTHORITIES = {
59+ "cloud_controller.read" , "cloud_controller.write"
5560 };
5661
5762 @ Bean
58- CloudFoundryOperations cloudFoundryOperations (CloudFoundryProperties properties , CloudFoundryClient client ,
59- DopplerClient dopplerClient , UaaClient uaaClient ) {
63+ CloudFoundryOperations cloudFoundryOperations (CloudFoundryProperties properties ,
64+ CloudFoundryClient client ,
65+ DopplerClient dopplerClient ,
66+ UaaClient uaaClient ) {
6067 return DefaultCloudFoundryOperations .builder ()
6168 .cloudFoundryClient (client )
6269 .dopplerClient (dopplerClient )
@@ -67,7 +74,8 @@ CloudFoundryOperations cloudFoundryOperations(CloudFoundryProperties properties,
6774 }
6875
6976 @ Bean
70- CloudFoundryClient cloudFoundryClient (ConnectionContext connectionContext , TokenProvider tokenProvider ) {
77+ CloudFoundryClient cloudFoundryClient (ConnectionContext connectionContext ,
78+ @ Qualifier ("userCredentials" ) TokenProvider tokenProvider ) {
7179 return ReactorCloudFoundryClient .builder ()
7280 .connectionContext (connectionContext )
7381 .tokenProvider (tokenProvider )
@@ -85,24 +93,29 @@ ConnectionContext connectionContext(CloudFoundryProperties properties) {
8593 }
8694
8795 @ Bean
88- DopplerClient dopplerClient (ConnectionContext connectionContext , TokenProvider tokenProvider ) {
96+ DopplerClient dopplerClient (ConnectionContext connectionContext ,
97+ @ Qualifier ("userCredentials" ) TokenProvider tokenProvider ) {
8998 return ReactorDopplerClient .builder ()
9099 .connectionContext (connectionContext )
91100 .tokenProvider (tokenProvider )
92101 .build ();
93102 }
94103
95104 @ Bean
96- UaaClient uaaClient (ConnectionContext connectionContext , TokenProvider tokenProvider ) {
105+ UaaClient uaaClient (ConnectionContext connectionContext ,
106+ @ Qualifier ("clientCredentials" ) TokenProvider tokenProvider ) {
97107 return ReactorUaaClient .builder ()
98108 .connectionContext (connectionContext )
99109 .tokenProvider (tokenProvider )
100110 .build ();
101111 }
102112
103113 @ Bean
104- @ ConditionalOnProperty ({CloudFoundryProperties .PROPERTY_PREFIX + ".username" ,
105- CloudFoundryProperties .PROPERTY_PREFIX + ".password" })
114+ @ Qualifier ("userCredentials" )
115+ @ ConditionalOnProperty ({
116+ CloudFoundryProperties .PROPERTY_PREFIX + ".username" ,
117+ CloudFoundryProperties .PROPERTY_PREFIX + ".password"
118+ })
106119 PasswordGrantTokenProvider passwordTokenProvider (CloudFoundryProperties properties ) {
107120 return PasswordGrantTokenProvider .builder ()
108121 .password (properties .getPassword ())
@@ -111,42 +124,17 @@ PasswordGrantTokenProvider passwordTokenProvider(CloudFoundryProperties properti
111124 }
112125
113126 @ Bean
114- @ ConditionalOnProperty ({CloudFoundryProperties .PROPERTY_PREFIX + ".client-id" ,
115- CloudFoundryProperties .PROPERTY_PREFIX + ".client-secret" })
116- ClientCredentialsGrantTokenProvider clientTokenProvider (ConnectionContext connectionContext ,
117- CloudFoundryProperties properties ) {
118-
119- Clients uaaClients = buildTempUaaClient (connectionContext , properties ).clients ();
120-
121- uaaClients .delete (DeleteClientRequest .builder ()
122- .clientId (ACCEPTANCE_TEST_OAUTH_CLIENT_ID )
123- .build ())
124- .onErrorResume (UaaException .class , e -> Mono .empty ())
125- .onErrorResume (UnknownCloudFoundryException .class , e -> Mono .empty ())
126- .then (uaaClients .create (CreateClientRequest .builder ()
127- .clientId (ACCEPTANCE_TEST_OAUTH_CLIENT_ID )
128- .clientSecret (ACCEPTANCE_TEST_OAUTH_CLIENT_SECRET )
129- .authorizedGrantType (GrantType .CLIENT_CREDENTIALS )
130- .authorities (ACCEPTANCE_TEST_OAUTH_CLIENT_AUTHORITIES )
131- .build ()))
132- .block ();
133-
127+ @ Qualifier ("clientCredentials" )
128+ @ ConditionalOnProperty ({
129+ CloudFoundryProperties .PROPERTY_PREFIX + ".client-id" ,
130+ CloudFoundryProperties .PROPERTY_PREFIX + ".client-secret"
131+ })
132+ ClientCredentialsGrantTokenProvider clientTokenProvider (CloudFoundryProperties properties ) {
134133 return ClientCredentialsGrantTokenProvider .builder ()
135- .clientId (ACCEPTANCE_TEST_OAUTH_CLIENT_ID )
136- .clientSecret (ACCEPTANCE_TEST_OAUTH_CLIENT_SECRET )
134+ .clientId (properties . getClientId () )
135+ .clientSecret (properties . getClientSecret () )
137136 .identityZoneSubdomain (properties .getIdentityZoneSubdomain ())
138137 .build ();
139138 }
140139
141- private UaaClient buildTempUaaClient (ConnectionContext connectionContext , CloudFoundryProperties properties ) {
142- return ReactorUaaClient .builder ()
143- .connectionContext (connectionContext )
144- .tokenProvider (ClientCredentialsGrantTokenProvider .builder ()
145- .clientId (properties .getClientId ())
146- .clientSecret (properties .getClientSecret ())
147- .identityZoneSubdomain (properties .getIdentityZoneSubdomain ())
148- .build ())
149- .build ();
150- }
151-
152140}
0 commit comments