diff --git a/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/OneginiConfig.kt b/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/OneginiConfig.kt deleted file mode 100644 index 663474f6..00000000 --- a/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/OneginiConfig.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.onegini.mobile.onegini_example - -import android.os.Build -import com.onegini.mobile.sdk.android.model.OneginiClientConfigModel - - -class OneginiConfigModel : OneginiClientConfigModel { - - private val appIdentifier = "FlutterExampleApp" - private val appPlatform = "android" - private val redirectionUri = "oneginiexample://loginsuccess" - private val appVersion = "1.0.2" - private val baseURL = "https://token-mobile.test.onegini.com" - private val resourceBaseURL = "https://token-mobile.test.onegini.com/resources/" - private val keystoreHash = "ebbcab87e2d16b9441559767a7c85fbaea9a3feef94451990423019a31e5bf1f" - override fun getAppIdentifier(): String { - return appIdentifier - } - - override fun getAppPlatform(): String { - return appPlatform - } - - override fun getRedirectUri(): String { - return redirectionUri - } - - override fun getAppVersion(): String { - return appVersion - } - - override fun getBaseUrl(): String { - return baseURL - } - - override fun getResourceBaseUrl(): String { - return resourceBaseURL - } - - override fun getCertificatePinningKeyStore(): Int { - return R.raw.keystore - } - - override fun getKeyStoreHash(): String { - return keystoreHash - } - - override fun getDeviceName(): String { - return Build.BRAND + " " + Build.MODEL - } - - override fun getServerPublicKey(): String? { - return null - } -} \ No newline at end of file diff --git a/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/OneginiConfigModel.java b/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/OneginiConfigModel.java new file mode 100755 index 00000000..deef60a0 --- /dev/null +++ b/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/OneginiConfigModel.java @@ -0,0 +1,93 @@ +package com.onegini.mobile.onegini_example; + +import android.os.Build; +import com.onegini.mobile.onegini_example.R; +import com.onegini.mobile.sdk.android.model.OneginiClientConfigModel; + +public class OneginiConfigModel implements OneginiClientConfigModel { + + /* Config model generated by SDK Configurator version: v5.1.0 */ + + private final String appIdentifier = "FlutterExampleApp"; + private final String appPlatform = "android"; + private final String redirectionUri = "oneginiexample://loginsuccess"; + private final String appVersion = "1.0.2"; + private final String baseURL = "https://mobile-security-proxy.test.onegini.com"; + private final String resourceBaseURL = "https://mobile-security-proxy.test.onegini.com/resources/"; + private final String keystoreHash = "90cf65bea23977e84dcddfb38b8cecb5469d8ca43aa6b01575864ef2ca6eaa48"; + private final int maxPinFailures = 3; + private final String serverPublicKey = "17DDB4086A1D3FA37950CBDDC6F1173A0C5902A3B71DAD261290CEFEE13CC9CA"; + + public String getAppIdentifier() { + return appIdentifier; + } + + public String getAppPlatform() { + return appPlatform; + } + + public String getRedirectUri() { + return redirectionUri; + } + + public String getAppVersion() { + return appVersion; + } + + public String getBaseUrl() { + return baseURL; + } + + public String getResourceBaseUrl() { + return resourceBaseURL; + } + + public int getCertificatePinningKeyStore() { + return R.raw.keystore; + } + + public String getKeyStoreHash() { + return keystoreHash; + } + + public String getDeviceName() { + return Build.BRAND + " " + Build.MODEL; + } + + public String getServerPublicKey() { + return serverPublicKey; + } + + /** + * @Deprecated Since Android SDK 8.0.0 this attribute is not required. + */ + public boolean shouldGetIdToken() { + return false; + } + + /** + * Get the max PIN failures. This attribute is just used for visual representation towards the end-user. + * + * @Deprecated Since Android SDK 6.01.00 this attribute is fetched from the Device config. + * + * @return The max PIN failures + */ + public int getMaxPinFailures() { + return maxPinFailures; + } + + @Override + public String toString() { + return "ConfigModel{" + + " appIdentifier='" + appIdentifier + "'" + + ", appPlatform='" + appPlatform + "'" + + ", redirectionUri='" + redirectionUri + "'" + + ", appVersion='" + appVersion + "'" + + ", baseURL='" + baseURL + "'" + + ", maxPinFailures='" + maxPinFailures + "'" + + ", resourceBaseURL='" + resourceBaseURL + "'" + + ", keyStoreHash='" + getKeyStoreHash() + "'" + + ", serverPublicKey='" + serverPublicKey + "'" + + "}"; + } +} diff --git a/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/SecurityController.java b/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/SecurityController.java new file mode 100755 index 00000000..f937a8ae --- /dev/null +++ b/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/SecurityController.java @@ -0,0 +1,8 @@ +package com.onegini.mobile.onegini_example; + +@SuppressWarnings({ "unused", "WeakerAccess" }) +public final class SecurityController { + public static final boolean rootDetection = false; + public static final boolean debugDetection = false; + public static final boolean debugLogs = true; +} diff --git a/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/SecurityController.kt b/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/SecurityController.kt deleted file mode 100644 index 9169d324..00000000 --- a/example/android/app/src/main/kotlin/com/onegini/mobile/onegini_example/SecurityController.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.onegini.mobile.onegini_example - -object SecurityController { - const val debugDetection = false - const val rootDetection = false - const val debugLogs = true -} diff --git a/example/android/app/src/main/res/raw/keystore.bks b/example/android/app/src/main/res/raw/keystore.bks index bfcdf1b1..9abf5941 100644 Binary files a/example/android/app/src/main/res/raw/keystore.bks and b/example/android/app/src/main/res/raw/keystore.bks differ diff --git a/example/android/build.gradle b/example/android/build.gradle index b8f7cd2c..302ffed1 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,62 +1,62 @@ -buildscript { - ext.kotlin_version = '1.8.0' - repositories { - mavenCentral() - google() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.2.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - def (artifactoryUser, artifactoryPassword) = getArtifactoryCredentials() - if (artifactoryUser?.trim() && artifactoryPassword?.trim()) { - maven { - url "https://repo.onewelcome.com/artifactory/onegini-sdk" - credentials { - username artifactoryUser.trim() - password artifactoryPassword.trim() - } - } - } else { - throw new InvalidUserDataException("You must configure the 'ARTIFACTORY_USER' and 'ARTIFACTORY_PASSWORD' environment variables before you can " + - "build the project.") - } - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} - -def getArtifactoryCredentials() { - // Leave onegini_ property for backwards compatibility - if (project.hasProperty('onegini_artifactory_user') && project.hasProperty('onegini_artifactory_password')) { - return [onegini_artifactory_user, onegini_artifactory_password] - } else if (project.hasProperty('artifactory_user') && project.hasProperty('artifactory_password')) { - return [artifactory_user, artifactory_password] - } else if (System.env.ARTIFACTORY_USER && System.env.ARTIFACTORY_PASSWORD) { - return [System.env.ARTIFACTORY_USER, System.env.ARTIFACTORY_PASSWORD] - } else { - def artifactoryFile = file("${project.rootDir}/artifactory.properties") - if (artifactoryFile.exists()) { - def props = new Properties() - artifactoryFile.withInputStream { props.load(it) } - return [props.getProperty("artifactoryUser"), props.getProperty("artifactoryPassword")] - } - } - return ["", ""] -} +buildscript { + ext.kotlin_version = '1.8.0' + repositories { + mavenCentral() + google() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.2.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + def (artifactoryUser, artifactoryPassword) = getArtifactoryCredentials() + if (artifactoryUser?.trim() && artifactoryPassword?.trim()) { + maven { + url "https://repo.onewelcome.com/artifactory/onegini-sdk" + credentials { + username artifactoryUser.trim() + password artifactoryPassword.trim() + } + } + } else { + throw new InvalidUserDataException("You must configure the 'ARTIFACTORY_USER' and 'ARTIFACTORY_PASSWORD' environment variables before you can " + + "build the project.") + } + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.buildDir +} + +def getArtifactoryCredentials() { + // Leave onegini_ property for backwards compatibility + if (project.hasProperty('onegini_artifactory_user') && project.hasProperty('onegini_artifactory_password')) { + return [onegini_artifactory_user, onegini_artifactory_password] + } else if (project.hasProperty('artifactory_user') && project.hasProperty('artifactory_password')) { + return [artifactory_user, artifactory_password] + } else if (System.env.ARTIFACTORY_USER && System.env.ARTIFACTORY_PASSWORD) { + return [System.env.ARTIFACTORY_USER, System.env.ARTIFACTORY_PASSWORD] + } else { + def artifactoryFile = file("${project.rootDir}/artifactory.properties") + if (artifactoryFile.exists()) { + def props = new Properties() + artifactoryFile.withInputStream { props.load(it) } + return [props.getProperty("artifactoryUser"), props.getProperty("artifactoryPassword")] + } + } + return ["", ""] +} diff --git a/example/ios/Configuration/OneginiConfigModel.m b/example/ios/Configuration/OneginiConfigModel.m index 486e4e1c..4175b2ae 100755 --- a/example/ios/Configuration/OneginiConfigModel.m +++ b/example/ios/Configuration/OneginiConfigModel.m @@ -6,7 +6,7 @@ @implementation OneginiConfigModel + (NSArray *)certificates { - return @[@"MIIDzTCCArWgAwIBAgIQCjeHZF5ftIwiTv0b7RQMPDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTIwMDEyNzEyNDgwOFoXDTI0MTIzMTIzNTk1OVowSjELMAkGA1UEBhMCVVMxGTAXBgNVBAoTEENsb3VkZmxhcmUsIEluYy4xIDAeBgNVBAMTF0Nsb3VkZmxhcmUgSW5jIEVDQyBDQS0zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEua1NZpkUC0bsH4HRKlAenQMVLzQSfS2WuIg4m4Vfj7+7Te9hRsTJc9QkT+DuHM5ss1FxL2ruTAUJd9NyYqSb16OCAWgwggFkMB0GA1UdDgQWBBSlzjfq67B1DpRniLRF+tkkEIeWHzAfBgNVHSMEGDAWgBTlnVkwgkdYzKz6CFQ2hns6tQRN8DAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL09tbmlyb290MjAyNS5jcmwwbQYDVR0gBGYwZDA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1sAQIwCAYGZ4EMAQIBMAgGBmeBDAECAjAIBgZngQwBAgMwDQYJKoZIhvcNAQELBQADggEBAAUkHd0bsCrrmNaF4zlNXmtXnYJX/OvoMaJXkGUFvhZEOFp3ArnPEELG4ZKk40Un+ABHLGioVplTVI+tnkDB0A+21w0LOEhsUCxJkAZbZB2LzEgwLt4I4ptJIsCSDBFelpKU1fwg3FZs5ZKTv3ocwDfjhUkV+ivhdDkYD7fa86JXWGBPzI6UAPxGezQxPk1HgoE6y/SJXQ7vTQ1unBuCJN0yJV0ReFEQPaA1IwQvZW+cwdFD19Ae8zFnWSfda9J1CZMRJCQUzym+5iPDuI9yP+kHyCREU3qzuWFloUwOxkgAyXVjBYdwRVKD05WdRerw6DEdfgkfCv4+3ao8XnTSrLE=", @"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"]; //Base64Certificates + return @[@"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", @"MIIDzTCCArWgAwIBAgIQCjeHZF5ftIwiTv0b7RQMPDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJJRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTIwMDEyNzEyNDgwOFoXDTI0MTIzMTIzNTk1OVowSjELMAkGA1UEBhMCVVMxGTAXBgNVBAoTEENsb3VkZmxhcmUsIEluYy4xIDAeBgNVBAMTF0Nsb3VkZmxhcmUgSW5jIEVDQyBDQS0zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEua1NZpkUC0bsH4HRKlAenQMVLzQSfS2WuIg4m4Vfj7+7Te9hRsTJc9QkT+DuHM5ss1FxL2ruTAUJd9NyYqSb16OCAWgwggFkMB0GA1UdDgQWBBSlzjfq67B1DpRniLRF+tkkEIeWHzAfBgNVHSMEGDAWgBTlnVkwgkdYzKz6CFQ2hns6tQRN8DAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL09tbmlyb290MjAyNS5jcmwwbQYDVR0gBGYwZDA3BglghkgBhv1sAQEwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1sAQIwCAYGZ4EMAQIBMAgGBmeBDAECAjAIBgZngQwBAgMwDQYJKoZIhvcNAQELBQADggEBAAUkHd0bsCrrmNaF4zlNXmtXnYJX/OvoMaJXkGUFvhZEOFp3ArnPEELG4ZKk40Un+ABHLGioVplTVI+tnkDB0A+21w0LOEhsUCxJkAZbZB2LzEgwLt4I4ptJIsCSDBFelpKU1fwg3FZs5ZKTv3ocwDfjhUkV+ivhdDkYD7fa86JXWGBPzI6UAPxGezQxPk1HgoE6y/SJXQ7vTQ1unBuCJN0yJV0ReFEQPaA1IwQvZW+cwdFD19Ae8zFnWSfda9J1CZMRJCQUzym+5iPDuI9yP+kHyCREU3qzuWFloUwOxkgAyXVjBYdwRVKD05WdRerw6DEdfgkfCv4+3ao8XnTSrLE="]; //Base64Certificates } + (NSDictionary *)configuration @@ -14,16 +14,16 @@ + (NSDictionary *)configuration return @{ @"ONGAppIdentifier" : @"FlutterExampleApp", @"ONGAppPlatform" : @"ios", - @"ONGAppVersion" : @"1.0.3", - @"ONGAppBaseURL" : @"https://token-mobile.test.onegini.com", - @"ONGResourceBaseURL" : @"https://token-mobile.test.onegini.com/resources/", + @"ONGAppVersion" : @"1.0.0", + @"ONGAppBaseURL" : @"https://mobile-security-proxy.test.onegini.com", + @"ONGResourceBaseURL" : @"https://mobile-security-proxy.test.onegini.com/resources/", @"ONGRedirectURL" : @"oneginiexample://loginsuccess", }; } + (NSString *)serverPublicKey { - return @"4B8E698FEAA9F0A1E99644E77E1AB9EF5F63FBBFBA5EE52D881AADB2C0373336"; + return @"E23EDEC22396C17B204D9996295ED0045E5500B3281F0D00F242D71B5A4F3EC9"; } @end \ No newline at end of file diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 6b9ecbf2..e8b5841d 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -423,6 +423,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/example/lib/screens/login_screen.dart b/example/lib/screens/login_screen.dart index cbe4729c..4fd74a61 100644 --- a/example/lib/screens/login_screen.dart +++ b/example/lib/screens/login_screen.dart @@ -48,7 +48,7 @@ class _LoginScreenState extends State { openWeb() async { /// Start registration - setState(() => {isLoading = true}); + setState(() => isLoading = true); try { var registrationResponse = await Onegini.instance.userClient.registerUser( @@ -72,7 +72,7 @@ class _LoginScreenState extends State { } registrationWithIdentityProvider(String identityProviderId) async { - setState(() => {isLoading = true}); + setState(() => isLoading = true); try { var registrationResponse = await Onegini.instance.userClient.registerUser( identityProviderId, @@ -253,9 +253,8 @@ class _LoginScreenState extends State { .map((e) => DropdownMenuItem(value: e.profileId, child: Text(e.profileId))) .toList(), - onChanged: (profileId) => { - setState(() => {selectedProfileId = profileId}) - }); + onChanged: (profileId) => + {setState(() => selectedProfileId = profileId)}); } Column _buildRegisterWidget() { diff --git a/example/lib/screens/pin_screen.dart b/example/lib/screens/pin_screen.dart index 26aa471e..9166ef20 100644 --- a/example/lib/screens/pin_screen.dart +++ b/example/lib/screens/pin_screen.dart @@ -59,7 +59,7 @@ class _PinScreenState extends State { } submit() { - setState(() => {isLoading = true}); + setState(() => isLoading = true); String pin = ""; pinCode.forEach((element) { pin += element; @@ -68,7 +68,7 @@ class _PinScreenState extends State { .acceptAuthenticationRequest(pin) .catchError((error) { if (error is PlatformException) { - setState(() => {isLoading = false}); + setState(() => isLoading = false); showFlutterToast(error.message); } }); diff --git a/lib/onegini.dart b/lib/onegini.dart index 27dfc597..dc284442 100644 --- a/lib/onegini.dart +++ b/lib/onegini.dart @@ -11,7 +11,7 @@ import 'package:onegini/onegini.gen.dart'; class Onegini { // UserClientApi is the flutter to native api created by the Pigeon package, see /pigeons/README.md /// User client methods. - final UserClientApi api = UserClientApi(); + final UserClientApi _api = UserClientApi(); late final UserClient userClient; @@ -24,7 +24,7 @@ class Onegini { Finalizer((owEventStreamController) => owEventStreamController.close()); Onegini._internal() { - userClient = UserClient(api); + userClient = UserClient(_api); } static final Onegini instance = Onegini._internal(); @@ -51,7 +51,7 @@ class Onegini { List? additionalResourceUrls, }) async { NativeCallFlutterApi.setup(OneginiEventListener(owEventStreamController)); - await api.startApplication( + await _api.startApplication( securityControllerClassName, configModelClassName, customIdentityProviderConfigs, diff --git a/pubspec.yaml b/pubspec.yaml index 79ec54e5..c76a20f3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,7 +4,7 @@ version: 3.0.0 homepage: https://www.onegini.com environment: - sdk: ">=2.12.0 <4.0.0" + sdk: ">=2.17.0 <4.0.0" flutter: ">=1.12.0" dependencies: