51
51
import java .util .HashMap ;
52
52
import java .util .List ;
53
53
import java .util .Map ;
54
- import java .util .concurrent .atomic . AtomicReference ;
54
+ import java .util .concurrent .ConcurrentHashMap ;
55
55
import java .util .concurrent .CountDownLatch ;
56
56
57
57
public class RNAppAuthModule extends ReactContextBaseJavaModule implements ActivityEventListener {
@@ -67,7 +67,7 @@ public class RNAppAuthModule extends ReactContextBaseJavaModule implements Activ
67
67
private Map <String , String > tokenRequestHeaders = null ;
68
68
private Map <String , String > additionalParametersMap ;
69
69
private String clientSecret ;
70
- private final AtomicReference < AuthorizationServiceConfiguration > mServiceConfiguration = new AtomicReference <>();
70
+ private final ConcurrentHashMap < String , AuthorizationServiceConfiguration > mServiceConfigurations = new ConcurrentHashMap <>();
71
71
private boolean isPrefetched = false ;
72
72
73
73
public RNAppAuthModule (ReactApplicationContext reactContext ) {
@@ -97,15 +97,15 @@ public void prefetchConfiguration(
97
97
final CountDownLatch fetchConfigurationLatch = new CountDownLatch (1 );
98
98
99
99
if (!isPrefetched ) {
100
- if (serviceConfiguration != null && mServiceConfiguration . get () == null ) {
100
+ if (serviceConfiguration != null && ! mServiceConfigurations . containsKey ( issuer ) ) {
101
101
try {
102
- mServiceConfiguration . set ( createAuthorizationServiceConfiguration (serviceConfiguration ));
102
+ mServiceConfigurations . put ( issuer , createAuthorizationServiceConfiguration (serviceConfiguration ));
103
103
isPrefetched = true ;
104
104
fetchConfigurationLatch .countDown ();
105
105
} catch (Exception e ) {
106
106
promise .reject ("configuration_error" , "Failed to convert serviceConfiguration" , e );
107
107
}
108
- } else if (mServiceConfiguration . get () == null ) {
108
+ } else if (! mServiceConfigurations . containsKey ( issuer ) ) {
109
109
final Uri issuerUri = Uri .parse (issuer );
110
110
AuthorizationServiceConfiguration .fetchFromUrl (
111
111
buildConfigurationUriFromIssuer (issuerUri ),
@@ -117,7 +117,7 @@ public void onFetchConfigurationCompleted(
117
117
promise .reject ("service_configuration_fetch_error" , "Failed to fetch configuration" , ex );
118
118
return ;
119
119
}
120
- mServiceConfiguration . set ( fetchedConfiguration );
120
+ mServiceConfigurations . put ( issuer , fetchedConfiguration );
121
121
isPrefetched = true ;
122
122
fetchConfigurationLatch .countDown ();
123
123
}
@@ -157,9 +157,9 @@ public void register(
157
157
final HashMap <String , String > additionalParametersMap = MapUtil .readableMapToHashMap (additionalParameters );
158
158
159
159
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
160
- if (serviceConfiguration != null || mServiceConfiguration . get () != null ) {
160
+ if (serviceConfiguration != null || mServiceConfigurations . containsKey ( issuer ) ) {
161
161
try {
162
- final AuthorizationServiceConfiguration serviceConfig = mServiceConfiguration . get () != null ? mServiceConfiguration .get () : createAuthorizationServiceConfiguration (serviceConfiguration );
162
+ final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations . containsKey ( issuer )? mServiceConfigurations .get (issuer ) : createAuthorizationServiceConfiguration (serviceConfiguration );
163
163
registerWithConfiguration (
164
164
serviceConfig ,
165
165
appAuthConfiguration ,
@@ -187,7 +187,7 @@ public void onFetchConfigurationCompleted(
187
187
return ;
188
188
}
189
189
190
- mServiceConfiguration . set ( fetchedConfiguration );
190
+ mServiceConfigurations . put ( issuer , fetchedConfiguration );
191
191
192
192
registerWithConfiguration (
193
193
fetchedConfiguration ,
@@ -234,9 +234,9 @@ public void authorize(
234
234
this .clientAuthMethod = clientAuthMethod ;
235
235
236
236
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
237
- if (serviceConfiguration != null || mServiceConfiguration . get () != null ) {
237
+ if (serviceConfiguration != null || mServiceConfigurations . containsKey ( issuer ) ) {
238
238
try {
239
- final AuthorizationServiceConfiguration serviceConfig = mServiceConfiguration . get () != null ? mServiceConfiguration .get () : createAuthorizationServiceConfiguration (serviceConfiguration );
239
+ final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations . containsKey ( issuer )? mServiceConfigurations .get (issuer ) : createAuthorizationServiceConfiguration (serviceConfiguration );
240
240
authorizeWithConfiguration (
241
241
serviceConfig ,
242
242
appAuthConfiguration ,
@@ -264,7 +264,7 @@ public void onFetchConfigurationCompleted(
264
264
return ;
265
265
}
266
266
267
- mServiceConfiguration . set ( fetchedConfiguration );
267
+ mServiceConfigurations . put ( issuer , fetchedConfiguration );
268
268
269
269
authorizeWithConfiguration (
270
270
fetchedConfiguration ,
@@ -315,9 +315,9 @@ public void refresh(
315
315
this .additionalParametersMap = additionalParametersMap ;
316
316
317
317
// when serviceConfiguration is provided, we don't need to hit up the OpenID well-known id endpoint
318
- if (serviceConfiguration != null || mServiceConfiguration . get () != null ) {
318
+ if (serviceConfiguration != null || mServiceConfigurations . containsKey ( issuer ) ) {
319
319
try {
320
- final AuthorizationServiceConfiguration serviceConfig = mServiceConfiguration . get () != null ? mServiceConfiguration .get () : createAuthorizationServiceConfiguration (serviceConfiguration );
320
+ final AuthorizationServiceConfiguration serviceConfig = mServiceConfigurations . containsKey ( issuer ) ? mServiceConfigurations .get (issuer ) : createAuthorizationServiceConfiguration (serviceConfiguration );
321
321
refreshWithConfiguration (
322
322
serviceConfig ,
323
323
appAuthConfiguration ,
@@ -348,7 +348,7 @@ public void onFetchConfigurationCompleted(
348
348
return ;
349
349
}
350
350
351
- mServiceConfiguration . set ( fetchedConfiguration );
351
+ mServiceConfigurations . put ( issuer , fetchedConfiguration );
352
352
353
353
refreshWithConfiguration (
354
354
fetchedConfiguration ,
0 commit comments