1818import com .facebook .react .bridge .ReadableMapKeySetIterator ;
1919import com .facebook .react .bridge .WritableMap ;
2020
21+ import net .openid .appauth .AppAuthConfiguration ;
2122import net .openid .appauth .AuthorizationException ;
2223import net .openid .appauth .AuthorizationRequest ;
2324import net .openid .appauth .AuthorizationResponse ;
@@ -45,6 +46,7 @@ public class RNAppAuthModule extends ReactContextBaseJavaModule implements Activ
4546
4647 private final ReactApplicationContext reactContext ;
4748 private Promise promise ;
49+ private Boolean dangerouslyAllowInsecureHttpRequests ;
4850
4951 public RNAppAuthModule (ReactApplicationContext reactContext ) {
5052 super (reactContext );
@@ -109,7 +111,7 @@ private HashMap<String, String> additionalParametersToMap(ReadableMap additional
109111 private ConnectionBuilder createConnectionBuilder (Boolean allowInsecureConnections ) {
110112
111113 if (allowInsecureConnections .equals (true )) {
112- return new UnsafeConnectionBuilder () ;
114+ return ConnectionBuilderForTesting . INSTANCE ;
113115 }
114116
115117 return DefaultConnectionBuilder .INSTANCE ;
@@ -135,6 +137,7 @@ public void authorize(
135137
136138 final Context context = this .reactContext ;
137139 this .promise = promise ;
140+ this .dangerouslyAllowInsecureHttpRequests = dangerouslyAllowInsecureHttpRequests ;
138141 final Activity currentActivity = getCurrentActivity ();
139142
140143 final String scopesString = this .arrayToString (scopes );
@@ -152,6 +155,7 @@ public void onFetchConfigurationCompleted(
152155 return ;
153156 }
154157
158+
155159 AuthorizationRequest .Builder authRequestBuilder =
156160 new AuthorizationRequest .Builder (
157161 serviceConfiguration ,
@@ -165,9 +169,14 @@ public void onFetchConfigurationCompleted(
165169 authRequestBuilder .setAdditionalParameters (additionalParametersToMap (additionalParameters ));
166170 }
167171
168- AuthorizationRequest authRequest = authRequestBuilder .build ();
172+ AppAuthConfiguration configuration =
173+ new AppAuthConfiguration
174+ .Builder ()
175+ .setConnectionBuilder (builder )
176+ .build ();
169177
170- AuthorizationService authService = new AuthorizationService (context );
178+ AuthorizationRequest authRequest = authRequestBuilder .build ();
179+ AuthorizationService authService = new AuthorizationService (context , configuration );
171180 Intent authIntent = authService .getAuthorizationRequestIntent (authRequest );
172181 currentActivity .startActivityForResult (authIntent , 0 );
173182
@@ -194,6 +203,8 @@ public void refresh(
194203 final Uri issuerUri = Uri .parse (issuer );
195204 final ConnectionBuilder builder = createConnectionBuilder (dangerouslyAllowInsecureHttpRequests );
196205
206+ this .dangerouslyAllowInsecureHttpRequests = dangerouslyAllowInsecureHttpRequests ;
207+
197208 AuthorizationServiceConfiguration .fetchFromUrl (
198209 buildConfigurationUriFromIssuer (issuerUri ),
199210 new AuthorizationServiceConfiguration .RetrieveConfigurationCallback () {
@@ -221,7 +232,12 @@ public void onFetchConfigurationCompleted(
221232 TokenRequest tokenRequest = tokenRequestBuilder .build ();
222233
223234
224- AuthorizationService authService = new AuthorizationService (context );
235+ final AppAuthConfiguration configuration =
236+ new AppAuthConfiguration
237+ .Builder ()
238+ .setConnectionBuilder (createConnectionBuilder (dangerouslyAllowInsecureHttpRequests ))
239+ .build ();
240+ AuthorizationService authService = new AuthorizationService (context , configuration );
225241
226242 authService .performTokenRequest (tokenRequest , new AuthorizationService .TokenResponseCallback () {
227243 @ Override
@@ -252,7 +268,13 @@ public void onActivityResult(Activity activity, int requestCode, int resultCode,
252268
253269 final Promise authorizePromise = this .promise ;
254270
255- AuthorizationService authService = new AuthorizationService (this .reactContext );
271+ final AppAuthConfiguration configuration =
272+ new AppAuthConfiguration
273+ .Builder ()
274+ .setConnectionBuilder (createConnectionBuilder (this .dangerouslyAllowInsecureHttpRequests ))
275+ .build ();
276+
277+ AuthorizationService authService = new AuthorizationService (this .reactContext , configuration );
256278
257279 authService .performTokenRequest (
258280 response .createTokenExchangeRequest (),
@@ -282,23 +304,4 @@ public void onNewIntent(Intent intent) {
282304 public String getName () {
283305 return "RNAppAuth" ;
284306 }
285- }
286-
287-
288- final class UnsafeConnectionBuilder implements ConnectionBuilder {
289-
290- private static final int CONNECTION_TIMEOUT_MS = (int ) TimeUnit .SECONDS .toMillis (15 );
291- private static final int READ_TIMEOUT_MS = (int ) TimeUnit .SECONDS .toMillis (10 );
292-
293-
294- @ NonNull
295- @ Override
296- public HttpURLConnection openConnection (@ NonNull Uri uri ) throws IOException {
297- Preconditions .checkNotNull (uri , "url must not be null" );
298- HttpURLConnection conn = (HttpURLConnection ) new URL (uri .toString ()).openConnection ();
299- conn .setConnectTimeout (CONNECTION_TIMEOUT_MS );
300- conn .setReadTimeout (READ_TIMEOUT_MS );
301- conn .setInstanceFollowRedirects (false );
302- return conn ;
303- }
304307}
0 commit comments