diff --git a/android/src/main/java/com/oktareactnative/OktaSdkBridgeModule.java b/android/src/main/java/com/oktareactnative/OktaSdkBridgeModule.java index f02c97aa..e089326d 100644 --- a/android/src/main/java/com/oktareactnative/OktaSdkBridgeModule.java +++ b/android/src/main/java/com/oktareactnative/OktaSdkBridgeModule.java @@ -58,6 +58,7 @@ import java.io.PrintWriter; import java.io.StringWriter; +import java.util.Optional; public class OktaSdkBridgeModule extends ReactContextBaseJavaModule implements ActivityEventListener { @@ -101,7 +102,8 @@ public void createConfig(String clientId, ReadableMap timeouts, Boolean browserMatchAll, Callback successCallback, - Callback errorCallback + Callback errorCallback, + Optional issuer ) { try { @@ -119,7 +121,7 @@ public void createConfig(String clientId, .redirectUri(redirectUri) .endSessionRedirectUri(endSessionRedirectUri) .scopes(scopeArray) - .discoveryUri(discoveryUri) + .discoveryUri((issuer.isPresent()) ? issuer.get() : discoveryUri) .create(); Okta.WebAuthBuilder webAuthBuilder = new Okta.WebAuthBuilder(); diff --git a/index.js b/index.js index ca2dc33e..6b9d966e 100644 --- a/index.js +++ b/index.js @@ -124,12 +124,18 @@ export function createConfigWithCallbacks( onSuccess, onError ) { - assertIssuer(discoveryUri); assertClientId(clientId); assertRedirectUri(redirectUri); assertRedirectUri(endSessionRedirectUri); + if (issuer) { + assertIssuer(issuer); + } + const { origin } = new Url(discoveryUri); + if (!issuer && discoveryUri) { + assertIssuer(origin); + } oktaAuthConfig = { ...oktaAuthConfig, @@ -168,7 +174,8 @@ export function createConfigWithCallbacks( userAgentTemplate, httpConnectionTimeout, onSuccess, - onError + onError, + issuer ); } else { @@ -189,7 +196,8 @@ export function createConfigWithCallbacks( timeouts, browserMatchAll, onSuccess, - onError + onError, + issuer ); } } diff --git a/ios/OktaSdkBridge/OktaSdkBridge.swift b/ios/OktaSdkBridge/OktaSdkBridge.swift index 909aa8b2..b0491c64 100644 --- a/ios/OktaSdkBridge/OktaSdkBridge.swift +++ b/ios/OktaSdkBridge/OktaSdkBridge.swift @@ -88,13 +88,14 @@ class OktaSdkBridge: RCTEventEmitter { userAgentTemplate: String, requestTimeout: Int, successCallback: RCTResponseSenderBlock, - errorCallback: RCTResponseSenderBlock) { + errorCallback: RCTResponseSenderBlock, + issuer: String?) { do { let uaVersion = OktaUserAgent.userAgentVersion() let userAgent = userAgentTemplate.replacingOccurrences(of: "$UPSTREAM_SDK", with: "okta-oidc-ios/\(uaVersion)") OktaOidcConfig.setUserAgent(value: userAgent) let config = try OktaOidcConfig(with: [ - "issuer": discoveryUri, + "issuer": issuer ?? discoveryUri, "clientId": clientId, "redirectUri": redirectUrl, "logoutRedirectUri": endSessionRedirectUri,