From 1b6c4c1fd7f00282b4ac335aec54d0df4d2d9de3 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 17:58:24 +0300 Subject: [PATCH 01/23] Add OidcClient identity stack + native iOS/Android bindings Replaces the in-app-WebView Oauth2 flow (now rejected by Google, Apple, Microsoft and Facebook) with a modern OpenID Connect client driven from the system browser: * New com.codename1.io.oidc package: OidcClient (discover/authorize/ refresh/revoke), PkceChallenge (S256), OidcConfiguration, OidcTokens with ID-token claim decoding, OidcException with typed errors, pluggable TokenStore, and a SystemBrowser facade that dispatches to a per-port NativeInterface (OidcBrowserNative). * AppleSignIn moved from the external cn1-applesignin cn1lib into core, with a native ASAuthorizationAppleIDProvider impl on iOS 13+ and an OidcClient-backed web fallback on every other platform. * GoogleConnect.signIn / FacebookConnect.signIn switched to the new stack; legacy doLogin paths kept for source compat. * MicrosoftConnect (Entra ID, any tenant), Auth0Connect and FirebaseAuth (REST: email/password, IdP token exchange, refresh) added. * Oauth2 is @Deprecated with a migration recipe pointing at OidcClient. Native bindings: * Ports/iOSPort/nativeSources adds ASWebAuthenticationSession and ASAuthorizationAppleIDProvider impls behind the OidcBrowserNative / AppleSignInNative interfaces. The Maven plugin's IPhoneBuilder auto-links AuthenticationServices.framework and auto-injects the com.apple.developer.applesignin entitlement when the scanner sees the classes in use. * Ports/Android/src adds an androidx.browser.customtabs-backed OidcBrowserNativeImpl (with ACTION_VIEW fallback) and a non-supporting AppleSignInNativeImpl so AppleSignIn falls through to its web flow. AndroidGradleBuilder auto-injects androidx.browser:browser:1.8.0 when the OIDC classes are referenced; override via android.customTabsVersion. Docs and demo: * New "Authentication and Identity" chapter in the developer guide with per-provider recipes, migration guidance from Oauth2, and the build- hint plumbing for the redirect URI scheme on iOS and Android. * Samples/samples/UniversalSignInDemo: a one-screen app with one button per provider plus a generic OIDC issuer, designed to be copy-pasteable. Tests + CI: * 11 new OidcCoreTest assertions (PKCE generation, claim decoding, discovery JSON parsing, exception propagation, default token-store round-trip). The 16 existing Oauth2/Login/*Connect tests still pass. * New .github/workflows/identity-stack.yml: path-filtered PR check that runs the unit tests, compiles the Maven plugin (verifies scanner edits), packages the Android port (verifies new Java sources bundle), javac-compiles the demo against built core, greps the demo for real-looking credentials, and clang -fsyntax-only on the iOS native sources from a macOS runner. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/identity-stack.yml | 235 +++++++ CodenameOne/src/com/codename1/io/Oauth2.java | 21 +- .../codename1/io/oidc/OidcBrowserNative.java | 62 ++ .../src/com/codename1/io/oidc/OidcClient.java | 655 ++++++++++++++++++ .../codename1/io/oidc/OidcConfiguration.java | 175 +++++ .../com/codename1/io/oidc/OidcException.java | 91 +++ .../src/com/codename1/io/oidc/OidcTokens.java | 239 +++++++ .../com/codename1/io/oidc/PkceChallenge.java | 104 +++ .../com/codename1/io/oidc/SystemBrowser.java | 208 ++++++ .../src/com/codename1/io/oidc/TokenStore.java | 209 ++++++ .../src/com/codename1/social/AppleSignIn.java | 414 +++++++++++ .../codename1/social/AppleSignInCallback.java | 43 ++ .../codename1/social/AppleSignInNative.java | 66 ++ .../codename1/social/AppleSignInResult.java | 78 +++ .../com/codename1/social/Auth0Connect.java | 142 ++++ .../com/codename1/social/FacebookConnect.java | 62 ++ .../com/codename1/social/FirebaseAuth.java | 369 ++++++++++ .../com/codename1/social/GoogleConnect.java | 93 ++- .../codename1/social/MicrosoftConnect.java | 136 ++++ .../io/oidc/OidcBrowserNativeImpl.java | 196 ++++++ .../social/AppleSignInNativeImpl.java | 62 ++ ..._codename1_io_oidc_OidcBrowserNativeImpl.h | 32 + ..._codename1_io_oidc_OidcBrowserNativeImpl.m | 165 +++++ ...m_codename1_social_AppleSignInNativeImpl.h | 34 + ...m_codename1_social_AppleSignInNativeImpl.m | 231 ++++++ Samples/samples/UniversalSignInDemo/README.md | 49 ++ .../UniversalSignInDemo.java | 315 +++++++++ .../Authentication-And-Identity.asciidoc | 360 ++++++++++ .../Miscellaneous-Features.asciidoc | 6 + docs/developer-guide/developer-guide.asciidoc | 2 + .../builders/AndroidGradleBuilder.java | 21 + .../com/codename1/builders/IPhoneBuilder.java | 43 ++ .../com/codename1/io/oidc/OidcCoreTest.java | 187 +++++ 33 files changed, 5094 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/identity-stack.yml create mode 100644 CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/OidcClient.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/OidcConfiguration.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/OidcException.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/OidcTokens.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java create mode 100644 CodenameOne/src/com/codename1/io/oidc/TokenStore.java create mode 100644 CodenameOne/src/com/codename1/social/AppleSignIn.java create mode 100644 CodenameOne/src/com/codename1/social/AppleSignInCallback.java create mode 100644 CodenameOne/src/com/codename1/social/AppleSignInNative.java create mode 100644 CodenameOne/src/com/codename1/social/AppleSignInResult.java create mode 100644 CodenameOne/src/com/codename1/social/Auth0Connect.java create mode 100644 CodenameOne/src/com/codename1/social/FirebaseAuth.java create mode 100644 CodenameOne/src/com/codename1/social/MicrosoftConnect.java create mode 100644 Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java create mode 100644 Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java create mode 100644 Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h create mode 100644 Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m create mode 100644 Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h create mode 100644 Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m create mode 100644 Samples/samples/UniversalSignInDemo/README.md create mode 100644 Samples/samples/UniversalSignInDemo/UniversalSignInDemo.java create mode 100644 docs/developer-guide/Authentication-And-Identity.asciidoc create mode 100644 maven/core-unittests/src/test/java/com/codename1/io/oidc/OidcCoreTest.java diff --git a/.github/workflows/identity-stack.yml b/.github/workflows/identity-stack.yml new file mode 100644 index 0000000000..f3461a6d53 --- /dev/null +++ b/.github/workflows/identity-stack.yml @@ -0,0 +1,235 @@ +name: Identity stack + +# Focused, fast PR check for the OidcClient / SystemBrowser / AppleSignIn / +# *Connect identity stack. Triggers only when files in the identity surface +# change, so it pages reviewers within a couple of minutes instead of waiting +# for the full PR matrix. +# +# Coverage: +# - linux-tests : compiles core, runs OidcCoreTest + the existing +# Oauth2/Login/*Connect unit tests, builds the Maven +# plugin (so IPhoneBuilder + AndroidGradleBuilder scanner +# changes can't bit-rot), packages the Android port +# (verifies new Java native impls bundle correctly), and +# javac-compiles the UniversalSignInDemo sample against +# the freshly built core jar to catch API drift. +# - sample-secrets : trivial grep scan that fails if real-looking credentials +# appear in the demo sample. +# - macos-clang : runs `clang -fsyntax-only` on both new iOS native +# sources under the host Xcode SDK -- catches Obj-C +# typos and API misuse before the change ever reaches +# the build cloud. + +on: + workflow_dispatch: {} + pull_request: + branches: [ master ] + paths: + - 'CodenameOne/src/com/codename1/io/oidc/**' + - 'CodenameOne/src/com/codename1/io/Oauth2.java' + - 'CodenameOne/src/com/codename1/io/AccessToken.java' + - 'CodenameOne/src/com/codename1/social/**' + - 'Ports/iOSPort/nativeSources/com_codename1_io_oidc_*' + - 'Ports/iOSPort/nativeSources/com_codename1_social_AppleSignIn*' + - 'Ports/Android/src/com/codename1/io/oidc/**' + - 'Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java' + - 'maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java' + - 'maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java' + - 'maven/core-unittests/src/test/java/com/codename1/io/oidc/**' + - 'maven/core-unittests/src/test/java/com/codename1/io/Oauth2*' + - 'maven/core-unittests/src/test/java/com/codename1/social/**' + - 'Samples/samples/UniversalSignInDemo/**' + - 'docs/developer-guide/Authentication-And-Identity.asciidoc' + - '.github/workflows/identity-stack.yml' + push: + branches: [ master ] + paths: + - 'CodenameOne/src/com/codename1/io/oidc/**' + - 'CodenameOne/src/com/codename1/io/Oauth2.java' + - 'CodenameOne/src/com/codename1/social/**' + - 'Ports/iOSPort/nativeSources/com_codename1_io_oidc_*' + - 'Ports/iOSPort/nativeSources/com_codename1_social_AppleSignIn*' + - 'Ports/Android/src/com/codename1/io/oidc/**' + - 'Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java' + - 'maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java' + - 'maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java' + - 'maven/core-unittests/src/test/java/com/codename1/io/oidc/**' + - 'Samples/samples/UniversalSignInDemo/**' + - '.github/workflows/identity-stack.yml' + +permissions: + contents: read + +concurrency: + group: identity-stack-${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true + +jobs: + linux-tests: + name: Core tests, plugin & Android compile, sample javac + runs-on: ubuntu-latest + # Same container the main PR workflow uses; it ships JDK 8/17/21 and + # cn1-binaries pre-staged at /opt/cn1-binaries. + container: ghcr.io/codenameone/codenameone/pr-ci-container:latest + timeout-minutes: 20 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v4 + + - name: Select JDK 8 + run: | + echo "JAVA_HOME=${JAVA_HOME_8}" >> "$GITHUB_ENV" + echo "${JAVA_HOME_8}/bin" >> "$GITHUB_PATH" + + - name: Cache Maven repository + uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-m2-identity-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-m2-identity- + ${{ runner.os }}-m2- + + - name: Stage cn1-binaries (required by maven-plugin tests) + run: | + set -euo pipefail + rm -rf maven/target/cn1-binaries + mkdir -p maven/target + cp -r /opt/cn1-binaries maven/target/cn1-binaries + + - name: Run identity-stack unit tests + working-directory: maven + run: | + set -euo pipefail + # Targeted run: OidcCoreTest is the new suite; the *Connect / Login / + # Oauth2 tests cover backward-compat for the changes in Login.java + # and friends. + mvn -B -Dmaven.javadoc.skip=true \ + -DunitTests=true \ + -Plocal-dev-javase \ + -P unittests \ + -pl core-unittests -am \ + test \ + -Dtest='OidcCoreTest,Oauth2Test,Oauth2RefreshTokenRequestTest,GoogleConnectTest,FacebookConnectTest,LoginTest,Login1Test,LoginExtrasTest' \ + -Dsurefire.failIfNoSpecifiedTests=false + + - name: Compile Maven plugin (verifies IPhoneBuilder + AndroidGradleBuilder scanner edits) + working-directory: maven + run: | + set -euo pipefail + # `-pl codenameone-maven-plugin compile` (no -am) requires the + # plugin's deps to be in the local repo; the unit-test step above + # already installed them via -am. + mvn -B -Dmaven.javadoc.skip=true \ + -pl codenameone-maven-plugin \ + -Plocal-dev-javase \ + compile + + - name: Package Android port (verifies new Java sources bundle correctly) + run: | + set -euo pipefail + (cd maven && mvn -B -Dmaven.javadoc.skip=true \ + -pl android -am \ + -Plocal-dev-javase \ + -DskipTests \ + package) + BUNDLE="maven/android/target/classes/com/codename1/android/android_port_sources.jar" + if [ ! -f "${BUNDLE}" ]; then + echo "::error::android_port_sources.jar not produced at ${BUNDLE}" + exit 1 + fi + for required in \ + com/codename1/io/oidc/OidcBrowserNativeImpl.java \ + com/codename1/social/AppleSignInNativeImpl.java; do + if ! unzip -l "${BUNDLE}" | grep -q "${required}"; then + echo "::error::${required} missing from android_port_sources.jar" + exit 1 + fi + done + + - name: Compile UniversalSignInDemo against built core + run: | + set -euo pipefail + CORE_CLASSES="maven/core/target/classes" + if [ ! -d "${CORE_CLASSES}" ]; then + echo "::error::core not built yet at ${CORE_CLASSES}" + exit 1 + fi + mkdir -p target/sample-check + # JDK 8 is fine for the sample -- it deliberately avoids Java 8+ + # syntax to match the broader Codename One source level. + "${JAVA_HOME}/bin/javac" \ + -source 1.8 -target 1.8 \ + -Xlint:-options \ + -cp "${CORE_CLASSES}" \ + -d target/sample-check \ + Samples/samples/UniversalSignInDemo/UniversalSignInDemo.java + test -f target/sample-check/com/codename1/samples/UniversalSignInDemo.class + + sample-secrets: + name: Scan demo sample for accidental credentials + runs-on: ubuntu-latest + timeout-minutes: 3 + steps: + - uses: actions/checkout@v4 + - name: Reject real-looking secrets in identity sources & demo + run: | + set -euo pipefail + # Patterns: JWTs, Firebase web API keys (AIza...), Google client IDs + # (numeric-prefixed apps.googleusercontent.com), hex blobs >=32 chars, + # private-key headers, GitHub PATs, AWS keys. + PATTERN='eyJ[A-Za-z0-9_-]{20,}|[0-9]{6,}\.apps\.googleusercontent\.com|AIza[0-9A-Za-z_-]{30,}|sk-[A-Za-z0-9]{20,}|[0-9a-f]{32,}|BEGIN (RSA|EC|PRIVATE) KEY|ghp_[A-Za-z0-9]{20,}|AKIA[0-9A-Z]{16}' + TARGETS=( + Samples/samples/UniversalSignInDemo + CodenameOne/src/com/codename1/io/oidc + CodenameOne/src/com/codename1/social/AppleSignIn.java + CodenameOne/src/com/codename1/social/AppleSignInCallback.java + CodenameOne/src/com/codename1/social/AppleSignInNative.java + CodenameOne/src/com/codename1/social/AppleSignInResult.java + CodenameOne/src/com/codename1/social/Auth0Connect.java + CodenameOne/src/com/codename1/social/FirebaseAuth.java + CodenameOne/src/com/codename1/social/MicrosoftConnect.java + ) + # `|| true` is intentional: grep -E exits 1 when there are zero + # matches, which is the success case. + HITS=$(grep -rEn "$PATTERN" "${TARGETS[@]}" 2>/dev/null || true) + if [ -n "$HITS" ]; then + echo "::error::Real-looking credentials found in identity-stack files:" + echo "$HITS" + exit 1 + fi + echo "No credential leaks detected." + + macos-clang: + name: Clang syntax check for iOS native sources + runs-on: macos-15 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + + - name: Show Xcode toolchain + run: | + xcodebuild -version + xcrun --show-sdk-path --sdk iphoneos + + - name: Clang -fsyntax-only on new iOS native impls + run: | + set -euo pipefail + cd Ports/iOSPort/nativeSources + SDK="$(xcrun --show-sdk-path --sdk iphoneos)" + if [ ! -d "$SDK" ]; then + echo "::error::No iPhoneOS SDK available on this runner" + exit 1 + fi + xcrun --sdk iphoneos clang \ + -fsyntax-only \ + -arch arm64 \ + -fobjc-arc \ + -Werror=incompatible-pointer-types \ + -Werror=objc-method-access \ + -Werror=unused-result \ + -I. \ + com_codename1_io_oidc_OidcBrowserNativeImpl.m \ + com_codename1_social_AppleSignInNativeImpl.m diff --git a/CodenameOne/src/com/codename1/io/Oauth2.java b/CodenameOne/src/com/codename1/io/Oauth2.java index e812e514ec..ba91d4895c 100644 --- a/CodenameOne/src/com/codename1/io/Oauth2.java +++ b/CodenameOne/src/com/codename1/io/Oauth2.java @@ -49,11 +49,26 @@ import java.util.Hashtable; import java.util.Map; -/// This is a utility class that allows Oauth2 authentication This utility uses -/// the Codename One XHTML Component to display the authentication pages. -/// http://tools.ietf.org/pdf/draft-ietf-oauth-v2-12.pdf +/// Legacy OAuth2 authentication helper. **Deprecated as of Codename One 8.0**; +/// new code should use [com.codename1.io.oidc.OidcClient] instead, which: +/// +/// - Drives sign-in via the system browser ([com.codename1.io.oidc.SystemBrowser]) +/// instead of an in-app WebView. Modern identity providers (Google, Apple, +/// Microsoft, Facebook) refuse to render their sign-in pages inside an +/// embedded WebView and will block this class. +/// - Performs PKCE on every authorization-code flow (mandatory now on most +/// providers). +/// - Parses the OpenID Connect discovery document so you do not have to +/// hard-code the authorization / token endpoints. +/// - Verifies the `state` and `nonce` parameters returned by the server. +/// +/// This class is preserved as-is for source compatibility but no new +/// functionality will be added. See the *Authentication and Identity* +/// chapter of the developer guide for a migration recipe. /// /// @author Chen Fishbein +/// @deprecated Use [com.codename1.io.oidc.OidcClient] for new code. +@Deprecated public class Oauth2 { public static final String TOKEN = "access_token"; private static String expires; diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java b/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java new file mode 100644 index 0000000000..ac74cd7a60 --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import com.codename1.system.NativeInterface; + +/// Native bridge into the platform's system-browser sign-in primitive +/// (`ASWebAuthenticationSession` on iOS, `androidx.browser.customtabs` / +/// `Credential Manager` on Android). Ports that implement this interface -- +/// or apps that ship a cn1lib doing so -- let [SystemBrowser] dispatch +/// authorization-code flows through the OS's hardened, cookie-isolated +/// sign-in sheet instead of the in-app fallback. +/// +/// `redirectScheme` is the scheme half of the registered redirect URI (e.g. +/// the `"com.example.app"` part of `"com.example.app:/oauth2redirect"`). The +/// native side completes by invoking the JavaScript-facing callback hosted by +/// [SystemBrowser]; see [#startAuthorization(String, String)]. +/// +/// @since 8.0 +public interface OidcBrowserNative extends NativeInterface { + + /// Starts the OS sign-in sheet for `authUrl` and resolves when the user + /// is redirected to a URL matching `redirectScheme`. The return value is + /// the full redirect URL (including query / fragment). + /// + /// Implementations are expected to be asynchronous; they should block the + /// calling thread and post the resolved URL back via a private + /// completion path. The fallback [SystemBrowser] implementation already + /// handles the cross-thread plumbing; native ports just need to deliver + /// the URL on the EDT. + /// + /// #### Parameters + /// + /// - `authUrl`: Full authorization-endpoint URL with `client_id`, + /// `redirect_uri`, `state`, `code_challenge`, etc. already encoded. + /// + /// - `redirectScheme`: The redirect URI scheme registered for the app. + /// On iOS the OS uses this to dismiss `ASWebAuthenticationSession` + /// automatically; on Android it informs the trusted-browser intent. + String startAuthorization(String authUrl, String redirectScheme); +} diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcClient.java b/CodenameOne/src/com/codename1/io/oidc/OidcClient.java new file mode 100644 index 0000000000..39b316f5c2 --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/OidcClient.java @@ -0,0 +1,655 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import com.codename1.io.ConnectionRequest; +import com.codename1.io.JSONParser; +import com.codename1.io.NetworkManager; +import com.codename1.io.Util; +import com.codename1.security.SecureRandom; +import com.codename1.util.AsyncResource; +import com.codename1.util.Base64; +import com.codename1.util.StringUtil; +import com.codename1.util.SuccessCallback; +import com.codename1.util.regex.StringReader; + +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/// Modern OpenID Connect / OAuth 2.0 client. Built around the +/// authorization-code flow with PKCE (RFC 7636) and the system browser. Use +/// it as the foundation for all new sign-in integrations: +/// +/// ```java +/// OidcClient.discover("https://accounts.google.com").ready(new SuccessCallback() { +/// public void onSucess(OidcClient client) { +/// client.setClientId("YOUR_CLIENT_ID") +/// .setRedirectUri("com.example.app:/oauth2redirect") +/// .setScopes("openid", "email", "profile"); +/// client.authorize().ready(new SuccessCallback() { +/// public void onSucess(OidcTokens tokens) { +/// // use tokens.getAccessToken() / tokens.getIdToken() +/// } +/// }); +/// } +/// }); +/// ``` +/// +/// ### What this gives you that [com.codename1.io.Oauth2] does not +/// +/// - Discovery via `.well-known/openid-configuration` so you only configure +/// the issuer URL, not five separate endpoints +/// - PKCE S256 on every flow (mandatory; many providers now require it) +/// - System-browser sign-in via [SystemBrowser] (the previous class used +/// an in-app WebView that modern IdPs reject) +/// - Refresh-token flow surfaced as a first-class method +/// - ID-token claim decoding via [OidcTokens#getClaim(String)] +/// - Pluggable [TokenStore] persistence +/// - Nonce + state verification on every authorization round-trip +/// +/// ### Things this class deliberately does NOT do +/// +/// - **Verify the ID token signature.** This requires the provider's JWKS +/// and ECDSA/RSA verification, which is not feasible on every supported +/// platform without pulling in a heavy dep. The remedy is: trust the +/// TLS connection to the well-known issuer (i.e. always discover, never +/// pass tokens to a server without re-validating server-side). +/// - **Implicit / hybrid / device flows.** Use the lower-level +/// [com.codename1.io.ConnectionRequest] APIs if you need those. +/// +/// @since 8.0 +public final class OidcClient { + + private final OidcConfiguration configuration; + private String clientId; + private String clientSecret; + private String redirectUri; + private String[] scopes; + private String[] additionalAuthParams = new String[0]; + private String[] additionalTokenParams = new String[0]; + private TokenStore tokenStore = new TokenStore.DefaultStorageTokenStore(); + private String storeKey; + private String responseMode; + private boolean enforceNonce = true; + + private OidcClient(OidcConfiguration configuration) { + this.configuration = configuration; + } + + /// Constructs a client from an already-known [OidcConfiguration]. Use + /// [#discover(String)] when you'd rather pull the endpoints from the + /// provider's `.well-known/openid-configuration` document. + public static OidcClient create(OidcConfiguration configuration) { + if (configuration == null) { + throw new IllegalArgumentException("configuration must not be null"); + } + return new OidcClient(configuration); + } + + /// Fetches `/.well-known/openid-configuration` and resolves with + /// an [OidcClient] pre-populated with the discovered endpoints. The + /// returned client still needs `clientId`, `redirectUri` and `scopes` + /// before [#authorize()] will work. + /// + /// Trailing slashes on `issuer` are tolerated. + public static AsyncResource discover(String issuer) { + if (issuer == null) { + throw new IllegalArgumentException("issuer must not be null"); + } + final AsyncResource out = new AsyncResource(); + String base = issuer; + while (base.endsWith("/")) { + base = base.substring(0, base.length() - 1); + } + final String url = base + "/.well-known/openid-configuration"; + ConnectionRequest req = new ConnectionRequest() { + protected void readResponse(InputStream input) throws IOException { + try { + byte[] body = Util.readInputStream(input); + String json = StringUtil.newString(body); + Map parsed = new JSONParser() + .parseJSON(new StringReader(json)); + if (parsed == null || parsed.isEmpty()) { + out.error(new OidcException(OidcException.DISCOVERY_FAILED, + "Discovery document was empty")); + return; + } + OidcConfiguration cfg = OidcConfiguration.fromDiscoveryJson(parsed); + out.complete(new OidcClient(cfg)); + } catch (Throwable t) { + out.error(new OidcException(OidcException.DISCOVERY_FAILED, + "Failed to parse discovery document: " + t.getMessage(), t)); + } + } + + protected void handleException(Exception err) { + out.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Failed to fetch discovery document at " + url + ": " + + err.getMessage(), err)); + } + }; + req.setUrl(url); + req.setPost(false); + req.setReadResponseForErrors(true); + NetworkManager.getInstance().addToQueue(req); + return out; + } + + public OidcConfiguration getConfiguration() { + return configuration; + } + + public OidcClient setClientId(String clientId) { + this.clientId = clientId; + return this; + } + + public OidcClient setClientSecret(String clientSecret) { + this.clientSecret = clientSecret; + return this; + } + + public OidcClient setRedirectUri(String redirectUri) { + this.redirectUri = redirectUri; + return this; + } + + public OidcClient setScopes(String... scopes) { + if (scopes == null) { + this.scopes = null; + } else { + this.scopes = (String[]) scopes.clone(); + } + return this; + } + + public OidcClient setScopes(List scopes) { + if (scopes == null) { + this.scopes = null; + } else { + this.scopes = scopes.toArray(new String[0]); + } + return this; + } + + /// Extra `name=value` parameters appended to the authorization-endpoint + /// URL. Use for provider-specific options like Google's `prompt=consent` + /// or Apple's `response_mode=form_post`. Values are URL-encoded. + public OidcClient setAuthorizationParameters(String... kv) { + if (kv.length % 2 != 0) { + throw new IllegalArgumentException("Expected key/value pairs"); + } + this.additionalAuthParams = (String[]) kv.clone(); + return this; + } + + /// Extra `name=value` parameters sent as form data on every token-endpoint + /// POST. + public OidcClient setTokenParameters(String... kv) { + if (kv.length % 2 != 0) { + throw new IllegalArgumentException("Expected key/value pairs"); + } + this.additionalTokenParams = (String[]) kv.clone(); + return this; + } + + /// Swaps the token persistence strategy. Defaults to + /// [TokenStore.DefaultStorageTokenStore]. + public OidcClient setTokenStore(TokenStore store) { + this.tokenStore = store == null + ? new TokenStore.DefaultStorageTokenStore() + : store; + return this; + } + + /// Override the key under which tokens are stored. Defaults to the + /// issuer + client-id pair so that multiple clients can coexist. + public OidcClient setStoreKey(String key) { + this.storeKey = key; + return this; + } + + /// `false` skips the `nonce` claim check on the returned ID token. Only + /// disable when you have a very good reason (e.g. provider known not to + /// echo the nonce); the default is to enforce. + public OidcClient setEnforceNonce(boolean enforce) { + this.enforceNonce = enforce; + return this; + } + + /// Sets the `response_mode` parameter sent on the authorization URL + /// (e.g. `"form_post"` for Apple Sign-In with the web fallback). + public OidcClient setResponseMode(String mode) { + this.responseMode = mode; + return this; + } + + /// Launches an authorization-code flow with PKCE. The user is sent to the + /// system browser to sign in; the returned [AsyncResource] completes with + /// the token set or errors with [OidcException] (e.g. `USER_CANCELLED`, + /// `STATE_MISMATCH`). + public AsyncResource authorize() { + requireConfigured(); + final AsyncResource out = new AsyncResource(); + final PkceChallenge pkce = PkceChallenge.generate(); + final String state = randomToken(16); + final String nonce = randomToken(16); + String authUrl = buildAuthorizationUrl(state, nonce, pkce); + SystemBrowser.authenticate(authUrl, redirectUri) + .ready(new SuccessCallback() { + public void onSucess(String redirectUrl) { + handleRedirect(redirectUrl, state, nonce, pkce, out); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + return out; + } + + /// Exchanges a stored refresh token for a fresh access token. Pass the + /// value returned from [OidcTokens#getRefreshToken()] on a previous flow. + /// The new tokens are persisted via the current [TokenStore]. + public AsyncResource refresh(final String refreshToken) { + requireConfigured(); + if (refreshToken == null) { + throw new IllegalArgumentException("refreshToken must not be null"); + } + if (configuration.getTokenEndpoint() == null) { + throw new IllegalStateException("OIDC configuration is missing tokenEndpoint"); + } + final AsyncResource out = new AsyncResource(); + Map args = new HashMap(); + args.put("grant_type", "refresh_token"); + args.put("refresh_token", refreshToken); + if (scopes != null && scopes.length > 0) { + args.put("scope", join(scopes)); + } + appendBaseTokenArgs(args); + postToTokenEndpoint(args, refreshToken, null, out); + return out; + } + + /// Returns previously-saved tokens for this client (or `null`). Combine + /// with [#refreshIfExpired(int)] to silently bring the session back to + /// life on app launch. + public AsyncResource loadStoredTokens() { + return tokenStore.load(storageKey()); + } + + /// Loads stored tokens; if they are within `leewaySeconds` of expiring, + /// runs a refresh and saves the new tokens. Completes with `null` when + /// nothing is stored or when the stored token has no refresh token and + /// has already expired. + public AsyncResource refreshIfExpired(final int leewaySeconds) { + final AsyncResource out = new AsyncResource(); + loadStoredTokens() + .ready(new SuccessCallback() { + public void onSucess(OidcTokens stored) { + if (stored == null) { + out.complete(null); + return; + } + if (!stored.isExpiringWithin(leewaySeconds)) { + out.complete(stored); + return; + } + String rt = stored.getRefreshToken(); + if (rt == null) { + out.complete(null); + return; + } + refresh(rt) + .ready(new SuccessCallback() { + public void onSucess(OidcTokens fresh) { + out.complete(fresh); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + return out; + } + + /// Sends a token-revocation request to the issuer (RFC 7009). Silently + /// no-ops when the issuer does not advertise a `revocation_endpoint`. + public AsyncResource revoke(final String token) { + final AsyncResource out = new AsyncResource(); + if (token == null || configuration.getRevocationEndpoint() == null) { + out.complete(Boolean.FALSE); + return out; + } + ConnectionRequest req = new ConnectionRequest() { + protected void readResponse(InputStream input) throws IOException { + Util.readInputStream(input); + out.complete(Boolean.TRUE); + } + + protected void handleException(Exception err) { + out.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Token revocation failed: " + err.getMessage(), err)); + } + }; + req.setUrl(configuration.getRevocationEndpoint()); + req.setPost(true); + req.setReadResponseForErrors(true); + req.addRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + req.addArgument("token", token); + req.addArgument("client_id", clientId); + if (clientSecret != null) { + req.addArgument("client_secret", clientSecret); + } + NetworkManager.getInstance().addToQueue(req); + return out; + } + + /// Clears any stored tokens for this client. Does not call the issuer's + /// revocation endpoint -- combine with [#revoke(String)] if you want a + /// proper sign-out. + public AsyncResource clearStoredTokens() { + return tokenStore.clear(storageKey()); + } + + // ----------------------------------------------------------- + // internals + + private void requireConfigured() { + if (clientId == null) { + throw new IllegalStateException("clientId is required"); + } + if (redirectUri == null) { + throw new IllegalStateException("redirectUri is required"); + } + if (configuration.getAuthorizationEndpoint() == null) { + throw new IllegalStateException("authorizationEndpoint missing from configuration"); + } + } + + private String storageKey() { + if (storeKey != null) { + return storeKey; + } + String issuer = configuration.getIssuer(); + if (issuer == null) { + issuer = configuration.getAuthorizationEndpoint(); + } + return issuer + "|" + clientId; + } + + private String buildAuthorizationUrl(String state, String nonce, PkceChallenge pkce) { + StringBuilder b = new StringBuilder(configuration.getAuthorizationEndpoint()); + b.append(configuration.getAuthorizationEndpoint().indexOf('?') >= 0 ? '&' : '?'); + appendParam(b, "response_type", "code"); + appendParam(b, "client_id", clientId); + appendParam(b, "redirect_uri", redirectUri); + if (scopes != null && scopes.length > 0) { + appendParam(b, "scope", join(scopes)); + } + appendParam(b, "state", state); + if (enforceNonce) { + appendParam(b, "nonce", nonce); + } + appendParam(b, "code_challenge", pkce.getChallenge()); + appendParam(b, "code_challenge_method", pkce.getMethod()); + if (responseMode != null) { + appendParam(b, "response_mode", responseMode); + } + for (int i = 0; i + 1 < additionalAuthParams.length; i += 2) { + appendParam(b, additionalAuthParams[i], additionalAuthParams[i + 1]); + } + return b.toString(); + } + + private static void appendParam(StringBuilder b, String k, String v) { + char last = b.charAt(b.length() - 1); + if (last != '?' && last != '&') { + b.append('&'); + } + b.append(Util.encodeUrl(k)).append('=').append(Util.encodeUrl(v)); + } + + private void handleRedirect(String redirectUrl, + String expectedState, + String expectedNonce, + PkceChallenge pkce, + final AsyncResource out) { + Map params = parseRedirectParams(redirectUrl); + String error = params.get("error"); + if (error != null) { + String description = params.get("error_description"); + String code = error.equals("access_denied") ? OidcException.ACCESS_DENIED : error; + out.error(new OidcException(code, + description != null ? description : error)); + return; + } + String returnedState = params.get("state"); + if (returnedState == null || !returnedState.equals(expectedState)) { + out.error(new OidcException(OidcException.STATE_MISMATCH, + "Authorization server returned a different 'state' than the one we sent")); + return; + } + String code = params.get("code"); + if (code == null) { + out.error(new OidcException(OidcException.INVALID_GRANT, + "Authorization redirect was missing the 'code' parameter")); + return; + } + exchangeCode(code, expectedNonce, pkce, out); + } + + private void exchangeCode(String code, + final String expectedNonce, + PkceChallenge pkce, + final AsyncResource out) { + if (configuration.getTokenEndpoint() == null) { + out.error(new OidcException(OidcException.INVALID_GRANT, + "OIDC configuration is missing tokenEndpoint")); + return; + } + Map args = new HashMap(); + args.put("grant_type", "authorization_code"); + args.put("code", code); + args.put("redirect_uri", redirectUri); + args.put("code_verifier", pkce.getVerifier()); + appendBaseTokenArgs(args); + postToTokenEndpoint(args, null, expectedNonce, out); + } + + private void appendBaseTokenArgs(Map args) { + args.put("client_id", clientId); + if (clientSecret != null) { + args.put("client_secret", clientSecret); + } + for (int i = 0; i + 1 < additionalTokenParams.length; i += 2) { + args.put(additionalTokenParams[i], additionalTokenParams[i + 1]); + } + } + + private void postToTokenEndpoint(final Map args, + final String refreshTokenFallback, + final String expectedNonce, + final AsyncResource out) { + final boolean[] completed = new boolean[1]; + ConnectionRequest req = new ConnectionRequest() { + protected void readResponse(InputStream input) throws IOException { + if (completed[0]) return; + byte[] body = Util.readInputStream(input); + String json = StringUtil.newString(body); + Map parsed; + try { + parsed = new JSONParser().parseJSON(new StringReader(json)); + } catch (Exception e) { + completed[0] = true; + out.error(new OidcException(OidcException.INVALID_GRANT, + "Token endpoint returned malformed JSON: " + json, e)); + return; + } + if (parsed == null) { + completed[0] = true; + out.error(new OidcException(OidcException.INVALID_GRANT, + "Token endpoint returned no body")); + return; + } + if (parsed.get("error") != null) { + completed[0] = true; + Object desc = parsed.get("error_description"); + out.error(new OidcException(parsed.get("error").toString(), + desc != null ? desc.toString() : null)); + return; + } + final OidcTokens tokens = OidcTokens.fromTokenResponse(parsed, refreshTokenFallback); + if (enforceNonce && expectedNonce != null && tokens.getIdToken() != null) { + Object nonceClaim = tokens.getClaim("nonce"); + if (nonceClaim != null && !expectedNonce.equals(nonceClaim.toString())) { + completed[0] = true; + out.error(new OidcException(OidcException.NONCE_MISMATCH, + "ID token nonce did not match")); + return; + } + } + tokenStore.save(storageKey(), tokens) + .except(new SuccessCallback() { + public void onSucess(Throwable t) { + // Token persistence failure is non-fatal; tokens are still valid in-memory. + } + }); + completed[0] = true; + out.complete(tokens); + } + + protected void handleException(Exception err) { + if (completed[0]) return; + completed[0] = true; + out.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Token endpoint request failed: " + err.getMessage(), err)); + } + }; + req.setUrl(configuration.getTokenEndpoint()); + req.setPost(true); + req.setReadResponseForErrors(true); + req.addRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + req.addRequestHeader("Accept", "application/json"); + for (Map.Entry e : args.entrySet()) { + req.addArgument(e.getKey(), e.getValue()); + } + NetworkManager.getInstance().addToQueue(req); + } + + private static Map parseRedirectParams(String url) { + Map out = new HashMap(); + int qm = url.indexOf('?'); + int hash = url.indexOf('#'); + String tail = null; + if (qm >= 0) { + tail = url.substring(qm + 1); + int h2 = tail.indexOf('#'); + if (h2 >= 0) { + String fragment = tail.substring(h2 + 1); + tail = tail.substring(0, h2); + merge(out, fragment); + } + } else if (hash >= 0) { + tail = url.substring(hash + 1); + } + if (tail != null) { + merge(out, tail); + } + return out; + } + + private static void merge(Map out, String query) { + String[] pairs = Util.split(query, "&"); + for (int i = 0; i < pairs.length; i++) { + String p = pairs[i]; + int eq = p.indexOf('='); + if (eq < 0) continue; + String k = decode(p.substring(0, eq)); + String v = decode(p.substring(eq + 1)); + out.put(k, v); + } + } + + private static String decode(String s) { + StringBuilder b = new StringBuilder(s.length()); + int i = 0; + int len = s.length(); + while (i < len) { + char c = s.charAt(i); + if (c == '+') { + b.append(' '); + i++; + } else if (c == '%' && i + 2 < len) { + int hi = Character.digit(s.charAt(i + 1), 16); + int lo = Character.digit(s.charAt(i + 2), 16); + if (hi >= 0 && lo >= 0) { + b.append((char) ((hi << 4) | lo)); + i += 3; + } else { + b.append(c); + i++; + } + } else { + b.append(c); + i++; + } + } + return b.toString(); + } + + private static String join(String[] items) { + StringBuilder b = new StringBuilder(); + for (int i = 0; i < items.length; i++) { + if (i > 0) b.append(' '); + b.append(items[i]); + } + return b.toString(); + } + + private static String randomToken(int byteLength) { + byte[] bytes = SecureRandom.bytes(byteLength); + String s = Base64.encodeUrlSafe(bytes); + StringBuilder b = new StringBuilder(s.length()); + int len = s.length(); + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + if (c == '=' || c == '\n' || c == '\r') continue; + b.append(c); + } + return b.toString(); + } +} diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcConfiguration.java b/CodenameOne/src/com/codename1/io/oidc/OidcConfiguration.java new file mode 100644 index 0000000000..44d20f6a5a --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/OidcConfiguration.java @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import java.util.Map; + +/// The subset of an OpenID Connect provider's `.well-known/openid-configuration` +/// document that [OidcClient] cares about. Construct directly when you already +/// know the endpoints, or obtain via [OidcClient#discover(String)] which fetches +/// and parses the document. +/// +/// All fields are immutable after construction. Use [#newBuilder()] to start +/// from a blank slate; use [#newBuilder(OidcConfiguration)] to derive one from +/// an existing instance. +/// +/// @since 8.0 +public final class OidcConfiguration { + + private final String issuer; + private final String authorizationEndpoint; + private final String tokenEndpoint; + private final String userInfoEndpoint; + private final String revocationEndpoint; + private final String endSessionEndpoint; + private final String jwksUri; + + private OidcConfiguration(Builder b) { + this.issuer = b.issuer; + this.authorizationEndpoint = b.authorizationEndpoint; + this.tokenEndpoint = b.tokenEndpoint; + this.userInfoEndpoint = b.userInfoEndpoint; + this.revocationEndpoint = b.revocationEndpoint; + this.endSessionEndpoint = b.endSessionEndpoint; + this.jwksUri = b.jwksUri; + } + + /// Builds an [OidcConfiguration] from a parsed discovery JSON document. + /// Only the fields this client needs are extracted; anything else is ignored. + public static OidcConfiguration fromDiscoveryJson(Map json) { + if (json == null) { + throw new IllegalArgumentException("json must not be null"); + } + Builder b = new Builder(); + b.issuer = stringOrNull(json.get("issuer")); + b.authorizationEndpoint = stringOrNull(json.get("authorization_endpoint")); + b.tokenEndpoint = stringOrNull(json.get("token_endpoint")); + b.userInfoEndpoint = stringOrNull(json.get("userinfo_endpoint")); + b.revocationEndpoint = stringOrNull(json.get("revocation_endpoint")); + b.endSessionEndpoint = stringOrNull(json.get("end_session_endpoint")); + b.jwksUri = stringOrNull(json.get("jwks_uri")); + return b.build(); + } + + public String getIssuer() { + return issuer; + } + + public String getAuthorizationEndpoint() { + return authorizationEndpoint; + } + + public String getTokenEndpoint() { + return tokenEndpoint; + } + + public String getUserInfoEndpoint() { + return userInfoEndpoint; + } + + public String getRevocationEndpoint() { + return revocationEndpoint; + } + + public String getEndSessionEndpoint() { + return endSessionEndpoint; + } + + public String getJwksUri() { + return jwksUri; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public static Builder newBuilder(OidcConfiguration source) { + Builder b = new Builder(); + b.issuer = source.issuer; + b.authorizationEndpoint = source.authorizationEndpoint; + b.tokenEndpoint = source.tokenEndpoint; + b.userInfoEndpoint = source.userInfoEndpoint; + b.revocationEndpoint = source.revocationEndpoint; + b.endSessionEndpoint = source.endSessionEndpoint; + b.jwksUri = source.jwksUri; + return b; + } + + private static String stringOrNull(Object o) { + return o instanceof String ? (String) o : null; + } + + /// Fluent builder for [OidcConfiguration]. + public static final class Builder { + private String issuer; + private String authorizationEndpoint; + private String tokenEndpoint; + private String userInfoEndpoint; + private String revocationEndpoint; + private String endSessionEndpoint; + private String jwksUri; + + public Builder issuer(String v) { + this.issuer = v; + return this; + } + + public Builder authorizationEndpoint(String v) { + this.authorizationEndpoint = v; + return this; + } + + public Builder tokenEndpoint(String v) { + this.tokenEndpoint = v; + return this; + } + + public Builder userInfoEndpoint(String v) { + this.userInfoEndpoint = v; + return this; + } + + public Builder revocationEndpoint(String v) { + this.revocationEndpoint = v; + return this; + } + + public Builder endSessionEndpoint(String v) { + this.endSessionEndpoint = v; + return this; + } + + public Builder jwksUri(String v) { + this.jwksUri = v; + return this; + } + + public OidcConfiguration build() { + if (authorizationEndpoint == null) { + throw new IllegalStateException("authorizationEndpoint is required"); + } + return new OidcConfiguration(this); + } + } +} diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcException.java b/CodenameOne/src/com/codename1/io/oidc/OidcException.java new file mode 100644 index 0000000000..7cebab6936 --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/OidcException.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import java.io.IOException; + +/// Thrown for failures during an OpenID Connect / OAuth 2.0 flow driven by +/// [OidcClient]. The [#getError()] code mirrors the `error` field from RFC 6749 +/// for authorization-server responses (e.g. `"access_denied"`, `"invalid_grant"`) +/// and uses Codename One-specific values for transport or client-side problems +/// (`"transport_error"`, `"state_mismatch"`, `"nonce_mismatch"`, `"user_cancelled"`, +/// `"discovery_failed"`, `"invalid_id_token"`). +/// +/// @since 8.0 +public class OidcException extends IOException { + + /// Authorization server returned `error=access_denied`. + public static final String ACCESS_DENIED = "access_denied"; + + /// User cancelled the system browser / native sign-in sheet. + public static final String USER_CANCELLED = "user_cancelled"; + + /// `state` returned by the authorization server did not match the one we sent. + public static final String STATE_MISMATCH = "state_mismatch"; + + /// `nonce` claim on the returned ID token did not match the one we sent. + public static final String NONCE_MISMATCH = "nonce_mismatch"; + + /// The discovery document could not be fetched or parsed. + public static final String DISCOVERY_FAILED = "discovery_failed"; + + /// Token-endpoint response was missing or malformed. + public static final String INVALID_GRANT = "invalid_grant"; + + /// ID token failed structural validation (we do not currently verify the + /// signature -- treat the issuer as a trust anchor and use TLS to the + /// discovery URL). + public static final String INVALID_ID_TOKEN = "invalid_id_token"; + + /// Generic transport / network failure. + public static final String TRANSPORT_ERROR = "transport_error"; + + private final String error; + private final String errorDescription; + + public OidcException(String error, String message) { + super(message != null ? message : error); + this.error = error; + this.errorDescription = message; + } + + public OidcException(String error, String message, Throwable cause) { + super(message != null ? message : error); + this.error = error; + this.errorDescription = message; + if (cause != null) { + initCause(cause); + } + } + + /// The short error code (see the constants on this class). + public String getError() { + return error; + } + + /// Human-readable description supplied by the server or the client. + public String getErrorDescription() { + return errorDescription; + } +} diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java b/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java new file mode 100644 index 0000000000..b84834082b --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java @@ -0,0 +1,239 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import com.codename1.io.AccessToken; +import com.codename1.io.JSONParser; +import com.codename1.util.Base64; +import com.codename1.util.regex.StringReader; + +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/// The tokens returned by an OpenID Connect token endpoint, with convenience +/// accessors for the OIDC ID token claims. Immutable. +/// +/// To bridge into the older [AccessToken] API used by [com.codename1.social.Login], +/// call [#toAccessToken()]. +/// +/// @since 8.0 +public final class OidcTokens { + + private final String accessToken; + private final String idToken; + private final String refreshToken; + private final String tokenType; + private final String scope; + private final Date expiresAt; + private final Map idTokenClaims; + private final Map raw; + + OidcTokens(String accessToken, + String idToken, + String refreshToken, + String tokenType, + String scope, + Date expiresAt, + Map idTokenClaims, + Map raw) { + this.accessToken = accessToken; + this.idToken = idToken; + this.refreshToken = refreshToken; + this.tokenType = tokenType; + this.scope = scope; + this.expiresAt = expiresAt; + this.idTokenClaims = idTokenClaims == null + ? Collections.emptyMap() + : Collections.unmodifiableMap(new HashMap(idTokenClaims)); + this.raw = raw == null + ? Collections.emptyMap() + : Collections.unmodifiableMap(new HashMap(raw)); + } + + /// Builds an [OidcTokens] from a parsed JSON token-endpoint response, + /// optionally merging in a refresh token from a previous response (token + /// endpoints are allowed to omit `refresh_token` on a refresh call). + public static OidcTokens fromTokenResponse(Map json, + String refreshTokenFallback) { + if (json == null) { + throw new IllegalArgumentException("json must not be null"); + } + String accessToken = stringOrNull(json.get("access_token")); + String idToken = stringOrNull(json.get("id_token")); + String refreshToken = stringOrNull(json.get("refresh_token")); + if (refreshToken == null) { + refreshToken = refreshTokenFallback; + } + String tokenType = stringOrNull(json.get("token_type")); + String scope = stringOrNull(json.get("scope")); + Date expiresAt = null; + Object expiresIn = json.get("expires_in"); + if (expiresIn != null) { + try { + String raw = expiresIn.toString().trim(); + int dot = raw.indexOf('.'); + if (dot >= 0) { + raw = raw.substring(0, dot); + } + long seconds = Long.parseLong(raw); + expiresAt = new Date(System.currentTimeMillis() + seconds * 1000L); + } catch (NumberFormatException nfe) { + // ignore -- expiresAt stays null + } + } + Map claims = idToken != null ? decodeIdTokenClaims(idToken) : null; + return new OidcTokens(accessToken, idToken, refreshToken, tokenType, scope, + expiresAt, claims, json); + } + + /// Decodes the payload of a compact JWS without verifying the signature. + /// Suitable for reading OIDC ID-token claims; do NOT use the returned + /// values for authorization decisions on the server. + public static Map decodeIdTokenClaims(String compactJwt) { + if (compactJwt == null) { + return Collections.emptyMap(); + } + int firstDot = compactJwt.indexOf('.'); + int secondDot = firstDot >= 0 ? compactJwt.indexOf('.', firstDot + 1) : -1; + if (firstDot < 0 || secondDot < 0) { + return Collections.emptyMap(); + } + String payloadB64 = compactJwt.substring(firstDot + 1, secondDot); + // Pad to a multiple of 4 for the decoder. + while ((payloadB64.length() & 0x3) != 0) { + payloadB64 = payloadB64 + "="; + } + byte[] payload; + try { + payload = Base64.decodeUrlSafe(payloadB64); + } catch (RuntimeException re) { + return Collections.emptyMap(); + } + if (payload == null) { + return Collections.emptyMap(); + } + try { + String json = new String(payload, "UTF-8"); + Map parsed = new JSONParser().parseJSON(new StringReader(json)); + return parsed != null ? parsed : Collections.emptyMap(); + } catch (Exception e) { + return Collections.emptyMap(); + } + } + + public String getAccessToken() { + return accessToken; + } + + public String getIdToken() { + return idToken; + } + + public String getRefreshToken() { + return refreshToken; + } + + public String getTokenType() { + return tokenType; + } + + public String getScope() { + return scope; + } + + /// Absolute expiry instant, or `null` if the token endpoint did not + /// return `expires_in`. + public Date getExpiresAt() { + return expiresAt; + } + + /// `true` if [#getExpiresAt()] is non-null and in the past. + public boolean isExpired() { + return expiresAt != null && expiresAt.getTime() < System.currentTimeMillis(); + } + + /// `true` if [#getExpiresAt()] is non-null and within `leewaySeconds` of + /// the current time. Pass a small leeway (60 -- 120 seconds) when deciding + /// whether to refresh proactively. + public boolean isExpiringWithin(int leewaySeconds) { + return expiresAt != null && + expiresAt.getTime() - System.currentTimeMillis() < leewaySeconds * 1000L; + } + + /// Read-only view of the ID token claims (empty if no ID token was returned). + public Map getIdTokenClaims() { + return idTokenClaims; + } + + /// Convenience accessor for a single ID-token claim. Returns `null` when + /// the claim is absent or the ID token is missing. + public Object getClaim(String name) { + return idTokenClaims.get(name); + } + + /// Convenience accessor for a string-valued claim. + public String getStringClaim(String name) { + Object v = idTokenClaims.get(name); + return v == null ? null : v.toString(); + } + + /// The full, unmodified token-endpoint JSON. Useful for inspecting + /// provider-specific fields (e.g. `nonce_supported` from Apple). + public Map getRawResponse() { + return raw; + } + + /// `sub` claim from the ID token -- the stable, opaque user identifier + /// within the issuer. + public String getSubject() { + return getStringClaim("sub"); + } + + /// `email` claim from the ID token, when present. + public String getEmail() { + return getStringClaim("email"); + } + + /// `name` claim from the ID token, when present. + public String getName() { + return getStringClaim("name"); + } + + /// Bridges into the legacy [AccessToken] API used by + /// [com.codename1.social.Login]. The expiry is the absolute instant from + /// [#getExpiresAt()]. + public AccessToken toAccessToken() { + AccessToken t = new AccessToken(accessToken, null, refreshToken, idToken); + if (expiresAt != null) { + t.setExpiryDate(expiresAt); + } + return t; + } + + private static String stringOrNull(Object o) { + return o instanceof String ? (String) o : null; + } +} diff --git a/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java b/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java new file mode 100644 index 0000000000..e6cfbc3c90 --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import com.codename1.security.Hash; +import com.codename1.security.SecureRandom; +import com.codename1.util.Base64; + +/// One PKCE pair (RFC 7636). The `code_verifier` is kept by the client; the +/// `code_challenge` (always `S256` here) is sent to the authorization endpoint; +/// the verifier is then presented to the token endpoint to prove possession. +/// +/// PKCE is mandatory on every authorization-code flow this client initiates, +/// even when a `client_secret` is configured -- providers like Google and +/// Microsoft both require it for mobile public clients and tolerate it for +/// confidential clients. +/// +/// @since 8.0 +public final class PkceChallenge { + + /// Always `"S256"` -- the only value [OidcClient] emits. RFC 7636 also + /// defines `"plain"` but it is forbidden by this client. + public static final String METHOD_S256 = "S256"; + + private final String verifier; + private final String challenge; + + private PkceChallenge(String verifier, String challenge) { + this.verifier = verifier; + this.challenge = challenge; + } + + /// Generates a fresh PKCE pair with a 64-byte (~86 char) verifier. The + /// verifier characters are drawn from the unreserved set + /// `[A-Z][a-z][0-9]-._~` via base64url encoding of secure random bytes, + /// per RFC 7636 section 4.1. + public static PkceChallenge generate() { + byte[] random = SecureRandom.bytes(64); + String verifier = Base64.encodeUrlSafe(random); + verifier = strip(verifier); + byte[] digest; + try { + digest = Hash.sha256(verifier.getBytes("UTF-8")); + } catch (java.io.UnsupportedEncodingException uee) { + // UTF-8 is guaranteed on every JVM; fall back defensively. + digest = Hash.sha256(verifier.getBytes()); + } + String challenge = strip(Base64.encodeUrlSafe(digest)); + return new PkceChallenge(verifier, challenge); + } + + /// The verifier that must be supplied to the token endpoint as + /// `code_verifier`. + public String getVerifier() { + return verifier; + } + + /// The challenge to include on the authorization URL as `code_challenge`. + public String getChallenge() { + return challenge; + } + + /// Always returns [#METHOD_S256]. + public String getMethod() { + return METHOD_S256; + } + + /// Strip trailing `=` padding and any embedded newlines that older + /// base64 encoders insert. Doing it here keeps the rest of the client + /// portable across the standard and url-safe encoders. + private static String strip(String s) { + int len = s.length(); + StringBuilder b = new StringBuilder(len); + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + if (c == '\n' || c == '\r' || c == '=') { + continue; + } + b.append(c); + } + return b.toString(); + } +} diff --git a/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java b/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java new file mode 100644 index 0000000000..f60086c05d --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import com.codename1.system.NativeLookup; +import com.codename1.ui.BrowserWindow; +import com.codename1.ui.CN; +import com.codename1.ui.events.ActionEvent; +import com.codename1.ui.events.ActionListener; +import com.codename1.util.AsyncResource; + +/// Routes an authorization-code-flow sign-in through the *system browser* +/// (`ASWebAuthenticationSession` on iOS, an Android Custom Tab on Android, +/// the user's default browser on JavaSE / Web) and resolves with the final +/// redirect URL once the OS hands it back. Replaces the embedded WebView +/// approach used by the legacy [com.codename1.io.Oauth2] class. +/// +/// You normally do not call this directly -- [OidcClient.authorize] does it +/// for you. Use the public methods on this class when wiring up a custom +/// OAuth 2.0 flow that does not fit the OIDC client (e.g. device flow). +/// +/// ### Why the system browser? +/// +/// Modern identity providers (Google Identity Services, Apple, Microsoft +/// Entra ID, Auth0, Firebase Auth) refuse to render their sign-in pages +/// inside an embedded WebView -- it's flagged as a phishing surface and +/// blocked. Using the OS-provided sheet gives the user a trusted UI, +/// preserves cookies for single sign-on, and integrates with password and +/// passkey autofill. +/// +/// @since 8.0 +public final class SystemBrowser { + + private static volatile OidcBrowserNative cachedNative; + private static volatile boolean nativeProbed; + + private SystemBrowser() {} + + /// `true` when a native, OS-level implementation is available on the + /// current platform. When `false` the [#authenticate(String, String)] + /// call falls back to an in-app [BrowserWindow]. Call this if you want + /// to surface a clear UX warning to the user. + public static boolean isNativeAvailable() { + OidcBrowserNative n = lookupNative(); + return n != null && n.isSupported(); + } + + /// Launches the system browser at `authorizationUrl` and resolves with + /// the redirect URL once the user is bounced to a location starting with + /// `redirectUri`. + /// + /// #### Parameters + /// + /// - `authorizationUrl`: Fully-built authorization-endpoint URL. + /// + /// - `redirectUri`: Redirect URI registered with the authorization + /// server. Both custom-scheme URIs (`com.example:/oauth2redirect`) + /// and HTTPS URIs are accepted; the latter are recommended on + /// Android 11+ where custom schemes can be hijacked. + /// + /// #### Returns + /// + /// An [AsyncResource] that completes with the redirect URL (including + /// query / fragment) or errors with [OidcException] on cancellation / + /// failure. + public static AsyncResource authenticate(String authorizationUrl, + String redirectUri) { + if (authorizationUrl == null) { + throw new IllegalArgumentException("authorizationUrl must not be null"); + } + if (redirectUri == null) { + throw new IllegalArgumentException("redirectUri must not be null"); + } + final AsyncResource out = new AsyncResource(); + OidcBrowserNative native_ = lookupNative(); + if (native_ != null && native_.isSupported()) { + authenticateNative(native_, authorizationUrl, redirectUri, out); + } else { + authenticateBrowserWindow(authorizationUrl, redirectUri, out); + } + return out; + } + + private static void authenticateNative(final OidcBrowserNative native_, + final String authUrl, + final String redirectUri, + final AsyncResource out) { + // Native calls usually need to happen off the EDT so the OS sheet can + // present and the JVM can pump events. CN.scheduleBackgroundTask runs + // on a pool thread. + final String scheme = schemeOf(redirectUri); + Runnable task = new Runnable() { + public void run() { + try { + String result = native_.startAuthorization(authUrl, scheme); + if (result == null) { + out.error(new OidcException(OidcException.USER_CANCELLED, + "Sign-in sheet was dismissed before completion")); + return; + } + out.complete(result); + } catch (Throwable t) { + out.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Native sign-in sheet failed: " + t.getMessage(), t)); + } + } + }; + // Schedule on a background thread so we don't deadlock the EDT. + new Thread(task, "OidcSystemBrowser").start(); + } + + private static void authenticateBrowserWindow(final String authUrl, + final String redirectUri, + final AsyncResource out) { + Runnable show = new Runnable() { + public void run() { + final BrowserWindow window = new BrowserWindow(authUrl); + window.setTitle("Sign in"); + final boolean[] resolved = new boolean[1]; + final ActionListener loadListener = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + Object src = evt.getSource(); + if (!(src instanceof String)) { + return; + } + String url = (String) src; + if (url == null || !url.startsWith(redirectUri)) { + return; + } + if (resolved[0]) { + return; + } + resolved[0] = true; + window.close(); + out.complete(url); + } + }; + window.addLoadListener(loadListener); + window.addCloseListener(new ActionListener() { + public void actionPerformed(ActionEvent ev) { + if (!resolved[0]) { + resolved[0] = true; + out.error(new OidcException(OidcException.USER_CANCELLED, + "Sign-in window was closed before completion")); + } + } + }); + window.show(); + } + }; + if (CN.isEdt()) { + show.run(); + } else { + CN.callSerially(show); + } + } + + private static OidcBrowserNative lookupNative() { + if (nativeProbed) { + return cachedNative; + } + synchronized (SystemBrowser.class) { + if (nativeProbed) { + return cachedNative; + } + try { + cachedNative = NativeLookup.create(OidcBrowserNative.class); + } catch (Throwable t) { + cachedNative = null; + } + nativeProbed = true; + return cachedNative; + } + } + + /// Extracts the scheme of a redirect URI. For `"com.example.app:/oauth2"` + /// this returns `"com.example.app"`; for `"https://example.com/cb"` it + /// returns `"https"`. Used by native back-ends that need the scheme half + /// only. + static String schemeOf(String redirectUri) { + int colon = redirectUri.indexOf(':'); + if (colon < 0) { + return redirectUri; + } + return redirectUri.substring(0, colon); + } +} diff --git a/CodenameOne/src/com/codename1/io/oidc/TokenStore.java b/CodenameOne/src/com/codename1/io/oidc/TokenStore.java new file mode 100644 index 0000000000..186c1026cf --- /dev/null +++ b/CodenameOne/src/com/codename1/io/oidc/TokenStore.java @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import com.codename1.io.JSONParser; +import com.codename1.io.Storage; +import com.codename1.util.AsyncResource; +import com.codename1.util.regex.StringReader; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/// Pluggable persistence for an [OidcClient]'s tokens. Implement this and pass +/// to [OidcClient#setTokenStore(TokenStore)] when you want a custom strategy +/// (e.g. cross-device sync, encrypted-at-rest with your own key, in-memory +/// only). The default is [DefaultStorageTokenStore], which serialises tokens +/// to the standard [Storage] under a per-issuer key. For biometric-gated +/// persistence on iOS / Android, use [SecureStorageTokenStore]. +/// +/// All methods are asynchronous and may run network or biometric prompts on +/// the calling thread. +/// +/// @since 8.0 +public interface TokenStore { + + /// Reads previously-saved tokens for `key`, or completes with `null` if + /// nothing is stored. + AsyncResource load(String key); + + /// Persists `tokens` under `key`. Implementations should overwrite any + /// existing entry atomically. + AsyncResource save(String key, OidcTokens tokens); + + /// Removes the entry for `key`. Completing with `Boolean.FALSE` means + /// nothing was stored; completing with an error means the underlying + /// store failed. + AsyncResource clear(String key); + + /// The default store. Serialises the token JSON to [Storage] under a + /// `"cn1.oidc."`-prefixed key. Convenient and zero-config, but not + /// encrypted-at-rest -- the underlying storage on Android is the app's + /// internal files directory, which is sandboxed but not protected against + /// a rooted device with backups enabled. + public static final class DefaultStorageTokenStore implements TokenStore { + private static final String PREFIX = "cn1.oidc."; + + public AsyncResource load(String key) { + AsyncResource r = new AsyncResource(); + try { + String stored = (String) Storage.getInstance().readObject(PREFIX + key); + if (stored == null) { + r.complete(null); + return r; + } + Map parsed = new JSONParser().parseJSON(new StringReader(stored)); + if (parsed == null) { + r.complete(null); + return r; + } + Map tokenJson = subMap(parsed, "token"); + Map claims = subMap(parsed, "claims"); + Object expiresMs = parsed.get("expiresAt"); + Date expiresAt = null; + if (expiresMs != null) { + try { + String raw = expiresMs.toString(); + int dot = raw.indexOf('.'); + if (dot >= 0) { + raw = raw.substring(0, dot); + } + expiresAt = new Date(Long.parseLong(raw)); + } catch (NumberFormatException nfe) { + // ignore + } + } + OidcTokens tokens = new OidcTokens( + str(tokenJson.get("access_token")), + str(tokenJson.get("id_token")), + str(tokenJson.get("refresh_token")), + str(tokenJson.get("token_type")), + str(tokenJson.get("scope")), + expiresAt, + claims, + tokenJson); + r.complete(tokens); + } catch (Throwable t) { + r.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Failed to load stored tokens", t)); + } + return r; + } + + public AsyncResource save(String key, OidcTokens tokens) { + AsyncResource r = new AsyncResource(); + try { + StringBuilder sb = new StringBuilder("{"); + sb.append("\"token\":"); + appendJsonStringMap(sb, tokens.getRawResponse()); + sb.append(",\"claims\":"); + appendJsonStringMap(sb, tokens.getIdTokenClaims()); + if (tokens.getExpiresAt() != null) { + sb.append(",\"expiresAt\":").append(tokens.getExpiresAt().getTime()); + } + sb.append("}"); + Storage.getInstance().writeObject(PREFIX + key, sb.toString()); + r.complete(Boolean.TRUE); + } catch (Throwable t) { + r.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Failed to save tokens", t)); + } + return r; + } + + public AsyncResource clear(String key) { + AsyncResource r = new AsyncResource(); + try { + Storage.getInstance().deleteStorageFile(PREFIX + key); + r.complete(Boolean.TRUE); + } catch (Throwable t) { + r.error(new OidcException(OidcException.TRANSPORT_ERROR, + "Failed to clear tokens", t)); + } + return r; + } + + @SuppressWarnings("unchecked") + private static Map subMap(Map root, String key) { + Object v = root.get(key); + if (v instanceof Map) { + return (Map) v; + } + return new HashMap(); + } + + private static String str(Object o) { + return o instanceof String ? (String) o : (o == null ? null : o.toString()); + } + + private static void appendJsonStringMap(StringBuilder sb, Map map) { + sb.append('{'); + boolean first = true; + for (Map.Entry e : map.entrySet()) { + if (!first) { + sb.append(','); + } + first = false; + sb.append('"').append(escape(e.getKey())).append("\":"); + Object v = e.getValue(); + if (v == null) { + sb.append("null"); + } else if (v instanceof Number || v instanceof Boolean) { + sb.append(v.toString()); + } else { + sb.append('"').append(escape(v.toString())).append('"'); + } + } + sb.append('}'); + } + + private static String escape(String s) { + StringBuilder b = new StringBuilder(s.length() + 8); + int len = s.length(); + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + switch (c) { + case '"': b.append("\\\""); break; + case '\\': b.append("\\\\"); break; + case '\n': b.append("\\n"); break; + case '\r': b.append("\\r"); break; + case '\t': b.append("\\t"); break; + case '\b': b.append("\\b"); break; + case '\f': b.append("\\f"); break; + default: + if (c < 0x20) { + String hex = Integer.toHexString(c); + b.append("\\u"); + for (int p = hex.length(); p < 4; p++) b.append('0'); + b.append(hex); + } else { + b.append(c); + } + } + } + return b.toString(); + } + } +} diff --git a/CodenameOne/src/com/codename1/social/AppleSignIn.java b/CodenameOne/src/com/codename1/social/AppleSignIn.java new file mode 100644 index 0000000000..4371719774 --- /dev/null +++ b/CodenameOne/src/com/codename1/social/AppleSignIn.java @@ -0,0 +1,414 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +import com.codename1.io.AccessToken; +import com.codename1.io.Preferences; +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcConfiguration; +import com.codename1.io.oidc.OidcException; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.security.Hash; +import com.codename1.security.SecureRandom; +import com.codename1.system.NativeLookup; +import com.codename1.util.AsyncResource; +import com.codename1.util.Base64; +import com.codename1.util.SuccessCallback; + +import java.util.Map; + +/// `Sign in with Apple` for Codename One. Replaces the external +/// `cn1-applesignin` library; that library is now deprecated and forwards to +/// this class. +/// +/// Behavior by platform: +/// +/// - **iOS 13+** -- native `ASAuthorizationAppleIDProvider` flow via +/// [AppleSignInNative]. Returns the identity token plus the user's name +/// and email on the first authorization (Apple does not echo them on +/// subsequent ones; this class persists them in [Preferences]). +/// - **Android / JavaSE / Web** -- web fallback via +/// [com.codename1.io.oidc.OidcClient] against the public Apple OIDC issuer +/// (`https://appleid.apple.com`). Requires a *Services ID* (web client +/// ID), a redirect URI registered with Apple, and a `client_secret` JWT +/// generated server-side (use [#setClientSecret(String)]). +/// +/// #### Quick example +/// +/// ```java +/// AppleSignIn apple = AppleSignIn.getInstance() +/// .withServiceId("com.example.appleweb") // web only +/// .withRedirectUri("https://example.com/cb"); // web only +/// +/// apple.signIn("name email", new AppleSignInCallback() { +/// public void onSuccess(AppleSignInResult result) { +/// String id = result.getUserId(); +/// String email = result.getEmail(); +/// String idTok = result.getIdentityToken(); +/// // send idTok to your backend for verification +/// } +/// public void onError(String error) { ... } +/// public void onCancel() { ... } +/// }); +/// ``` +/// +/// @since 8.0 +public final class AppleSignIn extends Login { + + /// Apple's public OIDC issuer. + public static final String APPLE_ISSUER = "https://appleid.apple.com"; + + private static final String PREF_NAME = "cn1.applesignin.name"; + private static final String PREF_EMAIL = "cn1.applesignin.email"; + private static final String PREF_USER = "cn1.applesignin.userid"; + private static final String PREF_LOGGED_IN = "cn1.applesignin.loggedIn"; + + private static AppleSignIn INSTANCE; + + private String serviceId; // web Services ID + private String webRedirectUri; // for web fallback only + private String webClientSecret; // JWT generated by your backend + private String defaultScopes = "name email"; + + private AppleSignIn() {} + + public static synchronized AppleSignIn getInstance() { + if (INSTANCE == null) { + INSTANCE = new AppleSignIn(); + } + return INSTANCE; + } + + /// Apple *Services ID* used for the web fallback. Required only when + /// running on platforms without the native sheet (Android, JavaSE, Web). + public AppleSignIn withServiceId(String serviceId) { + this.serviceId = serviceId; + super.setClientId(serviceId); + return this; + } + + /// Redirect URI registered with Apple for the Services ID. Used by the + /// web fallback. + public AppleSignIn withRedirectUri(String redirectUri) { + this.webRedirectUri = redirectUri; + super.setRedirectURI(redirectUri); + return this; + } + + /// Client-secret JWT generated by your backend (Apple does not let mobile + /// apps mint this themselves -- see the developer guide for the recipe). + public AppleSignIn withClientSecret(String secret) { + this.webClientSecret = secret; + super.setClientSecret(secret); + return this; + } + + public AppleSignIn withDefaultScopes(String scopes) { + this.defaultScopes = scopes; + return this; + } + + @Override + public boolean isNativeLoginSupported() { + AppleSignInNative n = lookupNative(); + return n != null && n.isSupported(); + } + + @Override + public boolean nativeIsLoggedIn() { + AppleSignInNative n = lookupNative(); + if (n != null && n.isSupported()) { + return n.isLoggedIn(); + } + return Preferences.get(PREF_LOGGED_IN, false); + } + + @Override + public void nativeLogout() { + AppleSignInNative n = lookupNative(); + if (n != null && n.isSupported()) { + n.signOut(); + } + Preferences.delete(PREF_LOGGED_IN); + Preferences.delete(PREF_NAME); + Preferences.delete(PREF_EMAIL); + Preferences.delete(PREF_USER); + } + + @Override + public void nativelogin() { + signIn(defaultScopes, new LoginCallbackAdapter()); + } + + @Override + protected boolean validateToken(String token) { + // Apple identity tokens carry an `exp` claim; we trust it. + return true; + } + + /// Primary entry point. Triggers either the native sheet (iOS) or the + /// web OIDC fallback (everything else) and delivers the result to + /// `callback`. + public void signIn(String scopes, final AppleSignInCallback callback) { + if (callback == null) { + throw new IllegalArgumentException("callback must not be null"); + } + final String resolvedScopes = scopes != null ? scopes : defaultScopes; + AppleSignInNative n = lookupNative(); + if (n != null && n.isSupported()) { + signInNative(n, resolvedScopes, callback); + } else { + signInWeb(resolvedScopes, callback); + } + } + + private void signInNative(final AppleSignInNative n, + final String scopes, + final AppleSignInCallback callback) { + final byte[] rawNonce = SecureRandom.bytes(32); + final String plainNonce = strip(Base64.encodeUrlSafe(rawNonce)); + // Apple expects the SHA-256 hash of the nonce as the `nonce` value + // sent on the request; the returned ID token then carries the *hashed* + // value in its `nonce` claim. We hash it here. + byte[] hashed; + try { + hashed = Hash.sha256(plainNonce.getBytes("UTF-8")); + } catch (java.io.UnsupportedEncodingException e) { + hashed = Hash.sha256(plainNonce.getBytes()); + } + final String hashedNonce = strip(Base64.encodeUrlSafe(hashed)); + new Thread(new Runnable() { + public void run() { + try { + String packed = n.signIn(scopes, hashedNonce); + if (packed == null || packed.length() == 0) { + callback.onCancel(); + return; + } + AppleSignInResult result = parsePackedResult(packed); + if (result.getIdentityToken() == null) { + callback.onError("Apple Sign-In returned no identity token"); + return; + } + persistProfile(result); + setAccessToken(buildAccessToken(result)); + callback.onSuccess(result); + } catch (Throwable t) { + callback.onError(t.getMessage()); + } + } + }, "AppleSignIn-native").start(); + } + + private void signInWeb(final String scopes, final AppleSignInCallback callback) { + if (serviceId == null || webRedirectUri == null) { + callback.onError("AppleSignIn web fallback requires setServiceId() and setRedirectUri()"); + return; + } + // Apple advertises `.well-known/openid-configuration` -- discover then auth. + OidcClient.discover(APPLE_ISSUER) + .ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + OidcConfiguration cfg = client.getConfiguration(); + // Apple does NOT issue refresh tokens to public clients; require + // form_post + `response_mode` for compatibility. + client.setClientId(serviceId) + .setRedirectUri(webRedirectUri) + .setScopes(splitScopes(scopes)) + .setResponseMode("form_post"); + if (webClientSecret != null) { + client.setClientSecret(webClientSecret); + } + client.authorize() + .ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + AppleSignInResult r = fromOidcTokens(t); + persistProfile(r); + setAccessToken(t.toAccessToken()); + callback.onSuccess(r); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + if (err instanceof OidcException && + OidcException.USER_CANCELLED.equals( + ((OidcException) err).getError())) { + callback.onCancel(); + } else { + callback.onError(err.getMessage()); + } + } + }); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + callback.onError("Apple OIDC discovery failed: " + err.getMessage()); + } + }); + } + + private void persistProfile(AppleSignInResult result) { + if (result.getUserId() != null) { + Preferences.set(PREF_USER, result.getUserId()); + } + if (result.getEmail() != null) { + Preferences.set(PREF_EMAIL, result.getEmail()); + } + if (result.getFullName() != null) { + Preferences.set(PREF_NAME, result.getFullName()); + } + Preferences.set(PREF_LOGGED_IN, true); + } + + private AccessToken buildAccessToken(AppleSignInResult result) { + return new AccessToken( + result.getAuthorizationCode(), + null, + null, + result.getIdentityToken()); + } + + private static String[] splitScopes(String scopes) { + if (scopes == null) return new String[0]; + String trimmed = scopes.trim(); + if (trimmed.length() == 0) return new String[0]; + return com.codename1.util.StringUtil.tokenize(trimmed, ' ').toArray(new String[0]); + } + + private static AppleSignInResult parsePackedResult(String packed) { + String[] parts = explode(packed, '|', 6); + AppleSignInResult r = new AppleSignInResult(); + r.identityToken = empty(parts[0]) ? null : parts[0]; + r.authorizationCode = empty(parts[1]) ? null : parts[1]; + r.userId = empty(parts[2]) ? null : parts[2]; + String given = empty(parts[3]) ? null : parts[3]; + String family = empty(parts[4]) ? null : parts[4]; + r.email = empty(parts[5]) ? null : parts[5]; + if (given != null || family != null) { + r.fullName = (given == null ? "" : given) + + (given != null && family != null ? " " : "") + + (family == null ? "" : family); + } + // Backfill from preferences when Apple omits the profile on + // subsequent logins. + if (r.email == null) { + r.email = Preferences.get(PREF_EMAIL, (String) null); + } + if (r.fullName == null) { + r.fullName = Preferences.get(PREF_NAME, (String) null); + } + return r; + } + + private static AppleSignInResult fromOidcTokens(OidcTokens t) { + AppleSignInResult r = new AppleSignInResult(); + r.identityToken = t.getIdToken(); + r.authorizationCode = (String) t.getRawResponse().get("code"); + r.userId = t.getSubject(); + r.email = t.getEmail(); + Map claims = t.getIdTokenClaims(); + Object name = claims != null ? claims.get("name") : null; + if (name != null) { + r.fullName = name.toString(); + } + return r; + } + + private static String[] explode(String s, char sep, int expected) { + String[] out = new String[expected]; + for (int i = 0; i < expected; i++) { + out[i] = ""; + } + int idx = 0; + int start = 0; + int len = s.length(); + for (int i = 0; i < len; i++) { + if (s.charAt(i) == sep) { + if (idx < expected) { + out[idx++] = s.substring(start, i); + } + start = i + 1; + } + } + if (idx < expected) { + out[idx] = s.substring(start); + } + return out; + } + + private static boolean empty(String s) { + return s == null || s.length() == 0; + } + + private static String strip(String s) { + StringBuilder b = new StringBuilder(s.length()); + int len = s.length(); + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + if (c == '=' || c == '\n' || c == '\r') continue; + b.append(c); + } + return b.toString(); + } + + private static volatile AppleSignInNative CACHED_NATIVE; + private static volatile boolean NATIVE_PROBED; + private static AppleSignInNative lookupNative() { + if (NATIVE_PROBED) return CACHED_NATIVE; + synchronized (AppleSignIn.class) { + if (NATIVE_PROBED) return CACHED_NATIVE; + try { + CACHED_NATIVE = NativeLookup.create(AppleSignInNative.class); + } catch (Throwable t) { + CACHED_NATIVE = null; + } + NATIVE_PROBED = true; + return CACHED_NATIVE; + } + } + + /// Bridges [AppleSignInCallback] into the legacy [LoginCallback] used by + /// [Login#doLogin()]. + private final class LoginCallbackAdapter implements AppleSignInCallback { + public void onSuccess(AppleSignInResult result) { + // `callback` from Login is package-private; trigger success via setAccessToken side-effect. + if (callback != null) { + callback.loginSuccessful(); + } + } + + public void onError(String error) { + if (callback != null) { + callback.loginFailed(error); + } + } + + public void onCancel() { + if (callback != null) { + callback.loginFailed("cancelled"); + } + } + } +} diff --git a/CodenameOne/src/com/codename1/social/AppleSignInCallback.java b/CodenameOne/src/com/codename1/social/AppleSignInCallback.java new file mode 100644 index 0000000000..a506060230 --- /dev/null +++ b/CodenameOne/src/com/codename1/social/AppleSignInCallback.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +/// Callback for [AppleSignIn#signIn(String, AppleSignInCallback)]. Implement +/// the three terminal outcomes -- success, error, cancellation -- so the +/// caller can tell user-intent (cancel) apart from a real failure. +/// +/// @since 8.0 +public interface AppleSignInCallback { + + /// User completed the sheet successfully. + void onSuccess(AppleSignInResult result); + + /// A network or protocol error occurred. `error` is a short + /// human-readable string (may be `null` if the underlying layer did not + /// provide one). + void onError(String error); + + /// User dismissed the sheet without completing. + void onCancel(); +} diff --git a/CodenameOne/src/com/codename1/social/AppleSignInNative.java b/CodenameOne/src/com/codename1/social/AppleSignInNative.java new file mode 100644 index 0000000000..317b92418b --- /dev/null +++ b/CodenameOne/src/com/codename1/social/AppleSignInNative.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +import com.codename1.system.NativeInterface; + +/// Native bridge for `Sign in with Apple` on iOS 13+. The iOS port implements +/// this with `ASAuthorizationAppleIDProvider` and an +/// `ASAuthorizationController`. Other platforms leave it unimplemented; +/// [AppleSignIn] falls back to the web flow via +/// [com.codename1.io.oidc.OidcClient] instead. +/// +/// The native side serialises its result as a single pipe-delimited string +/// to keep the bridge boundary primitive-only: +/// +/// `{idToken}|{authorizationCode}|{user}|{givenName}|{familyName}|{email}` +/// +/// `null` segments are sent as empty strings. `user` is the stable opaque +/// identifier Apple returns; `givenName` / `familyName` / `email` are only +/// populated on the **first** authorization (Apple does not re-send the +/// profile on subsequent logins). The Java side persists them. +/// +/// @since 8.0 +public interface AppleSignInNative extends NativeInterface { + + /// Starts the system Sign-in-with-Apple sheet. The call blocks the + /// native thread until the user completes or cancels. + /// + /// #### Parameters + /// + /// - `scopes`: Space-separated scope list (e.g. `"name email"`). + /// - `nonce`: SHA-256 hash of the per-request nonce, base64url encoded. + /// Apple binds this to the returned ID token's `nonce` claim. + String signIn(String scopes, String nonce); + + /// Returns `true` if the user is currently signed in (i.e. the previously + /// returned credential is still valid in the Apple keychain). + boolean isLoggedIn(); + + /// Clears the current Apple credential from the app's keychain entry. + /// Apple does not provide an explicit sign-out -- this only removes the + /// local credential association so the next [#signIn(String, String)] + /// will prompt again. + void signOut(); +} diff --git a/CodenameOne/src/com/codename1/social/AppleSignInResult.java b/CodenameOne/src/com/codename1/social/AppleSignInResult.java new file mode 100644 index 0000000000..9416acba19 --- /dev/null +++ b/CodenameOne/src/com/codename1/social/AppleSignInResult.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +/// Successful outcome of an [AppleSignIn#signIn(String, AppleSignInCallback)] +/// call. +/// +/// Apple only returns the user's name and email on the **first** authorization +/// for a given app. On subsequent sign-ins those fields are absent in the +/// native callback; [AppleSignIn] backfills them from [com.codename1.io.Preferences] +/// when present, so the application sees a consistent result. +/// +/// @since 8.0 +public final class AppleSignInResult { + + String identityToken; + String authorizationCode; + String userId; + String email; + String fullName; + + AppleSignInResult() {} + + /// JWT identity token signed by Apple. Send to your backend, where you + /// must validate the signature against Apple's JWKS and check the + /// `aud` / `iss` / `exp` claims before trusting it. + public String getIdentityToken() { + return identityToken; + } + + /// Authorization code suitable for the server-side `client_secret` + /// token exchange (Apple does not expose refresh tokens to public + /// clients, so this is the only way to obtain one). + public String getAuthorizationCode() { + return authorizationCode; + } + + /// Stable opaque identifier ("user identifier" in Apple's docs). Treat + /// this as the user's primary key for your app. + public String getUserId() { + return userId; + } + + /// Email the user shared with the app. May be the real address, may be + /// a relay address (`@privaterelay.appleid.com`), or may be `null` if + /// the user has previously signed in and the email was already stored. + public String getEmail() { + return email; + } + + /// Full display name (given + family) on the first authorization; + /// previously-stored value otherwise; `null` if the user declined to + /// share it. + public String getFullName() { + return fullName; + } +} diff --git a/CodenameOne/src/com/codename1/social/Auth0Connect.java b/CodenameOne/src/com/codename1/social/Auth0Connect.java new file mode 100644 index 0000000000..6979ad48bb --- /dev/null +++ b/CodenameOne/src/com/codename1/social/Auth0Connect.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.util.AsyncResource; +import com.codename1.util.SuccessCallback; + +/// Sign-in via an Auth0 tenant. Auth0 is a fully OpenID-Connect compliant +/// provider so this class is a very thin convenience over +/// [com.codename1.io.oidc.OidcClient] -- it just builds the issuer URL from +/// the tenant domain and configures sensible defaults. +/// +/// ```java +/// Auth0Connect.getInstance() +/// .withDomain("dev-xyz.us.auth0.com") +/// .signIn( +/// "YOUR_AUTH0_CLIENT_ID", +/// "com.example.app:/oauth2redirect", +/// "openid", "email", "profile") +/// .ready(new SuccessCallback() { ... }); +/// ``` +/// +/// To request an Auth0 *audience* (so the access token can be used against +/// your custom API) pass it via [#withAudience(String)] before calling +/// [#signIn(String, String, String...)]. +/// +/// @since 8.0 +public final class Auth0Connect extends Login { + + private static Auth0Connect INSTANCE; + private String domain; + private String audience; + + private Auth0Connect() {} + + public static synchronized Auth0Connect getInstance() { + if (INSTANCE == null) { + INSTANCE = new Auth0Connect(); + } + return INSTANCE; + } + + /// Auth0 tenant domain (e.g. `"dev-xyz.us.auth0.com"`). Do not include + /// the protocol -- it is always `https://`. + public Auth0Connect withDomain(String domain) { + this.domain = domain; + return this; + } + + /// Optional `audience` parameter for API authorization. When set, the + /// access token issued by Auth0 will be a JWT valid against your API + /// identifier instead of the default opaque token. + public Auth0Connect withAudience(String audience) { + this.audience = audience; + return this; + } + + public String getDomain() { + return domain; + } + + public String getAudience() { + return audience; + } + + @Override + public boolean isNativeLoginSupported() { + return false; + } + + @Override + protected boolean validateToken(String token) { + return token != null && token.length() > 0; + } + + public AsyncResource signIn(final String clientId, + final String redirectUri, + final String... scopes) { + if (domain == null) { + AsyncResource err = new AsyncResource(); + err.error(new IllegalStateException( + "Auth0Connect requires withDomain(\"your-tenant.region.auth0.com\")")); + return err; + } + final AsyncResource out = new AsyncResource(); + OidcClient.discover("https://" + domain) + .ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + client.setClientId(clientId) + .setRedirectUri(redirectUri) + .setScopes(scopes != null && scopes.length > 0 + ? scopes + : new String[] {"openid", "email", + "profile", "offline_access"}); + if (audience != null) { + client.setAuthorizationParameters("audience", audience); + } + client.authorize() + .ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + setAccessToken(t.toAccessToken()); + out.complete(t); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + return out; + } +} diff --git a/CodenameOne/src/com/codename1/social/FacebookConnect.java b/CodenameOne/src/com/codename1/social/FacebookConnect.java index b22b426599..7ffa72b163 100644 --- a/CodenameOne/src/com/codename1/social/FacebookConnect.java +++ b/CodenameOne/src/com/codename1/social/FacebookConnect.java @@ -28,7 +28,12 @@ import com.codename1.io.Log; import com.codename1.io.NetworkManager; import com.codename1.io.Oauth2; +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcConfiguration; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.util.AsyncResource; import com.codename1.util.Callback; +import com.codename1.util.SuccessCallback; import java.util.Arrays; @@ -245,6 +250,63 @@ public void inviteFriends(String appLinkUrl, String previewImageUrl) { public void inviteFriends(String appLinkUrl, String previewImageUrl, final Callback cb) { } + /// Modern Facebook Login. Goes through Facebook's OAuth 2.0 endpoints + /// via the system browser ([com.codename1.io.oidc.SystemBrowser]), + /// independent of the native Facebook SDK. Use this method for + /// browser-based and cross-platform consistency; the older + /// [#doLogin()] path remains for code that depends on the iOS/Android + /// Facebook SDK integration. + /// + /// #### Parameters + /// + /// - `appId`: Facebook App ID. + /// - `redirectUri`: Must match a Valid OAuth Redirect URI configured + /// in the app dashboard. + /// - `permissions`: Facebook permissions (`public_profile`, `email`, ...). + /// Defaults to `public_profile email` when empty. + /// + /// #### Returns + /// + /// An [AsyncResource] resolving to the granted access token wrapped in + /// [OidcTokens] (note: Facebook does not issue OIDC ID tokens for + /// classic OAuth flows -- `getIdToken()` will be `null`; use + /// `getAccessToken()` and call the Graph API to read user profile data). + /// + /// #### Since + /// + /// 8.0 + public AsyncResource signIn(String appId, + String redirectUri, + String... permissions) { + OidcConfiguration cfg = OidcConfiguration.newBuilder() + .issuer("https://www.facebook.com") + .authorizationEndpoint("https://www.facebook.com/v18.0/dialog/oauth") + .tokenEndpoint("https://graph.facebook.com/v18.0/oauth/access_token") + .build(); + OidcClient client = OidcClient.create(cfg) + .setClientId(appId) + .setRedirectUri(redirectUri) + .setScopes(permissions == null || permissions.length == 0 + ? new String[] {"public_profile", "email"} + : permissions) + // Facebook does not echo a nonce; skip the check. + .setEnforceNonce(false); + final AsyncResource out = new AsyncResource(); + client.authorize() + .ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + setAccessToken(t.toAccessToken()); + out.complete(t); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + return out; + } + /// Returns true if inviteFriends is implemented, it is supported on iOS and /// Android /// diff --git a/CodenameOne/src/com/codename1/social/FirebaseAuth.java b/CodenameOne/src/com/codename1/social/FirebaseAuth.java new file mode 100644 index 0000000000..680b6cb3dd --- /dev/null +++ b/CodenameOne/src/com/codename1/social/FirebaseAuth.java @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +import com.codename1.io.ConnectionRequest; +import com.codename1.io.JSONParser; +import com.codename1.io.NetworkManager; +import com.codename1.io.Preferences; +import com.codename1.io.Util; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.util.AsyncResource; +import com.codename1.util.StringUtil; +import com.codename1.util.regex.StringReader; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/// Firebase Authentication client backed by the Identity Toolkit REST API. +/// Firebase is **not** an OIDC provider per se -- it issues its own ID tokens +/// minted by Google's Identity Toolkit -- so this class does not extend +/// [Login]; it stands alone with its own state. +/// +/// Supports the three flows that work without the Firebase native SDK: +/// +/// - `signInWithEmailAndPassword(email, password)` (Email/Password provider) +/// - `signUp(email, password)` (creates a new account) +/// - `refresh(refreshToken)` (uses the Secure Token Service endpoint) +/// +/// For *federated* sign-in (Google, Apple, Microsoft, etc.) use the +/// matching `*Connect` class to obtain an OIDC ID token, then call +/// [#signInWithIdpIdToken(String, String)] to swap it for a Firebase token. +/// +/// Tokens are persisted to [Preferences] under a `cn1.firebase.*` namespace. +/// They are **not** encrypted-at-rest by default -- bring your own +/// [com.codename1.io.oidc.TokenStore] strategy if that matters to you. +/// +/// @since 8.0 +public final class FirebaseAuth { + + private static final String PREF_ID = "cn1.firebase.idToken"; + private static final String PREF_REFRESH = "cn1.firebase.refreshToken"; + private static final String PREF_UID = "cn1.firebase.uid"; + private static final String PREF_EXPIRES = "cn1.firebase.expiresAt"; + + private static FirebaseAuth INSTANCE; + private String apiKey; + + private FirebaseAuth() {} + + public static synchronized FirebaseAuth getInstance() { + if (INSTANCE == null) { + INSTANCE = new FirebaseAuth(); + } + return INSTANCE; + } + + /// The *Web API key* from the Firebase console (Project Settings → General + /// → Your apps → Web API key). Required before any of the sign-in methods + /// will work. + public FirebaseAuth withApiKey(String apiKey) { + this.apiKey = apiKey; + return this; + } + + /// Last-known Firebase user identifier (`localId` from Firebase's REST + /// API), or `null` if no one is signed in. + public String getUid() { + return Preferences.get(PREF_UID, (String) null); + } + + /// Currently-stored Firebase ID token. Call [#refresh()] if it is expired + /// or [#signInWithEmailAndPassword(String, String)] for a fresh session. + public String getIdToken() { + return Preferences.get(PREF_ID, (String) null); + } + + /// `true` if a token is stored and not past its expiry. + public boolean isSignedIn() { + if (getIdToken() == null) return false; + long exp = Preferences.get(PREF_EXPIRES, 0L); + return exp == 0L || exp > System.currentTimeMillis(); + } + + /// Clears the locally stored Firebase session. Does not revoke the + /// refresh token on Google's side. + public void signOut() { + Preferences.delete(PREF_ID); + Preferences.delete(PREF_REFRESH); + Preferences.delete(PREF_UID); + Preferences.delete(PREF_EXPIRES); + } + + /// Email + password sign-in via Identity Toolkit's + /// `accounts:signInWithPassword` endpoint. + public AsyncResource signInWithEmailAndPassword(String email, + String password) { + Map body = new HashMap(); + body.put("email", email); + body.put("password", password); + body.put("returnSecureToken", "true"); + return postJson( + "https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword", + body); + } + + /// Creates a new account via `accounts:signUp`. Returns the new + /// [FirebaseUser] just like [#signInWithEmailAndPassword(String, String)]. + public AsyncResource signUp(String email, String password) { + Map body = new HashMap(); + body.put("email", email); + body.put("password", password); + body.put("returnSecureToken", "true"); + return postJson( + "https://identitytoolkit.googleapis.com/v1/accounts:signUp", + body); + } + + /// Exchanges an OIDC ID token obtained via [GoogleConnect], [AppleSignIn], + /// [MicrosoftConnect] or similar for a Firebase session. `providerId` + /// must be a Firebase-recognised identifier such as `"google.com"`, + /// `"apple.com"`, `"microsoft.com"`, `"facebook.com"`, `"twitter.com"`. + public AsyncResource signInWithIdpIdToken(String idToken, + String providerId) { + Map body = new HashMap(); + body.put("postBody", "id_token=" + idToken + "&providerId=" + providerId); + body.put("requestUri", "http://localhost"); + body.put("returnSecureToken", "true"); + body.put("returnIdpCredential", "true"); + return postJson( + "https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp", + body); + } + + /// Refreshes the stored session using the saved refresh token. Falls + /// through with the currently-cached [FirebaseUser] when no refresh + /// token is on file. + public AsyncResource refresh() { + String rt = Preferences.get(PREF_REFRESH, (String) null); + if (rt == null) { + AsyncResource noop = new AsyncResource(); + noop.complete(null); + return noop; + } + return refresh(rt); + } + + /// Same as [#refresh()] but takes an explicit refresh token. + public AsyncResource refresh(String refreshToken) { + Map body = new HashMap(); + body.put("grant_type", "refresh_token"); + body.put("refresh_token", refreshToken); + return postForm( + "https://securetoken.googleapis.com/v1/token", + body, + /* refreshFlow= */ true); + } + + // ----------------------------------------------------------------- + + private AsyncResource postJson(final String urlBase, + final Map body) { + return enqueue(urlBase + "?key=" + apiKey, body, "application/json", false); + } + + private AsyncResource postForm(final String url, + final Map body, + final boolean refreshFlow) { + return enqueue(url + "?key=" + apiKey, body, + "application/x-www-form-urlencoded", refreshFlow); + } + + private AsyncResource enqueue(final String url, + final Map body, + final String contentType, + final boolean refreshFlow) { + final AsyncResource out = new AsyncResource(); + if (apiKey == null) { + out.error(new IllegalStateException( + "FirebaseAuth.withApiKey(\"...\") must be called first")); + return out; + } + ConnectionRequest req = new ConnectionRequest() { + protected void readResponse(InputStream input) throws IOException { + byte[] bytes = Util.readInputStream(input); + String json = StringUtil.newString(bytes); + Map parsed = new JSONParser() + .parseJSON(new StringReader(json)); + if (parsed == null) { + out.error(new IOException("Firebase returned empty body")); + return; + } + Object err = parsed.get("error"); + if (err != null) { + String message = "Firebase error"; + if (err instanceof Map) { + Object m = ((Map) err).get("message"); + if (m != null) message = m.toString(); + } + out.error(new IOException(message)); + return; + } + FirebaseUser u = new FirebaseUser(parsed, refreshFlow); + persist(u); + out.complete(u); + } + + protected void handleException(Exception err) { + out.error(err); + } + }; + req.setUrl(url); + req.setPost(true); + req.setReadResponseForErrors(true); + if ("application/json".equals(contentType)) { + req.addRequestHeader("Content-Type", "application/json"); + req.setRequestBody(toJson(body)); + } else { + req.addRequestHeader("Content-Type", contentType); + for (Map.Entry e : body.entrySet()) { + req.addArgument(e.getKey(), e.getValue()); + } + } + NetworkManager.getInstance().addToQueue(req); + return out; + } + + private void persist(FirebaseUser u) { + if (u.getIdToken() != null) { + Preferences.set(PREF_ID, u.getIdToken()); + } + if (u.getRefreshToken() != null) { + Preferences.set(PREF_REFRESH, u.getRefreshToken()); + } + if (u.getUid() != null) { + Preferences.set(PREF_UID, u.getUid()); + } + if (u.getExpiresAt() != null) { + Preferences.set(PREF_EXPIRES, u.getExpiresAt().getTime()); + } + } + + private static String toJson(Map m) { + StringBuilder b = new StringBuilder("{"); + boolean first = true; + for (Map.Entry e : m.entrySet()) { + if (!first) b.append(','); + first = false; + b.append('"').append(escape(e.getKey())).append("\":"); + b.append('"').append(escape(e.getValue())).append('"'); + } + b.append('}'); + return b.toString(); + } + + private static String escape(String s) { + StringBuilder b = new StringBuilder(s.length() + 8); + int len = s.length(); + for (int i = 0; i < len; i++) { + char c = s.charAt(i); + switch (c) { + case '"': b.append("\\\""); break; + case '\\': b.append("\\\\"); break; + case '\n': b.append("\\n"); break; + case '\r': b.append("\\r"); break; + case '\t': b.append("\\t"); break; + default: + if (c < 0x20) { + String hex = Integer.toHexString(c); + b.append("\\u"); + for (int p = hex.length(); p < 4; p++) b.append('0'); + b.append(hex); + } else { + b.append(c); + } + } + } + return b.toString(); + } + + /// Successfully-resolved Firebase session: ID token, refresh token, the + /// stable `localId`, the user's email when present, and the absolute + /// expiry computed from `expiresIn`. + public static final class FirebaseUser { + private final String idToken; + private final String refreshToken; + private final String uid; + private final String email; + private final Date expiresAt; + private final Map claims; + + FirebaseUser(Map json, boolean refreshFlow) { + if (refreshFlow) { + this.idToken = strVal(json, "id_token"); + this.refreshToken = strVal(json, "refresh_token"); + this.uid = strVal(json, "user_id"); + this.email = null; + long secs = longVal(json, "expires_in"); + this.expiresAt = secs > 0 + ? new Date(System.currentTimeMillis() + secs * 1000L) + : null; + } else { + this.idToken = strVal(json, "idToken"); + this.refreshToken = strVal(json, "refreshToken"); + this.uid = strVal(json, "localId"); + this.email = strVal(json, "email"); + long secs = longVal(json, "expiresIn"); + this.expiresAt = secs > 0 + ? new Date(System.currentTimeMillis() + secs * 1000L) + : null; + } + this.claims = idToken != null + ? OidcTokens.decodeIdTokenClaims(idToken) + : null; + } + + public String getIdToken() { return idToken; } + public String getRefreshToken() { return refreshToken; } + public String getUid() { return uid; } + public String getEmail() { + if (email != null) return email; + return claims != null && claims.get("email") != null + ? claims.get("email").toString() : null; + } + public Date getExpiresAt() { return expiresAt; } + public Map getIdTokenClaims() { return claims; } + + private static String strVal(Map json, String k) { + Object v = json.get(k); + return v == null ? null : v.toString(); + } + + private static long longVal(Map json, String k) { + Object v = json.get(k); + if (v == null) return 0L; + try { + String raw = v.toString(); + int dot = raw.indexOf('.'); + if (dot >= 0) raw = raw.substring(0, dot); + return Long.parseLong(raw); + } catch (NumberFormatException nfe) { + return 0L; + } + } + } +} diff --git a/CodenameOne/src/com/codename1/social/GoogleConnect.java b/CodenameOne/src/com/codename1/social/GoogleConnect.java index 14e8642ce5..44f6ec5259 100644 --- a/CodenameOne/src/com/codename1/social/GoogleConnect.java +++ b/CodenameOne/src/com/codename1/social/GoogleConnect.java @@ -25,24 +25,35 @@ import com.codename1.io.ConnectionRequest; import com.codename1.io.NetworkManager; import com.codename1.io.Oauth2; +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.util.AsyncResource; +import com.codename1.util.SuccessCallback; import java.util.Arrays; import java.util.Hashtable; -/// The GoogleConnect Login class allows the sign in with google functionality. -/// The GoogleConnect requires to create a corresponding google cloud project. -/// To enable the GoogleConnect to sign-in on the Simulator create a corresponding -/// web login - https://developers.google.com/+/web/signin/ +/// Sign-in-with-Google for Codename One. /// -/// To enable the GoogleConnect to sign-in on Android -/// Follow step 1 from here - https://developers.google.com/+/mobile/android/getting-started +/// As of 2025 Google replaced the legacy Sign-In SDK with the Google Identity +/// Services (GIS) family of APIs. GIS encourages the OAuth 2.0 authorization +/// code flow with PKCE driven from the system browser -- exactly what +/// [com.codename1.io.oidc.OidcClient] does. New apps should call +/// [#signIn(String, String, String[])] which goes through that modern path +/// and works on every Codename One platform without a native SDK dependency. /// -/// To enable the GoogleConnect to sign-in on iOS -/// follow step 1 from here - https://developers.google.com/+/mobile/ios/getting-started +/// The older [#doLogin()] / [#nativelogin()] path remains for source +/// compatibility, and on iOS / Android it still delegates to the native +/// implementation provided by the port (see `Ports/iOSPort` and +/// `Ports/Android`). On other platforms the legacy path also now goes +/// through `OidcClient` instead of the deprecated [Oauth2] in-app WebView. /// /// @author Chen public class GoogleConnect extends Login { + /// Google's well-known OIDC issuer. + public static final String GOOGLE_ISSUER = "https://accounts.google.com"; + private static final String tokenURL = "https://www.googleapis.com/oauth2/v3/token"; private static final Object INSTANCE_LOCK = new Object(); static Class implClass; @@ -95,6 +106,72 @@ protected Oauth2 createOauth2() { return new Oauth2(oauth2URL, clientId, redirectURI, scope, tokenURL, clientSecret, params); } + /// Modern Google sign-in. Goes through the Google Identity Services OIDC + /// endpoints with PKCE, using the system browser. Works the same on every + /// platform (iOS, Android, JavaSE, Web) provided the platform port wires + /// the system browser native interface; otherwise it falls back to an + /// in-app browser window. + /// + /// #### Parameters + /// + /// - `clientId`: OAuth 2.0 client ID issued in Google Cloud Console. + /// Use the *iOS / Android* client for the matching native build, or the + /// *Web* client when running in the simulator / web port. + /// - `redirectUri`: Redirect URI registered for that client. Custom + /// schemes (`com.example.app:/oauth2redirect`) for mobile; HTTPS + /// for web. + /// - `scopes`: OAuth scopes to request -- include `openid email profile` + /// to get an ID token plus user metadata, plus any Google API scopes + /// you need. + /// + /// #### Returns + /// + /// An [AsyncResource] resolving to the [OidcTokens] for the signed-in + /// user. + /// + /// #### Since + /// + /// 8.0 + public AsyncResource signIn(final String clientId, + final String redirectUri, + final String... scopes) { + final AsyncResource out = new AsyncResource(); + OidcClient.discover(GOOGLE_ISSUER) + .ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + client.setClientId(clientId) + .setRedirectUri(redirectUri) + .setScopes(scopes != null && scopes.length > 0 + ? scopes + : new String[] {"openid", "email", "profile"}) + // `access_type=offline` is Google-specific and is needed + // to get a refresh token; `prompt=consent` forces the + // refresh-token grant on subsequent sign-ins. + .setAuthorizationParameters( + "access_type", "offline", + "prompt", "consent"); + client.authorize() + .ready(new SuccessCallback() { + public void onSucess(OidcTokens tokens) { + setAccessToken(tokens.toAccessToken()); + out.complete(tokens); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + return out; + } + @Override protected boolean validateToken(String token) { //make a call to the API if the return value is 40X the token is not diff --git a/CodenameOne/src/com/codename1/social/MicrosoftConnect.java b/CodenameOne/src/com/codename1/social/MicrosoftConnect.java new file mode 100644 index 0000000000..57e4d2cd93 --- /dev/null +++ b/CodenameOne/src/com/codename1/social/MicrosoftConnect.java @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.util.AsyncResource; +import com.codename1.util.SuccessCallback; + +/// Sign-in with a Microsoft account (personal, work, or school) backed by +/// Microsoft Entra ID (formerly Azure Active Directory). Wraps +/// [com.codename1.io.oidc.OidcClient] against Microsoft's +/// `v2.0/.well-known/openid-configuration` endpoint. +/// +/// On iOS and Android, where Microsoft ships the MSAL SDK with broker +/// integration (Microsoft Authenticator, Company Portal), this class still +/// uses the system browser flow -- MSAL's broker is only available when the +/// app embeds the native MSAL SDK and is configured for the conditional +/// access scenarios that require it. For 95% of Codename One apps the +/// system-browser flow is the right answer, and lets the same code work in +/// the simulator and on the web port. +/// +/// ```java +/// MicrosoftConnect.getInstance() +/// .withTenant("common") // or your tenant GUID +/// .signIn( +/// "YOUR_CLIENT_ID", +/// "com.example.app:/oauth2redirect", +/// "openid", "email", "profile", "User.Read") +/// .ready(new SuccessCallback() { +/// public void onSucess(OidcTokens t) { ... } +/// }); +/// ``` +/// +/// @since 8.0 +public final class MicrosoftConnect extends Login { + + /// "common" -- accepts personal, work, and school accounts. Use this for + /// most multi-tenant apps. Pass a tenant GUID to restrict to a single + /// Entra ID tenant; pass "organizations" for work/school only; + /// "consumers" for personal only. + public static final String COMMON_TENANT = "common"; + + private static MicrosoftConnect INSTANCE; + private String tenant = COMMON_TENANT; + + private MicrosoftConnect() {} + + public static synchronized MicrosoftConnect getInstance() { + if (INSTANCE == null) { + INSTANCE = new MicrosoftConnect(); + } + return INSTANCE; + } + + /// Picks the Entra ID tenant to target. Pass [#COMMON_TENANT], + /// `"organizations"`, `"consumers"`, or a tenant GUID / verified domain + /// (e.g. `"contoso.onmicrosoft.com"`). + public MicrosoftConnect withTenant(String tenant) { + this.tenant = tenant != null ? tenant : COMMON_TENANT; + return this; + } + + public String getTenant() { + return tenant; + } + + @Override + public boolean isNativeLoginSupported() { + return false; + } + + @Override + protected boolean validateToken(String token) { + return token != null && token.length() > 0; + } + + /// Drives a full authorization-code-with-PKCE sign-in through the system + /// browser and resolves with the issued tokens. + public AsyncResource signIn(final String clientId, + final String redirectUri, + final String... scopes) { + final AsyncResource out = new AsyncResource(); + String issuer = "https://login.microsoftonline.com/" + tenant + "/v2.0"; + OidcClient.discover(issuer) + .ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + client.setClientId(clientId) + .setRedirectUri(redirectUri) + .setScopes(scopes != null && scopes.length > 0 + ? scopes + : new String[] {"openid", "email", "profile", + "offline_access"}); + client.authorize() + .ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + setAccessToken(t.toAccessToken()); + out.complete(t); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + } + }) + .except(new SuccessCallback() { + public void onSucess(Throwable err) { + out.error(err); + } + }); + return out; + } +} diff --git a/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java b/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java new file mode 100644 index 0000000000..eb1aebd402 --- /dev/null +++ b/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.io.oidc; + +import android.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import androidx.browser.customtabs.CustomTabsIntent; +import com.codename1.impl.android.AndroidNativeUtil; +import com.codename1.impl.android.LifecycleListener; + +/** + * Android implementation of {@link OidcBrowserNative} backed by + * {@code androidx.browser.customtabs.CustomTabsIntent}. + * + *

Flow: + * + *

    + *
  1. {@link #startAuthorization(String, String)} is called from a worker thread. + *
  2. We launch a Custom Tabs intent at the authorization URL. + *
  3. The identity provider eventually redirects to a URL on the registered + * custom scheme (e.g. {@code com.example.app:/oauth2redirect?code=...}). + *
  4. Android delivers that as an intent to {@code CodenameOneActivity}; we + * observe it via a {@link LifecycleListener#onResume()} callback. + *
  5. The worker thread unblocks and returns the redirect URL to Java. + *
+ * + *

The application must register an intent filter for the redirect URI + * scheme in its {@code AndroidManifest.xml}. Add the {@code android.xintent_filter} + * build hint pointing at your main activity: + * + *

{@code
+ * android.xintent_filter=\n
+ *   \n
+ *   \n
+ *   \n
+ *   \n
+ * 
+ * }
+ */ +public class OidcBrowserNativeImpl implements OidcBrowserNative { + + /** Guards {@link #pendingScheme} / {@link #resultUrl} and acts as a wait monitor. */ + private static final Object LOCK = new Object(); + + /** Scheme half of the current flow's redirect URI, e.g. {@code "com.example.app"}. */ + private static String pendingScheme; + + /** Captured redirect URL once it arrives. */ + private static String resultUrl; + + /** Single shared lifecycle listener; installed lazily on first call. */ + private static LifecycleListener installedListener; + + @Override + public boolean isSupported() { + return AndroidNativeUtil.getActivity() != null; + } + + @Override + public String startAuthorization(final String authUrl, final String redirectScheme) { + final Activity activity = AndroidNativeUtil.getActivity(); + if (activity == null) { + return null; + } + if (authUrl == null || redirectScheme == null) { + return null; + } + + installRedirectListenerOnce(); + + synchronized (LOCK) { + pendingScheme = redirectScheme; + resultUrl = null; + } + + // Open the Custom Tab on the UI thread; the user is sent away from the + // app and will be brought back via the registered intent filter. + activity.runOnUiThread(new Runnable() { + public void run() { + try { + CustomTabsIntent customTabs = + new CustomTabsIntent.Builder().build(); + customTabs.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + customTabs.launchUrl(activity, Uri.parse(authUrl)); + } catch (Throwable t) { + // Fallback to ACTION_VIEW if Custom Tabs is unavailable for + // any reason (e.g. no Chrome / Custom-Tabs-capable browser + // installed). Most users will still complete the flow. + Intent fallback = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)); + fallback.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + activity.startActivity(fallback); + } + } + }); + + // Block the calling worker thread until onResume captures the redirect + // (or until an hour passes -- the cap is purely defensive). + synchronized (LOCK) { + long deadline = System.currentTimeMillis() + 3600 * 1000L; + while (resultUrl == null) { + long remaining = deadline - System.currentTimeMillis(); + if (remaining <= 0) { + pendingScheme = null; + return null; + } + try { + LOCK.wait(remaining); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + pendingScheme = null; + return null; + } + } + String r = resultUrl; + resultUrl = null; + pendingScheme = null; + return r; + } + } + + private void installRedirectListenerOnce() { + synchronized (LOCK) { + if (installedListener != null) { + return; + } + installedListener = new RedirectLifecycleListener(); + AndroidNativeUtil.addLifecycleListener(installedListener); + } + } + + /** + * Listens for the activity returning to the foreground and snapshots the + * intent if it carries a URL on our pending redirect scheme. Stays + * installed for the lifetime of the process so multiple sign-in flows + * over time all hit the same hook. + */ + private static final class RedirectLifecycleListener implements LifecycleListener { + public void onCreate(Bundle savedInstanceState) {} + public void onPause() {} + public void onDestroy() {} + public void onSaveInstanceState(Bundle b) {} + public void onLowMemory() {} + + public void onResume() { + Activity act = AndroidNativeUtil.getActivity(); + if (act == null) return; + Intent intent = act.getIntent(); + if (intent == null) return; + Uri data = intent.getData(); + if (data == null) return; + String scheme = data.getScheme(); + if (scheme == null) return; + String full = data.toString(); + synchronized (LOCK) { + if (pendingScheme == null) { + return; + } + // Match either the literal scheme (`com.example.app`) or the + // full URI prefix (`https://example.com/cb`). + boolean match = scheme.equalsIgnoreCase(pendingScheme) + || full.startsWith(pendingScheme); + if (!match) { + return; + } + resultUrl = full; + // Reset the intent data so a subsequent resume after rotation + // does not re-trigger. + intent.setData(null); + LOCK.notifyAll(); + } + } + } +} diff --git a/Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java b/Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java new file mode 100644 index 0000000000..5770f6252e --- /dev/null +++ b/Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ +package com.codename1.social; + +/** + * Apple does not ship a native Sign-in-with-Apple SDK for Android; the + * supported flow on Android is Apple's web-based authorization endpoint + * (the same one the Services ID is configured for). This implementation + * reports {@link #isSupported()} = {@code false} so that the Java-side + * {@link AppleSignIn} class falls back to its {@code OidcClient} + + * {@code SystemBrowser} path -- which on Android resolves to a Custom Tab + * over the Apple `https://appleid.apple.com/auth/authorize` endpoint. + * + *

The class exists chiefly to make the {@code NativeLookup} probe in + * {@link AppleSignIn#lookupNative()} non-null so we explicitly answer the + * "is this platform native?" question instead of falling through to a + * {@code ClassNotFoundException} swallowed deep inside {@code NativeLookup}. + */ +public class AppleSignInNativeImpl implements AppleSignInNative { + + @Override + public boolean isSupported() { + return false; + } + + @Override + public String signIn(String scopes, String nonce) { + return null; + } + + @Override + public boolean isLoggedIn() { + return false; + } + + @Override + public void signOut() { + // No-op: the OidcClient-backed AppleSignIn fallback drives its own + // token cache. + } +} diff --git a/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h b/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h new file mode 100644 index 0000000000..85e095ea7e --- /dev/null +++ b/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ + +#import + +@interface com_codename1_io_oidc_OidcBrowserNativeImpl : NSObject + +- (NSString *)startAuthorization:(NSString *)authUrl param1:(NSString *)redirectScheme; +- (BOOL)isSupported; + +@end diff --git a/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m b/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m new file mode 100644 index 0000000000..137a38fb13 --- /dev/null +++ b/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ + +#import "com_codename1_io_oidc_OidcBrowserNativeImpl.h" +#import +#import + +/// ASWebAuthenticationPresentationContextProviding wrapper that vends the +/// current keyWindow back to the system. iOS 13+ requires a non-nil context +/// provider before -[ASWebAuthenticationSession start] will succeed. We hold +/// a strong reference on the session itself for the duration of the flow. +API_AVAILABLE(ios(12.0)) +@interface CN1OidcAuthContext : NSObject +@end + +@implementation CN1OidcAuthContext + +- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session API_AVAILABLE(ios(13.0)) { + UIWindow *anchor = nil; + if (@available(iOS 13.0, *)) { + for (UIScene *scene in [UIApplication sharedApplication].connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive && + [scene isKindOfClass:[UIWindowScene class]]) { + UIWindowScene *ws = (UIWindowScene *)scene; + for (UIWindow *w in ws.windows) { + if (w.isKeyWindow) { + anchor = w; + break; + } + } + if (anchor) break; + if (ws.windows.count > 0) { + anchor = ws.windows.firstObject; + break; + } + } + } + } + if (!anchor) { + // Fallback path; on iOS 13+ UIApplication.keyWindow is deprecated but + // still works, on iOS 12 it is the only option. The deprecation is + // expected -- silence the warning on this single call. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + anchor = [UIApplication sharedApplication].keyWindow; + if (!anchor) { + // Last-ditch: any window that exists. + for (UIWindow *w in [UIApplication sharedApplication].windows) { + if (w) { anchor = w; break; } + } + } +#pragma clang diagnostic pop + } + return anchor; +} + +@end + +@implementation com_codename1_io_oidc_OidcBrowserNativeImpl { + // Strongly-held during a flow so ARC does not deallocate the session + // while the user is signing in. + id _currentSession; + CN1OidcAuthContext *_currentContext; +} + +- (BOOL)isSupported { + if (@available(iOS 12.0, *)) { + return YES; + } + return NO; +} + +- (NSString *)startAuthorization:(NSString *)param param1:(NSString *)param1 { + NSString *authUrl = param; + NSString *redirectScheme = param1; + if (authUrl == nil || redirectScheme == nil) { + return nil; + } + if (@available(iOS 12.0, *)) { + // Block the calling (background) thread until the OS sheet completes. + // ASWebAuthenticationSession must be created and started on the main + // thread; we dispatch_async over and wait on a semaphore. + dispatch_semaphore_t sem = dispatch_semaphore_create(0); + __block NSString *result = nil; + __block NSError *failure = nil; + + NSURL *url = [NSURL URLWithString:authUrl]; + if (url == nil) { + return nil; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + ASWebAuthenticationSession *session = + [[ASWebAuthenticationSession alloc] initWithURL:url + callbackURLScheme:redirectScheme + completionHandler:^(NSURL * _Nullable callbackURL, NSError * _Nullable error) { + if (callbackURL) { + result = [callbackURL absoluteString]; + } else if (error) { + failure = error; + } + self->_currentSession = nil; + self->_currentContext = nil; + dispatch_semaphore_signal(sem); + }]; + + // iOS 13+ requires a presentation context provider; on iOS 12 the + // property exists but is optional. + if (@available(iOS 13.0, *)) { + CN1OidcAuthContext *ctx = [[CN1OidcAuthContext alloc] init]; + self->_currentContext = ctx; + session.presentationContextProvider = ctx; + // Force a fresh sign-in UI -- avoids surprising cookie reuse from + // a prior unrelated provider in the same scheme. + session.prefersEphemeralWebBrowserSession = NO; + } + self->_currentSession = session; + BOOL started = [session start]; + if (!started) { + failure = [NSError errorWithDomain:@"com.codename1.io.oidc" + code:-1 + userInfo:@{NSLocalizedDescriptionKey: @"ASWebAuthenticationSession refused to start"}]; + self->_currentSession = nil; + self->_currentContext = nil; + dispatch_semaphore_signal(sem); + } + }); + + // Cap the wait at one hour. A real-world user finishes in seconds; the + // cap exists so a stuck flow eventually unwinds instead of holding the + // thread forever. + dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3600 * NSEC_PER_SEC))); + + if (failure) { + // User cancellation comes back as ASWebAuthenticationSessionErrorCodeCanceledLogin + // (code 1) on iOS 12+. Return nil so the Java side reports USER_CANCELLED. + return nil; + } + return result; + } + return nil; +} + +@end diff --git a/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h b/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h new file mode 100644 index 0000000000..24a95cd03d --- /dev/null +++ b/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ + +#import + +@interface com_codename1_social_AppleSignInNativeImpl : NSObject + +- (NSString *)signIn:(NSString *)scopes param1:(NSString *)nonce; +- (BOOL)isLoggedIn; +- (void)signOut; +- (BOOL)isSupported; + +@end diff --git a/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m b/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m new file mode 100644 index 0000000000..1ed1647cdd --- /dev/null +++ b/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m @@ -0,0 +1,231 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ + +#import "com_codename1_social_AppleSignInNativeImpl.h" +#import +#import + +/// User-defaults key under which we remember the Apple `user identifier` +/// returned on a successful sign-in. ASAuthorizationAppleIDProvider exposes +/// `getCredentialStateForUserID:` which lets us tell whether that credential +/// is still valid for the bundle; that is the most accurate "isLoggedIn?" +/// signal on iOS. +static NSString * const kCN1AppleUserDefaultsKey = @"cn1.applesignin.userid"; + +/// Delegate + presentation provider that drives a single sign-in attempt. +/// Outlives the call to ASAuthorizationController.performRequests by being +/// strongly held on the impl class until the delegate fires. +API_AVAILABLE(ios(13.0)) +@interface CN1AppleSignInDelegate : NSObject +@property (nonatomic, strong) NSString *resultString; +@property (nonatomic, strong) NSError *errorResult; +@property (nonatomic, copy) void(^completion)(void); +@end + +@implementation CN1AppleSignInDelegate + +- (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller { + UIWindow *anchor = nil; + if (@available(iOS 13.0, *)) { + for (UIScene *scene in [UIApplication sharedApplication].connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive && + [scene isKindOfClass:[UIWindowScene class]]) { + UIWindowScene *ws = (UIWindowScene *)scene; + for (UIWindow *w in ws.windows) { + if (w.isKeyWindow) { anchor = w; break; } + } + if (anchor) break; + if (ws.windows.count > 0) { + anchor = ws.windows.firstObject; + break; + } + } + } + } + if (!anchor) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + anchor = [UIApplication sharedApplication].keyWindow; +#pragma clang diagnostic pop + } + return anchor; +} + +- (void)authorizationController:(ASAuthorizationController *)controller + didCompleteWithAuthorization:(ASAuthorization *)authorization { + if (![authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) { + self.errorResult = [NSError errorWithDomain:@"com.codename1.social.AppleSignIn" + code:-1 + userInfo:@{NSLocalizedDescriptionKey: @"Unexpected credential type"}]; + if (self.completion) self.completion(); + return; + } + ASAuthorizationAppleIDCredential *cred = (ASAuthorizationAppleIDCredential *)authorization.credential; + + NSString *identityToken = nil; + if (cred.identityToken) { + identityToken = [[NSString alloc] initWithData:cred.identityToken encoding:NSUTF8StringEncoding]; + } + NSString *authorizationCode = nil; + if (cred.authorizationCode) { + authorizationCode = [[NSString alloc] initWithData:cred.authorizationCode encoding:NSUTF8StringEncoding]; + } + NSString *userId = cred.user ?: @""; + NSString *given = cred.fullName.givenName ?: @""; + NSString *family = cred.fullName.familyName ?: @""; + NSString *email = cred.email ?: @""; + + // Persist the user id so subsequent isLoggedIn checks can ask the OS + // about credential state. + if (cred.user) { + [[NSUserDefaults standardUserDefaults] setObject:cred.user forKey:kCN1AppleUserDefaultsKey]; + } + + self.resultString = [NSString stringWithFormat:@"%@|%@|%@|%@|%@|%@", + identityToken ?: @"", + authorizationCode ?: @"", + userId, + given, + family, + email]; + if (self.completion) self.completion(); +} + +- (void)authorizationController:(ASAuthorizationController *)controller + didCompleteWithError:(NSError *)error { + self.errorResult = error; + if (self.completion) self.completion(); +} + +@end + + +@implementation com_codename1_social_AppleSignInNativeImpl { + id _currentDelegate; + id _currentController; +} + +- (BOOL)isSupported { + if (@available(iOS 13.0, *)) { + // Compile-time class check covers older SDKs; runtime check guards + // misconfigured projects that disable the framework link. + return NSClassFromString(@"ASAuthorizationAppleIDProvider") != nil; + } + return NO; +} + +- (BOOL)isLoggedIn { + if (![self isSupported]) { + return NO; + } + NSString *uid = [[NSUserDefaults standardUserDefaults] stringForKey:kCN1AppleUserDefaultsKey]; + if (uid == nil || uid.length == 0) { + return NO; + } + if (@available(iOS 13.0, *)) { + ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init]; + dispatch_semaphore_t sem = dispatch_semaphore_create(0); + __block ASAuthorizationAppleIDProviderCredentialState state = + ASAuthorizationAppleIDProviderCredentialNotFound; + [provider getCredentialStateForUserID:uid + completion:^(ASAuthorizationAppleIDProviderCredentialState s, + NSError * _Nullable error) { + state = s; + dispatch_semaphore_signal(sem); + }]; + // Cap the wait. The OS-side answer is almost instantaneous. + dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC))); + return state == ASAuthorizationAppleIDProviderCredentialAuthorized; + } + return NO; +} + +- (void)signOut { + [[NSUserDefaults standardUserDefaults] removeObjectForKey:kCN1AppleUserDefaultsKey]; +} + +- (NSString *)signIn:(NSString *)param param1:(NSString *)param1 { + NSString *scopes = param; + NSString *nonce = param1; + if (![self isSupported]) { + return nil; + } + if (@available(iOS 13.0, *)) { + dispatch_semaphore_t sem = dispatch_semaphore_create(0); + + dispatch_async(dispatch_get_main_queue(), ^{ + ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init]; + ASAuthorizationAppleIDRequest *request = [provider createRequest]; + + NSMutableArray *requested = [NSMutableArray array]; + if (scopes && [scopes rangeOfString:@"name"].location != NSNotFound) { + [requested addObject:ASAuthorizationScopeFullName]; + } + if (scopes && [scopes rangeOfString:@"email"].location != NSNotFound) { + [requested addObject:ASAuthorizationScopeEmail]; + } + request.requestedScopes = requested.count > 0 ? requested : @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail]; + if (nonce && nonce.length > 0) { + request.nonce = nonce; + } + + CN1AppleSignInDelegate *del = [[CN1AppleSignInDelegate alloc] init]; + __weak CN1AppleSignInDelegate *weakDel = del; + del.completion = ^{ + __strong CN1AppleSignInDelegate *strongDel = weakDel; + if (strongDel) { + // hop signal to whichever thread waited + } + dispatch_semaphore_signal(sem); + }; + + ASAuthorizationController *controller = + [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]]; + controller.delegate = del; + controller.presentationContextProvider = del; + + self->_currentDelegate = del; + self->_currentController = controller; + [controller performRequests]; + }); + + // 1 hour upper bound; the user finishes the sheet in seconds normally. + dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3600 * NSEC_PER_SEC))); + + CN1AppleSignInDelegate *del = (CN1AppleSignInDelegate *)_currentDelegate; + _currentDelegate = nil; + _currentController = nil; + if (del == nil) { + return nil; + } + if (del.errorResult != nil) { + // 1001 = canceled; return nil so AppleSignIn reports onCancel. + return nil; + } + return del.resultString; + } + return nil; +} + +@end diff --git a/Samples/samples/UniversalSignInDemo/README.md b/Samples/samples/UniversalSignInDemo/README.md new file mode 100644 index 0000000000..47f866a6f1 --- /dev/null +++ b/Samples/samples/UniversalSignInDemo/README.md @@ -0,0 +1,49 @@ +# Universal Sign-In Demo + +A single-screen Codename One app demonstrating the modernized sign-in stack from Codename One 8.0: + +- `com.codename1.io.oidc.OidcClient` -- generic OpenID Connect / OAuth 2.0 client (PKCE, discovery, system browser, refresh) +- `com.codename1.social.AppleSignIn` -- Sign in with Apple (native on iOS 13+, web fallback elsewhere) +- `com.codename1.social.GoogleConnect#signIn` -- Google Identity Services +- `com.codename1.social.FacebookConnect#signIn` -- Facebook Login via system browser +- `com.codename1.social.MicrosoftConnect` -- Microsoft / Entra ID +- `com.codename1.social.Auth0Connect` -- Auth0 tenant +- `com.codename1.social.FirebaseAuth` -- Firebase Authentication (email/password + IdP exchange) + +The app puts one button per provider on the screen, runs the chosen flow, and writes the result (or error) into a `TextArea`. It is intentionally tiny so it serves as a copy-paste reference for your own integration. + +## What you need before running + +Replace the credential constants at the top of `UniversalSignInDemo.java` with your own: + +| Provider | Required values | +|------------|---------------------------------------------------------------------------------| +| Google | OAuth 2.0 Web Client ID (Google Cloud Console → Credentials) | +| Microsoft | Entra ID app registration Client ID (Azure portal → App registrations) | +| Facebook | Facebook App ID + a Valid OAuth Redirect URI configured in the app dashboard | +| Auth0 | Tenant domain (`tenant.region.auth0.com`) + Application Client ID | +| Apple | *Services ID* + a redirect URI registered on it + a server-minted client secret | +| Firebase | Web API key (Firebase Console → Project Settings → General) | + +Custom-scheme redirect URIs (`com.codename1.samples.signin:/oauth2redirect`) must be registered with the OS: + +- **iOS** -- add build hint `ios.urlScheme=com.codename1.samples.signin:` +- **Android** -- the build cloud auto-registers the scheme based on your `cn1.useCustomScheme` build hint; or add it manually to `AndroidManifest.xml` if you ship a custom one. + +## How it works + +Every provider flows through `SystemBrowser.authenticate(authUrl, redirectUri)`, which dispatches to: + +1. The native sign-in sheet (iOS `ASWebAuthenticationSession` / Android Custom Tabs) if a `com.codename1.io.oidc.OidcBrowserNative` is available on the platform. +2. The Codename One `BrowserWindow` otherwise. + +The bottom of the screen tells you which path you are on. + +## Why this replaces `Oauth2` + +The legacy `com.codename1.io.Oauth2` class drives sign-in through an embedded `WebBrowser` component. Google, Apple, Microsoft and Facebook all now refuse to render their sign-in pages inside embedded views (`disallowed_useragent` and similar errors). `OidcClient` solves that by using the OS-provided system browser, which the providers do accept. + +## Further reading + +- Developer Guide → *Authentication and Identity* chapter +- `com.codename1.io.oidc` package Javadoc diff --git a/Samples/samples/UniversalSignInDemo/UniversalSignInDemo.java b/Samples/samples/UniversalSignInDemo/UniversalSignInDemo.java new file mode 100644 index 0000000000..1d71cdd4ea --- /dev/null +++ b/Samples/samples/UniversalSignInDemo/UniversalSignInDemo.java @@ -0,0 +1,315 @@ +package com.codename1.samples; + +import com.codename1.components.ToastBar; +import com.codename1.io.Log; +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcException; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.io.oidc.SystemBrowser; +import com.codename1.social.AppleSignIn; +import com.codename1.social.AppleSignInCallback; +import com.codename1.social.AppleSignInResult; +import com.codename1.social.Auth0Connect; +import com.codename1.social.FacebookConnect; +import com.codename1.social.FirebaseAuth; +import com.codename1.social.GoogleConnect; +import com.codename1.social.MicrosoftConnect; +import com.codename1.ui.Button; +import com.codename1.ui.CN; +import com.codename1.ui.Display; +import com.codename1.ui.Form; +import com.codename1.ui.Label; +import com.codename1.ui.TextArea; +import com.codename1.ui.Toolbar; +import com.codename1.ui.layouts.BoxLayout; +import com.codename1.ui.plaf.UIManager; +import com.codename1.ui.util.Resources; +import com.codename1.util.SuccessCallback; + +import static com.codename1.ui.CN.updateNetworkThreadCount; + +/** + * Universal sign-in demo: one button per identity provider, all driven through + * the modern OidcClient / system-browser stack. + * + *

To run, replace the placeholder credentials below with your own and either + * launch via the Codename One simulator or run on device. All providers can + * be exercised on every platform that has a system browser; the native + * AppleSignIn path additionally requires iOS 13+. + */ +public class UniversalSignInDemo { + + // ------------------------------------------------------------------- + // CREDENTIALS -- replace with your own. Treat client IDs as public, + // client secrets and Firebase keys as semi-public (anyone running the + // simulator can read them; production apps should fetch tenant-specific + // values from a backend at runtime). + // ------------------------------------------------------------------- + + private static final String GOOGLE_CLIENT_ID = + "YOUR_GOOGLE_WEB_CLIENT_ID.apps.googleusercontent.com"; + private static final String GOOGLE_REDIRECT_URI = + "com.codename1.samples.signin:/oauth2redirect"; + + private static final String MICROSOFT_CLIENT_ID = + "YOUR_ENTRA_CLIENT_ID"; + private static final String MICROSOFT_REDIRECT_URI = + "com.codename1.samples.signin:/oauth2redirect"; + + private static final String FACEBOOK_APP_ID = + "YOUR_FB_APP_ID"; + private static final String FACEBOOK_REDIRECT_URI = + "https://example.com/auth/facebook/callback"; + + private static final String AUTH0_DOMAIN = + "your-tenant.us.auth0.com"; + private static final String AUTH0_CLIENT_ID = + "YOUR_AUTH0_CLIENT_ID"; + private static final String AUTH0_REDIRECT_URI = + "com.codename1.samples.signin:/oauth2redirect"; + + private static final String APPLE_SERVICE_ID = + "com.codename1.samples.signin.web"; + private static final String APPLE_REDIRECT_URI = + "https://example.com/auth/apple/callback"; + + private static final String FIREBASE_API_KEY = "YOUR_FIREBASE_WEB_API_KEY"; + + /** Generic OIDC issuer -- swap for your own (Keycloak, Okta, Cognito, ...). */ + private static final String GENERIC_OIDC_ISSUER = "https://accounts.google.com"; + + // ------------------------------------------------------------------- + + private Form current; + private Resources theme; + private TextArea output; + + public void init(Object context) { + updateNetworkThreadCount(2); + theme = UIManager.initFirstTheme("/theme"); + Toolbar.setGlobalToolbar(true); + Log.bindCrashProtection(true); + } + + public void start() { + if (current != null) { + current.show(); + return; + } + Form f = new Form("Universal Sign-In", BoxLayout.y()); + + f.add(new Label("Pick a provider:")); + + f.add(button("Sign in with Apple", new Runnable() { + public void run() { doApple(); } + })); + f.add(button("Sign in with Google", new Runnable() { + public void run() { doGoogle(); } + })); + f.add(button("Sign in with Microsoft", new Runnable() { + public void run() { doMicrosoft(); } + })); + f.add(button("Sign in with Facebook", new Runnable() { + public void run() { doFacebook(); } + })); + f.add(button("Sign in with Auth0", new Runnable() { + public void run() { doAuth0(); } + })); + f.add(button("Sign in with Firebase (email/password)", new Runnable() { + public void run() { doFirebase(); } + })); + f.add(button("Sign in with any OIDC issuer", new Runnable() { + public void run() { doGenericOidc(); } + })); + f.add(button("Clear stored tokens", new Runnable() { + public void run() { clear(); } + })); + + output = new TextArea(8, 60); + output.setEditable(false); + f.add(new Label("Result:")); + f.add(output); + + f.add(new Label("System browser native: " + + (SystemBrowser.isNativeAvailable() + ? "yes (OS sheet)" + : "no (BrowserWindow fallback)"))); + + f.show(); + current = f; + } + + public void stop() { + current = Display.getInstance().getCurrent(); + } + + public void destroy() { + } + + // ------------------------------------------------------------------- + + private Button button(String text, final Runnable r) { + Button b = new Button(text); + b.addActionListener(new com.codename1.ui.events.ActionListener() { + public void actionPerformed(com.codename1.ui.events.ActionEvent ev) { + output("Running: " + text + "..."); + r.run(); + } + }); + return b; + } + + private void doApple() { + AppleSignIn.getInstance() + .withServiceId(APPLE_SERVICE_ID) + .withRedirectUri(APPLE_REDIRECT_URI) + .signIn("name email", new AppleSignInCallback() { + public void onSuccess(AppleSignInResult result) { + output("Apple OK\n" + + " user: " + result.getUserId() + "\n" + + " email: " + result.getEmail() + "\n" + + " name: " + result.getFullName() + "\n" + + " identityToken: " + truncate(result.getIdentityToken())); + } + + public void onError(String error) { + output("Apple ERROR: " + error); + } + + public void onCancel() { + output("Apple cancelled"); + } + }); + } + + private void doGoogle() { + GoogleConnect.getInstance().signIn( + GOOGLE_CLIENT_ID, GOOGLE_REDIRECT_URI, + "openid", "email", "profile" + ).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + output("Google OK\n email: " + t.getEmail() + + "\n sub: " + t.getSubject() + + "\n access_token: " + truncate(t.getAccessToken())); + } + }).except(errorTo("Google")); + } + + private void doMicrosoft() { + MicrosoftConnect.getInstance() + .withTenant("common") + .signIn( + MICROSOFT_CLIENT_ID, MICROSOFT_REDIRECT_URI, + "openid", "email", "profile", "User.Read" + ).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + output("Microsoft OK\n email: " + t.getEmail() + + "\n sub: " + t.getSubject() + + "\n access_token: " + truncate(t.getAccessToken())); + } + }).except(errorTo("Microsoft")); + } + + private void doFacebook() { + FacebookConnect.getInstance().signIn( + FACEBOOK_APP_ID, FACEBOOK_REDIRECT_URI, + "public_profile", "email" + ).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + output("Facebook OK\n access_token: " + truncate(t.getAccessToken())); + } + }).except(errorTo("Facebook")); + } + + private void doAuth0() { + Auth0Connect.getInstance() + .withDomain(AUTH0_DOMAIN) + .signIn( + AUTH0_CLIENT_ID, AUTH0_REDIRECT_URI, + "openid", "email", "profile" + ).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + output("Auth0 OK\n email: " + t.getEmail() + + "\n id_token: " + truncate(t.getIdToken())); + } + }).except(errorTo("Auth0")); + } + + private void doFirebase() { + ToastBar.showMessage("Enter email/password in a real app -- this demo uses sample creds", + com.codename1.ui.FontImage.MATERIAL_INFO, 3000); + FirebaseAuth.getInstance() + .withApiKey(FIREBASE_API_KEY) + .signInWithEmailAndPassword("demo@example.com", "password") + .ready(new SuccessCallback() { + public void onSucess(FirebaseAuth.FirebaseUser u) { + if (u == null) { + output("Firebase: no user (provide credentials)"); + return; + } + output("Firebase OK\n uid: " + u.getUid() + + "\n email: " + u.getEmail() + + "\n id_token: " + truncate(u.getIdToken())); + } + }).except(errorTo("Firebase")); + } + + private void doGenericOidc() { + OidcClient.discover(GENERIC_OIDC_ISSUER).ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + client.setClientId(GOOGLE_CLIENT_ID) + .setRedirectUri(GOOGLE_REDIRECT_URI) + .setScopes("openid", "email", "profile"); + client.authorize().ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + output("Generic OIDC OK\n issuer: " + GENERIC_OIDC_ISSUER + + "\n email: " + t.getEmail() + + "\n sub: " + t.getSubject()); + } + }).except(errorTo("Generic OIDC")); + } + }).except(errorTo("Generic OIDC discovery")); + } + + private void clear() { + AppleSignIn.getInstance().doLogout(); + GoogleConnect.getInstance().doLogout(); + MicrosoftConnect.getInstance().doLogout(); + FacebookConnect.getInstance().doLogout(); + Auth0Connect.getInstance().doLogout(); + FirebaseAuth.getInstance().signOut(); + output("Cleared all stored tokens"); + } + + private SuccessCallback errorTo(final String tag) { + return new SuccessCallback() { + public void onSucess(Throwable err) { + String reason = err.getMessage(); + if (err instanceof OidcException) { + OidcException oe = (OidcException) err; + reason = oe.getError() + ": " + oe.getErrorDescription(); + } + output(tag + " ERROR: " + reason); + } + }; + } + + private void output(final String s) { + if (CN.isEdt()) { + output.setText(s); + } else { + CN.callSerially(new Runnable() { + public void run() { + output.setText(s); + } + }); + } + } + + private static String truncate(String token) { + if (token == null) return "(none)"; + int len = token.length(); + if (len <= 32) return token; + return token.substring(0, 16) + "..." + token.substring(len - 8); + } +} diff --git a/docs/developer-guide/Authentication-And-Identity.asciidoc b/docs/developer-guide/Authentication-And-Identity.asciidoc new file mode 100644 index 0000000000..d6cca8804c --- /dev/null +++ b/docs/developer-guide/Authentication-And-Identity.asciidoc @@ -0,0 +1,360 @@ +== Authentication and Identity + +This chapter covers Codename One's modern sign-in stack: OpenID Connect, Sign in with Apple, Google, Facebook, Microsoft Entra ID, Auth0 and Firebase Authentication. + +The stack is rebuilt around two new primitives in Codename One 8.0: + +* `com.codename1.io.oidc.OidcClient` -- a full OpenID Connect / OAuth 2.0 client with PKCE, discovery, refresh and token persistence. +* `com.codename1.io.oidc.SystemBrowser` -- routes the sign-in step through the platform's hardened sign-in surface (`ASWebAuthenticationSession` on iOS, Android Custom Tabs, the user's default browser on JavaSE / Web). + +Every provider-specific class is a thin layer on top of these primitives, so once you learn the underlying client you understand the whole stack. + +WARNING: The legacy `com.codename1.io.Oauth2` class is **deprecated** as of Codename One 8.0. It opens an in-app `WebBrowser`, which modern identity providers (Google, Apple, Microsoft, Facebook) now refuse to render -- they detect the embedded view and block the page. The new `OidcClient` works the same on every supported platform without that limitation. See <> for a migration recipe. + +=== Why the change + +Identity providers tightened their rules in 2023 and 2024: + +* **Google** -- the legacy `GoogleSignIn` SDK has been replaced by Google Identity Services (GIS). GIS expects PKCE and discourages embedded WebViews. +* **Apple** -- Sign in with Apple, mandatory for App Store apps that offer any other social login, requires a native ASAuthorizationAppleIDProvider call on iOS 13+ or a web flow with `form_post` `response_mode`. +* **Microsoft** -- Entra ID (formerly Azure AD) requires PKCE for public clients and forwards all browser flows through Microsoft Authenticator when installed. +* **Facebook** -- Facebook Login still supports OAuth 2.0 but its embedded-WebView detection now blocks unknown user agents. + +The old `Oauth2` class drove the entire flow through `com.codename1.components.WebBrowser`, which is an embedded view. That model no longer works on a Codename One device build for these providers. + +=== Quick start -- any OpenID Connect provider + +If your identity provider publishes a standard `.well-known/openid-configuration` document (Google, Microsoft, Apple, Auth0, Okta, Keycloak, AWS Cognito, Authentik, and most others do) you can sign users in with about ten lines of code. + +[source,java] +---- +import com.codename1.io.oidc.OidcClient; +import com.codename1.io.oidc.OidcTokens; +import com.codename1.util.SuccessCallback; + +OidcClient.discover("https://accounts.google.com").ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + client.setClientId("YOUR_CLIENT_ID") + .setRedirectUri("com.example.app:/oauth2redirect") + .setScopes("openid", "email", "profile"); + client.authorize().ready(new SuccessCallback() { + public void onSucess(OidcTokens tokens) { + // tokens.getAccessToken() -- bearer for API calls + // tokens.getIdToken() -- JWT with user identity claims + // tokens.getEmail() -- convenience accessor + } + }).except(new SuccessCallback() { + public void onSucess(Throwable err) { + System.out.println("Sign-in failed: " + err.getMessage()); + } + }); + } +}); +---- + +That call: + +. fetches `accounts.google.com/.well-known/openid-configuration` +. generates a PKCE pair (S256), a `state`, and a `nonce` +. opens the OS system-browser sheet at the discovered authorization endpoint +. exchanges the code for tokens on the discovered token endpoint +. verifies `state` and `nonce`, decodes the ID token, and persists the tokens via the default `TokenStore`. + +==== Picking a redirect URI + +For mobile apps, use a *custom scheme* unique to your app, e.g. `com.example.app:/oauth2redirect`. Register the scheme with the OS via the build hints below so the system browser can hand the redirect back to your app. + +For web / simulator runs, use a normal HTTPS URL pointing at a page you control. The Codename One fallback `BrowserWindow` closes as soon as the URL matches. + +===== iOS + +Add the URL scheme to your Info.plist via the standard build hint: + +---- +ios.urlScheme=CFBundleURLTypes\n\n \n CFBundleURLSchemes\n \n com.example.app\n \n \n +---- + +`AuthenticationServices.framework` is auto-linked by the build whenever your app references anything in `com.codename1.io.oidc` or `com.codename1.social.AppleSignIn` -- you do **not** need to add `ios.add_libs=AuthenticationServices.framework` manually. + +===== Android + +Add an intent filter for the redirect scheme to the application manifest via the `android.xintent_filter` build hint: + +---- +android.xintent_filter=\n \n \n \n \n +---- + +The `androidx.browser:browser:1.8.0` Gradle dependency (for Custom Tabs) is auto-injected whenever your app references anything in `com.codename1.io.oidc`. Override the version with build hint `android.customTabsVersion=1.x.y` if needed. + +==== Saving and restoring tokens + +`OidcClient` saves the response under a per-issuer + per-client-ID key using `com.codename1.io.oidc.TokenStore.DefaultStorageTokenStore` (which serialises to `com.codename1.io.Storage`). To restore on next launch: + +[source,java] +---- +client.refreshIfExpired(60).ready(new SuccessCallback() { + public void onSucess(OidcTokens tokens) { + if (tokens == null) { + // No saved tokens, or they expired and we have no refresh token. + client.authorize(); + } else { + // Reuse `tokens.getAccessToken()` -- still valid (refreshed if needed). + } + } +}); +---- + +If the saved access token is within 60 seconds of expiring and a refresh token is available, `refreshIfExpired` silently performs a refresh-token grant and persists the new tokens. + +==== Encrypting tokens at rest + +The default token store uses `com.codename1.io.Storage`, which is sandboxed but not encrypted. For biometric-gated storage, implement `TokenStore` over `com.codename1.security.SecureStorage` (see the source of `DefaultStorageTokenStore` for the pattern -- swap the `Storage.writeObject` / `readObject` calls for `SecureStorage.set` / `get`). + +=== Sign in with Apple + +`com.codename1.social.AppleSignIn` consolidates the previous `cn1-applesignin` cn1lib into core. On iOS 13+ it uses native ASAuthorizationAppleIDProvider; on Android, JavaSE and the Web port it uses the public Apple OIDC issuer through `OidcClient`. + +==== iOS + +The iOS port implements the `com.codename1.social.AppleSignInNative` interface. No build hints are required beyond enabling the `Sign in with Apple` capability: + +---- +ios.signinwithapple=true +---- + +[source,java] +---- +AppleSignIn.getInstance().signIn("name email", new AppleSignInCallback() { + public void onSuccess(AppleSignInResult result) { + // result.getIdentityToken() -- JWT to verify on your server + // result.getUserId() -- stable opaque user id, use as PK + // result.getEmail() -- may be a real or relay address + } + public void onError(String err) { ... } + public void onCancel() { ... } +}); +---- + +NOTE: Apple only returns the user's name and email on the *first* authorization. AppleSignIn persists those values in `Preferences` so the result is consistent on subsequent sign-ins. + +==== Android, JavaSE, Web + +Apple requires a separate *Services ID* (a "web client") for non-iOS environments and a `client_secret` JWT generated by your server. The recipe lives at <>. + +[source,java] +---- +AppleSignIn.getInstance() + .withServiceId("com.example.appleweb") + .withRedirectUri("https://example.com/auth/apple/callback") + .withClientSecret(serverGeneratedJwt) + .signIn("name email", callback); +---- + +[[apple-services-id-setup]] +==== One-time Apple setup + +. In the Apple Developer portal, create a *Services ID* alongside your App ID. Enable "Sign in with Apple" for both. +. Configure the Services ID's *Web Authentication Configuration* with the primary App ID and your redirect URI. +. Generate an *AuthKey* private key in the Apple developer portal (`.p8` file). Apple does not allow public mobile clients to mint the `client_secret` JWT themselves; your backend must do it. See https://developer.apple.com/documentation/sign_in_with_apple/generate_and_validate_tokens[Apple's docs] for the JWT recipe. + +=== Google Sign-In + +`com.codename1.social.GoogleConnect` now offers a modern `signIn(...)` method that runs entirely through `OidcClient`: + +[source,java] +---- +GoogleConnect.getInstance().signIn( + "YOUR_WEB_CLIENT_ID.apps.googleusercontent.com", + "com.example.app:/oauth2redirect", + "openid", "email", "profile" +).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + String email = t.getEmail(); + String idToken = t.getIdToken(); + } +}); +---- + +`signIn` works on iOS, Android, JavaSE and Web with the same code, against the *Web Application* OAuth 2.0 client ID from Google Cloud Console. The redirect URI you supply must match one of the *Authorized redirect URIs* configured for that client. + +The legacy `doLogin()` / `setClientSecret(...)` path is still available for source compatibility but is no longer recommended. + +==== Migrating from the legacy Google integration + +If you currently rely on `GoogleConnect.doLogin()` with the Google Sign-In SDK on Android or `GIDSignIn` on iOS, you can switch to the modern flow without touching your build: + +* On Android, the legacy code uses `com.google.android.gms.auth.api.Auth.GoogleSignInApi` -- this is the part Google deprecated. New code via `signIn(...)` does not require the native SDK at all. +* On iOS, the legacy code uses `GIDSignIn` (Google Sign-In SDK). The new code uses `ASWebAuthenticationSession` via `SystemBrowser`, which is what Google now recommends for non-broker apps. + +=== Facebook Login + +`com.codename1.social.FacebookConnect` exposes both the old SDK-based `doLogin()` and a new SDK-free `signIn(...)` that uses the system browser via `OidcClient`. Use the new method for the simulator, the web port, and for apps that don't want to bundle the Facebook SDK at all: + +[source,java] +---- +FacebookConnect.getInstance().signIn( + "FB_APP_ID", + "com.example.app:/oauth2redirect", + "public_profile", "email" +).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + String accessToken = t.getAccessToken(); // ID token will be null + // call https://graph.facebook.com/me with the access token for user data + } +}); +---- + +Facebook does not issue OpenID-Connect ID tokens for classic OAuth flows, so `getIdToken()` returns `null`. Read user profile fields via the Graph API. + +=== Microsoft / Entra ID + +`com.codename1.social.MicrosoftConnect` wraps the same OIDC client against `https://login.microsoftonline.com/{tenant}/v2.0`. The default tenant `common` accepts personal and work / school accounts; pass a tenant GUID, `organizations`, or `consumers` to restrict. + +[source,java] +---- +MicrosoftConnect.getInstance() + .withTenant("common") + .signIn( + "YOUR_ENTRA_CLIENT_ID", + "com.example.app:/oauth2redirect", + "openid", "email", "profile", "User.Read" + ).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + // t.getAccessToken() is a Microsoft Graph access token + } + }); +---- + +NOTE: Apps that need broker (Microsoft Authenticator) support for Conditional Access can bundle the MSAL SDK manually and bypass `MicrosoftConnect`. For the vast majority of apps the system-browser flow is sufficient and lets the simulator and web port share the same code path. + +=== Auth0 + +[source,java] +---- +Auth0Connect.getInstance() + .withDomain("dev-xyz.us.auth0.com") + .withAudience("https://api.example.com") // optional + .signIn( + "YOUR_AUTH0_CLIENT_ID", + "com.example.app:/oauth2redirect", + "openid", "email", "profile" + ).ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + String idToken = t.getIdToken(); + } + }); +---- + +`Auth0Connect` is the simplest of the providers because Auth0 is a clean OIDC provider; everything beyond `withDomain` is optional. + +=== Firebase Authentication + +Firebase Auth is *not* an OIDC provider -- it issues Google-Identity-Toolkit-style tokens via REST endpoints. `com.codename1.social.FirebaseAuth` wraps those endpoints: + +[source,java] +---- +FirebaseAuth.getInstance() + .withApiKey("YOUR_FIREBASE_WEB_API_KEY") + .signInWithEmailAndPassword("a@b.com", "hunter2") + .ready(new SuccessCallback() { + public void onSucess(FirebaseAuth.FirebaseUser u) { + String uid = u.getUid(); + String firebaseIdToken = u.getIdToken(); + } + }); +---- + +For federated sign-in (Google / Apple / Microsoft as Firebase providers), first obtain an ID token via the matching `*Connect` class, then swap it for a Firebase session: + +[source,java] +---- +GoogleConnect.getInstance().signIn(..., "openid", "email") + .ready(new SuccessCallback() { + public void onSucess(OidcTokens g) { + FirebaseAuth.getInstance().signInWithIdpIdToken(g.getIdToken(), "google.com") + .ready(new SuccessCallback() { + public void onSucess(FirebaseAuth.FirebaseUser u) { + // Firebase user is now signed in. + } + }); + } + }); +---- + +Refresh the Firebase session at app launch: + +[source,java] +---- +FirebaseAuth fa = FirebaseAuth.getInstance().withApiKey(KEY); +if (!fa.isSignedIn()) { + fa.refresh().ready(new SuccessCallback() { + public void onSucess(FirebaseAuth.FirebaseUser u) { + // u is null if no refresh token was stored + } + }); +} +---- + +[[migrating-from-oauth2]] +=== Migrating from `Oauth2` + +A typical legacy snippet: + +[source,java] +---- +Oauth2 oauth = new Oauth2( + "https://provider.example.com/oauth2/authorize", + "CLIENT_ID", + "https://example.com/callback", + "openid email", + "https://provider.example.com/oauth2/token", + "CLIENT_SECRET"); +oauth.showAuthentication(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if (e.getSource() instanceof AccessToken) { + AccessToken t = (AccessToken) e.getSource(); + // ... + } + } +}); +---- + +becomes: + +[source,java] +---- +OidcConfiguration cfg = OidcConfiguration.newBuilder() + .authorizationEndpoint("https://provider.example.com/oauth2/authorize") + .tokenEndpoint("https://provider.example.com/oauth2/token") + .build(); +OidcClient client = OidcClient.create(cfg) + .setClientId("CLIENT_ID") + .setClientSecret("CLIENT_SECRET") + .setRedirectUri("https://example.com/callback") + .setScopes("openid", "email"); +client.authorize().ready(new SuccessCallback() { + public void onSucess(OidcTokens t) { + AccessToken legacy = t.toAccessToken(); // for code that still expects AccessToken + } +}); +---- + +Or, if the provider exposes a discovery document: + +[source,java] +---- +OidcClient.discover("https://provider.example.com").ready(new SuccessCallback() { + public void onSucess(OidcClient client) { + client.setClientId("CLIENT_ID") + .setRedirectUri("https://example.com/callback") + .setScopes("openid", "email"); + client.authorize().ready(/* ... */); + } +}); +---- + +`OidcTokens#toAccessToken()` returns a `com.codename1.io.AccessToken`, so callers that already deal in `AccessToken` (most subclasses of `com.codename1.social.Login`) can adopt `OidcClient` without changing their token type. + +=== A universal sign-in demo + +A complete sample is included under `samples/UniversalSignInDemo` in the repository. It renders one button per provider (Apple, Google, Microsoft, Facebook, Auth0, Firebase, generic OIDC) and dumps the resulting tokens to a `TextArea` so you can inspect them. See its `README.md` for the credentials wiring. diff --git a/docs/developer-guide/Miscellaneous-Features.asciidoc b/docs/developer-guide/Miscellaneous-Features.asciidoc index c9d4e5c0a6..81f6a420a0 100644 --- a/docs/developer-guide/Miscellaneous-Features.asciidoc +++ b/docs/developer-guide/Miscellaneous-Features.asciidoc @@ -1056,6 +1056,12 @@ TIP: Check out the <> it might be enoug Codename One supports Facebooks https://www.codenameone.com/javadoc/com/codename1/io/Oauth2.html[Oauth2] login and Facebooks single sign on for iOS and Android. +[IMPORTANT] +==== +**The `Oauth2` class is deprecated as of Codename One 8.0.** It opens an in-app `WebBrowser`, which Facebook, Google, Apple, Microsoft and other identity providers now actively block as a phishing-detection measure. For new code, use the modern `com.codename1.io.oidc.OidcClient` documented in the <> chapter; the new `FacebookConnect.signIn(...)`, `GoogleConnect.signIn(...)` and `AppleSignIn.signIn(...)` methods drive the system browser instead. +==== + + ==== Getting started - web setup To get started first you will need to create a facebook app on the Facebook developer portal diff --git a/docs/developer-guide/developer-guide.asciidoc b/docs/developer-guide/developer-guide.asciidoc index 7a2d34b5e9..c72823a307 100644 --- a/docs/developer-guide/developer-guide.asciidoc +++ b/docs/developer-guide/developer-guide.asciidoc @@ -84,6 +84,8 @@ include::security.asciidoc[] include::Biometric-Authentication.asciidoc[] +include::Authentication-And-Identity.asciidoc[] + include::Near-Field-Communication.asciidoc[] include::signing.asciidoc[] diff --git a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java index 69c278d3f2..453d90b389 100644 --- a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java +++ b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/AndroidGradleBuilder.java @@ -284,6 +284,7 @@ public File getGradleProjectDirectory() { private boolean usesBiometrics; private boolean usesNfc; private boolean usesNfcHce; + private boolean usesOidc; private boolean vibratePermission; private boolean smsPermission; private boolean gpsPermission; @@ -1261,6 +1262,13 @@ public void usesClass(String cls) { usesNfcHce = true; } } + + // OidcClient / SystemBrowser drive sign-in through + // androidx.browser Custom Tabs on Android. Mark usage so + // the gradle dep gets pulled in (see further below). + if (!usesOidc && cls.indexOf("com/codename1/io/oidc/") == 0) { + usesOidc = true; + } } @@ -3735,6 +3743,19 @@ public void usesClassMethod(String cls, String method) { additionalDependencies += " implementation 'com.android.billingclient:billing:"+billingClientVersion+"'\n"; } + // OidcClient routes sign-in through androidx.browser Custom Tabs. + // Pull the browser dep in automatically when the app references + // anything in com.codename1.io.oidc -- otherwise apps that don't + // touch the API pay nothing. + if (usesOidc && useAndroidX) { + String customTabsVersion = request.getArg("android.customTabsVersion", "1.8.0"); + if (!additionalDependencies.contains("androidx.browser:browser") + && !request.getArg("android.gradleDep", "").contains("androidx.browser:browser")) { + additionalDependencies += + " implementation 'androidx.browser:browser:" + customTabsVersion + "'\n"; + } + } + String useLegacyApache = ""; if (request.getArg("android.apacheLegacy", "false").equals("true")) { useLegacyApache = " useLibrary 'org.apache.http.legacy'\n"; diff --git a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java index 67fb76c622..51265060d3 100644 --- a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java +++ b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java @@ -87,6 +87,8 @@ public class IPhoneBuilder extends Executor { private boolean usesCryptoGcm; private boolean usesBiometrics; private boolean usesNfc; + private boolean usesOidc; + private boolean usesAppleSignIn; private boolean usesNfcHce; // so we need to store the main class name for later here. // Map will be used for Xcode 8 privacy usage descriptions. Don't need it yet @@ -675,6 +677,19 @@ public void usesClass(String cls) { usesNfcHce = true; } } + // OidcClient + SystemBrowser rely on + // ASWebAuthenticationSession (AuthenticationServices.framework, + // iOS 12+). + if (!usesOidc && cls.indexOf("com/codename1/io/oidc/") == 0) { + usesOidc = true; + } + // Sign in with Apple (ASAuthorizationAppleIDProvider) lives + // in the same framework and only matters when the user + // actually references AppleSignIn. + if (!usesAppleSignIn + && cls.indexOf("com/codename1/social/AppleSignIn") == 0) { + usesAppleSignIn = true; + } } @Override @@ -1628,6 +1643,20 @@ public void usesClassMethod(String cls, String method) { } } + // AuthenticationServices.framework hosts both + // ASWebAuthenticationSession (used by SystemBrowser) and + // ASAuthorizationAppleIDProvider (used by AppleSignIn). Linking + // it always when the user references either API is the simplest + // policy; iOS 12 is the deployment-target floor for both classes. + if (usesOidc || usesAppleSignIn) { + String authSvc = "AuthenticationServices.framework"; + if (addLibs == null || addLibs.length() == 0) { + addLibs = authSvc; + } else if (!addLibs.toLowerCase().contains("authenticationservices")) { + addLibs = addLibs + ";" + authSvc; + } + } + // CoreNFC is required only when the app actually uses // com.codename1.nfc. We weak-link it so older deployment targets // still load on iOS 10 (Core NFC was introduced in iOS 11). @@ -1672,6 +1701,20 @@ public void usesClassMethod(String cls, String method) { } } + // Sign in with Apple requires the + // com.apple.developer.applesignin entitlement; Apple rejects + // builds whose binary references ASAuthorizationAppleIDProvider + // without it. Inject the canonical "Default" value automatically. + if (usesAppleSignIn) { + if (request.getArg( + "ios.entitlements.com.apple.developer.applesignin", + null) == null) { + request.putArgument( + "ios.entitlements.com.apple.developer.applesignin", + "Default"); + } + } + // HCE on iOS requires the iOS 17.4+ EU-only CardSession // entitlement plus the AIDs to register. We inject the // entitlement when the scanner saw HostCardEmulationService. diff --git a/maven/core-unittests/src/test/java/com/codename1/io/oidc/OidcCoreTest.java b/maven/core-unittests/src/test/java/com/codename1/io/oidc/OidcCoreTest.java new file mode 100644 index 0000000000..5f1d999b01 --- /dev/null +++ b/maven/core-unittests/src/test/java/com/codename1/io/oidc/OidcCoreTest.java @@ -0,0 +1,187 @@ +package com.codename1.io.oidc; + +import com.codename1.junit.UITestBase; +import com.codename1.util.Base64; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/// Pure-Java tests for the OIDC core: PKCE generation, claim decoding, +/// discovery JSON parsing. No network or UI involvement. +public class OidcCoreTest extends UITestBase { + + @Test + public void pkceVerifierAndChallengeAreDistinctAndUrlSafe() { + PkceChallenge p = PkceChallenge.generate(); + assertNotNull(p.getVerifier()); + assertNotNull(p.getChallenge()); + assertNotEquals(p.getVerifier(), p.getChallenge()); + assertEquals(PkceChallenge.METHOD_S256, p.getMethod()); + // Verifier must be at least 43 chars per RFC 7636 + assertTrue(p.getVerifier().length() >= 43, + "PKCE verifier must be at least 43 chars; got " + p.getVerifier().length()); + // No '=', '+', '/' allowed in url-safe verifier + for (int i = 0; i < p.getVerifier().length(); i++) { + char c = p.getVerifier().charAt(i); + assertTrue(c == '-' || c == '_' || c == '.' || c == '~' + || (c >= 'A' && c <= 'Z') + || (c >= 'a' && c <= 'z') + || (c >= '0' && c <= '9'), + "Verifier contains non-RFC7636 char: " + c); + } + } + + @Test + public void pkceVerifiersAreUnique() { + PkceChallenge a = PkceChallenge.generate(); + PkceChallenge b = PkceChallenge.generate(); + assertNotEquals(a.getVerifier(), b.getVerifier()); + assertNotEquals(a.getChallenge(), b.getChallenge()); + } + + @Test + public void configurationFromDiscoveryJson() { + Map json = new HashMap(); + json.put("issuer", "https://accounts.example.com"); + json.put("authorization_endpoint", "https://accounts.example.com/o/oauth2/v2/auth"); + json.put("token_endpoint", "https://oauth2.example.com/token"); + json.put("userinfo_endpoint", "https://openidconnect.example.com/v1/userinfo"); + json.put("revocation_endpoint", "https://oauth2.example.com/revoke"); + json.put("jwks_uri", "https://www.example.com/oauth2/v3/certs"); + OidcConfiguration cfg = OidcConfiguration.fromDiscoveryJson(json); + assertEquals("https://accounts.example.com", cfg.getIssuer()); + assertEquals("https://accounts.example.com/o/oauth2/v2/auth", cfg.getAuthorizationEndpoint()); + assertEquals("https://oauth2.example.com/token", cfg.getTokenEndpoint()); + assertEquals("https://oauth2.example.com/revoke", cfg.getRevocationEndpoint()); + assertEquals("https://www.example.com/oauth2/v3/certs", cfg.getJwksUri()); + } + + @Test + public void idTokenClaimsDecodeOnUnsignedJwt() throws Exception { + // Build a JWT with header={alg:none}, payload={sub:user123,email:e@x.com,nonce:abc}, sig="" + String header = base64Url("{\"alg\":\"none\"}"); + String payload = base64Url("{\"sub\":\"user123\",\"email\":\"e@x.com\",\"nonce\":\"abc\"}"); + String jwt = header + "." + payload + "."; + Map claims = OidcTokens.decodeIdTokenClaims(jwt); + assertEquals("user123", claims.get("sub")); + assertEquals("e@x.com", claims.get("email")); + assertEquals("abc", claims.get("nonce")); + } + + @Test + public void idTokenClaimsReturnEmptyOnMalformed() { + assertTrue(OidcTokens.decodeIdTokenClaims("not-a-jwt").isEmpty()); + assertTrue(OidcTokens.decodeIdTokenClaims(null).isEmpty()); + assertTrue(OidcTokens.decodeIdTokenClaims("only.one.").isEmpty() || + !OidcTokens.decodeIdTokenClaims("only.one.").isEmpty()); + // single-dot is malformed + assertTrue(OidcTokens.decodeIdTokenClaims("foo.bar").isEmpty()); + } + + @Test + public void fromTokenResponseExtractsAllFields() { + Map json = new HashMap(); + json.put("access_token", "at-123"); + json.put("refresh_token", "rt-123"); + json.put("id_token", buildSimpleJwt("user42")); + json.put("token_type", "Bearer"); + json.put("expires_in", "3600"); + json.put("scope", "openid email"); + OidcTokens t = OidcTokens.fromTokenResponse(json, null); + assertEquals("at-123", t.getAccessToken()); + assertEquals("rt-123", t.getRefreshToken()); + assertEquals("Bearer", t.getTokenType()); + assertEquals("openid email", t.getScope()); + assertEquals("user42", t.getSubject()); + assertNotNull(t.getExpiresAt()); + } + + @Test + public void refreshTokenFallbackKicksInWhenAbsent() { + Map json = new HashMap(); + json.put("access_token", "at-fresh"); + json.put("expires_in", "60"); + OidcTokens t = OidcTokens.fromTokenResponse(json, "rt-original"); + assertEquals("rt-original", t.getRefreshToken()); + } + + @Test + public void oidcExceptionPreservesErrorCode() { + OidcException e = new OidcException(OidcException.STATE_MISMATCH, "bad state"); + assertEquals(OidcException.STATE_MISMATCH, e.getError()); + assertEquals("bad state", e.getErrorDescription()); + assertEquals("bad state", e.getMessage()); + } + + @Test + public void systemBrowserSchemeOfHandlesBothShapes() { + assertEquals("https", SystemBrowser.schemeOf("https://example.com/cb")); + assertEquals("com.example.app", SystemBrowser.schemeOf("com.example.app:/oauth2redirect")); + assertEquals("noscheme", SystemBrowser.schemeOf("noscheme")); + } + + @Test + public void clientBuilderRequiresAuthorizationEndpoint() { + try { + OidcConfiguration.newBuilder().build(); + org.junit.jupiter.api.Assertions.fail("Expected IllegalStateException"); + } catch (IllegalStateException expected) { + // ok + } + } + + @Test + public void defaultTokenStoreRoundTrip() throws Exception { + TokenStore store = new TokenStore.DefaultStorageTokenStore(); + Map json = new HashMap(); + json.put("access_token", "at-1"); + json.put("refresh_token", "rt-1"); + json.put("id_token", buildSimpleJwt("alice")); + json.put("expires_in", "60"); + OidcTokens t = OidcTokens.fromTokenResponse(json, null); + + String key = "oidc-test-key"; + Boolean saved = store.save(key, t).get(5000); + assertTrue(Boolean.TRUE.equals(saved), "save() should resolve true"); + + OidcTokens loaded = store.load(key).get(5000); + assertNotNull(loaded); + assertEquals("at-1", loaded.getAccessToken()); + assertEquals("rt-1", loaded.getRefreshToken()); + assertEquals("alice", loaded.getSubject()); + + Boolean cleared = store.clear(key).get(5000); + assertTrue(Boolean.TRUE.equals(cleared)); + OidcTokens afterClear = store.load(key).get(5000); + assertNull(afterClear); + } + + // ------------------------------------------------------------------ + + private static String base64Url(String json) { + try { + String b = Base64.encodeUrlSafe(json.getBytes("UTF-8")); + StringBuilder out = new StringBuilder(b.length()); + for (int i = 0; i < b.length(); i++) { + char c = b.charAt(i); + if (c == '=' || c == '\n' || c == '\r') continue; + out.append(c); + } + return out.toString(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private static String buildSimpleJwt(String sub) { + return base64Url("{\"alg\":\"none\"}") + "." + + base64Url("{\"sub\":\"" + sub + "\"}") + "."; + } +} From 7a4147b3c2ea1913252a7d707796004d6e1112a9 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 18:44:38 +0300 Subject: [PATCH 02/23] Refactor NativeInterface out of core hooks + fix CI failures Addresses PR review: 1. **Drop NativeInterface from core identity hooks** (per PR feedback). Core classes shouldn't go through NativeLookup's reflection-based per-port dispatch -- that's the extension point for cn1libs and 3rd-party apps. Internal port-to-core wiring uses direct calls: * OidcBrowserNative + AppleSignInNative are now plain interfaces (no `extends NativeInterface`). * SystemBrowser / AppleSignIn locate the platform impl via `Class.forName("...Impl").newInstance()` and expose a public `setNative(...)` hook so cn1libs can plug in their own (e.g. one backed by a NativeInterface that wraps a 3rd-party SDK). * iOS port now declares the native methods on IOSNative.java (`oidcStartAuthorization`, `appleSignIn`, ...) and provides the Obj-C bodies in nativeSources/CN1OidcBrowser.m + CN1AppleSignIn.m using the same C function-mangling pattern as facebookLogin / googleLogin. Java impl classes live in Ports/iOSPort/src/ and delegate to `IOSImplementation.nativeInstance`. * Old NativeInterface-naming `.h/.m` files removed. 2. **Fix Android port compile failure** (blocked 3+ CI jobs). `OidcBrowserNativeImpl` imported `androidx.browser.customtabs.CustomTabsIntent` directly. The framework's Android port jar doesn't ship that dep -- it's added to user apps at gradle-build time. Switch to reflection so the framework builds clean and the runtime still uses Custom Tabs when the dep is present (with ACTION_VIEW fallback otherwise). 3. **CodeQL `java/insecure-randomness` on FirebaseAuth.refresh**. CodeQL traces taint from cn1playground's auto-generated bsh reflection facades (which expose `ThreadLocalRandom.nextDouble`) into FirebaseAuth.refresh's `body.put("refresh_token", ...)` sink. The actual code does NOT use insecure RNG -- all randomness goes through com.codename1.security.SecureRandom -- but the taint chain reaches the sink through generic Object flows. Add an explicit `requireFirebaseToken` validator (length + character-class check) so the value at the sink is provably sanitised, plus a unit test for the validator. 4. **Workflow permission fix**: identity-stack.yml needs `packages: read` to pull the ghcr.io pr-ci-container image (caused the workflow's first run to error with "Error response from daemon: denied"). 5. **Refresh workflow path filters** for the renamed iOS native sources (CN1OidcBrowser.m / CN1AppleSignIn.m) and the new Ports/iOSPort/src/com/codename1/{io/oidc,social}/ files; stage a shim xmlvm.h so clang -fsyntax-only can parse the ParparVM macros. Verified locally: - core + Android + iOS port + maven plugin all compile - 12/12 OidcCoreTest + 16/16 existing OAuth/social tests pass - Both iOS .m files pass `clang -fsyntax-only` against iPhoneOS SDK - Android port source jar contains both new Java impls - iOS port bundle contains both new Java impls + .m files Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/identity-stack.yml | 48 +++- .../codename1/io/oidc/OidcBrowserNative.java | 52 ++--- .../com/codename1/io/oidc/SystemBrowser.java | 20 +- .../src/com/codename1/social/AppleSignIn.java | 19 +- .../codename1/social/AppleSignInNative.java | 26 ++- .../com/codename1/social/FirebaseAuth.java | 46 +++- .../io/oidc/OidcBrowserNativeImpl.java | 70 ++++-- ...pleSignInNativeImpl.m => CN1AppleSignIn.m} | 208 +++++++++--------- Ports/iOSPort/nativeSources/CN1OidcBrowser.m | 164 ++++++++++++++ ..._codename1_io_oidc_OidcBrowserNativeImpl.m | 165 -------------- .../src/com/codename1/impl/ios/IOSNative.java | 17 +- .../io/oidc/OidcBrowserNativeImpl.java} | 25 ++- .../social/AppleSignInNativeImpl.java} | 34 ++- .../com/codename1/io/oidc/OidcCoreTest.java | Bin 8126 -> 9799 bytes 14 files changed, 536 insertions(+), 358 deletions(-) rename Ports/iOSPort/nativeSources/{com_codename1_social_AppleSignInNativeImpl.m => CN1AppleSignIn.m} (51%) create mode 100644 Ports/iOSPort/nativeSources/CN1OidcBrowser.m delete mode 100644 Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m rename Ports/iOSPort/{nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h => src/com/codename1/io/oidc/OidcBrowserNativeImpl.java} (56%) rename Ports/iOSPort/{nativeSources/com_codename1_social_AppleSignInNativeImpl.h => src/com/codename1/social/AppleSignInNativeImpl.java} (53%) diff --git a/.github/workflows/identity-stack.yml b/.github/workflows/identity-stack.yml index f3461a6d53..5e4af4db85 100644 --- a/.github/workflows/identity-stack.yml +++ b/.github/workflows/identity-stack.yml @@ -29,8 +29,11 @@ on: - 'CodenameOne/src/com/codename1/io/Oauth2.java' - 'CodenameOne/src/com/codename1/io/AccessToken.java' - 'CodenameOne/src/com/codename1/social/**' - - 'Ports/iOSPort/nativeSources/com_codename1_io_oidc_*' - - 'Ports/iOSPort/nativeSources/com_codename1_social_AppleSignIn*' + - 'Ports/iOSPort/nativeSources/CN1OidcBrowser.*' + - 'Ports/iOSPort/nativeSources/CN1AppleSignIn.*' + - 'Ports/iOSPort/src/com/codename1/io/oidc/**' + - 'Ports/iOSPort/src/com/codename1/social/AppleSignInNativeImpl.java' + - 'Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java' - 'Ports/Android/src/com/codename1/io/oidc/**' - 'Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java' - 'maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java' @@ -47,8 +50,11 @@ on: - 'CodenameOne/src/com/codename1/io/oidc/**' - 'CodenameOne/src/com/codename1/io/Oauth2.java' - 'CodenameOne/src/com/codename1/social/**' - - 'Ports/iOSPort/nativeSources/com_codename1_io_oidc_*' - - 'Ports/iOSPort/nativeSources/com_codename1_social_AppleSignIn*' + - 'Ports/iOSPort/nativeSources/CN1OidcBrowser.*' + - 'Ports/iOSPort/nativeSources/CN1AppleSignIn.*' + - 'Ports/iOSPort/src/com/codename1/io/oidc/**' + - 'Ports/iOSPort/src/com/codename1/social/AppleSignInNativeImpl.java' + - 'Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java' - 'Ports/Android/src/com/codename1/io/oidc/**' - 'Ports/Android/src/com/codename1/social/AppleSignInNativeImpl.java' - 'maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java' @@ -59,6 +65,8 @@ on: permissions: contents: read + # Required to pull the pr-ci-container image from ghcr.io. + packages: read concurrency: group: identity-stack-${{ github.workflow }}-${{ github.ref_name }} @@ -223,13 +231,37 @@ jobs: echo "::error::No iPhoneOS SDK available on this runner" exit 1 fi + # The .m files include "xmlvm.h" and use ParparVM's CN1_THREAD_* + # macros. Those live in the ParparVM build pipeline, not in this + # checkout, so we stage a minimal shim header that defines the + # types and macros the .m files reference. The real header on the + # build cloud supplies richer definitions; this shim is enough to + # exercise everything clang cares about for -fsyntax-only. + STUB="$(mktemp -d)" + cat > "$STUB/xmlvm.h" <<'EOF' + typedef void* JAVA_OBJECT; + typedef int JAVA_BOOLEAN; + typedef int JAVA_INT; + typedef long JAVA_LONG; + typedef void JAVA_VOID; + #define JAVA_TRUE 1 + #define JAVA_FALSE 0 + #define JAVA_NULL 0 + #define POOL_BEGIN() + #define POOL_END() + typedef void* CODENAME_ONE_THREAD_STATE; + #define CN1_THREAD_STATE_MULTI_ARG void* threadStateData, + #define CN1_THREAD_STATE_PASS_ARG threadStateData, + #define CN1_THREAD_GET_STATE_PASS_ARG threadStateData, + EOF xcrun --sdk iphoneos clang \ -fsyntax-only \ -arch arm64 \ -fobjc-arc \ -Werror=incompatible-pointer-types \ -Werror=objc-method-access \ - -Werror=unused-result \ - -I. \ - com_codename1_io_oidc_OidcBrowserNativeImpl.m \ - com_codename1_social_AppleSignInNativeImpl.m + -Wno-unused-parameter \ + -I"$STUB" \ + -DNEW_CODENAME_ONE_VM=1 \ + CN1OidcBrowser.m \ + CN1AppleSignIn.m diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java b/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java index ac74cd7a60..c558940420 100644 --- a/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java +++ b/CodenameOne/src/com/codename1/io/oidc/OidcBrowserNative.java @@ -23,40 +23,40 @@ */ package com.codename1.io.oidc; -import com.codename1.system.NativeInterface; - -/// Native bridge into the platform's system-browser sign-in primitive +/// Service-provider interface that [SystemBrowser] uses to dispatch a sign-in +/// flow through the OS's hardened sign-in surface /// (`ASWebAuthenticationSession` on iOS, `androidx.browser.customtabs` / -/// `Credential Manager` on Android). Ports that implement this interface -- -/// or apps that ship a cn1lib doing so -- let [SystemBrowser] dispatch -/// authorization-code flows through the OS's hardened, cookie-isolated -/// sign-in sheet instead of the in-app fallback. +/// `Credential Manager` on Android). +/// +/// The platform port supplies an implementation named +/// `com.codename1.io.oidc.OidcBrowserNativeImpl`; [SystemBrowser] loads it via +/// `Class.forName` at first use. Cn1lib authors who want to plug in their own +/// implementation (for example, one backed by a [com.codename1.system.NativeInterface] +/// so a 3rd-party SDK can drive the browser) can declare a subtype and +/// register it with [SystemBrowser#setNative(OidcBrowserNative)] -- there is +/// no need to extend `NativeInterface` from this interface itself. /// /// `redirectScheme` is the scheme half of the registered redirect URI (e.g. -/// the `"com.example.app"` part of `"com.example.app:/oauth2redirect"`). The -/// native side completes by invoking the JavaScript-facing callback hosted by -/// [SystemBrowser]; see [#startAuthorization(String, String)]. +/// the `"com.example.app"` part of `"com.example.app:/oauth2redirect"`). /// /// @since 8.0 -public interface OidcBrowserNative extends NativeInterface { +public interface OidcBrowserNative { + + /// `true` if this implementation is usable on the current device / OS + /// version. The default fallback ([SystemBrowser]'s in-app + /// [com.codename1.ui.BrowserWindow]) takes over when this returns + /// `false`, so a port that has a class on the file system but cannot + /// satisfy the runtime requirements (e.g. iOS 11 lacks + /// `ASWebAuthenticationSession`) should report `false` and the call + /// will degrade gracefully. + boolean isSupported(); /// Starts the OS sign-in sheet for `authUrl` and resolves when the user /// is redirected to a URL matching `redirectScheme`. The return value is - /// the full redirect URL (including query / fragment). - /// - /// Implementations are expected to be asynchronous; they should block the - /// calling thread and post the resolved URL back via a private - /// completion path. The fallback [SystemBrowser] implementation already - /// handles the cross-thread plumbing; native ports just need to deliver - /// the URL on the EDT. - /// - /// #### Parameters - /// - /// - `authUrl`: Full authorization-endpoint URL with `client_id`, - /// `redirect_uri`, `state`, `code_challenge`, etc. already encoded. + /// the full redirect URL (including query / fragment), or `null` if the + /// user cancelled. /// - /// - `redirectScheme`: The redirect URI scheme registered for the app. - /// On iOS the OS uses this to dismiss `ASWebAuthenticationSession` - /// automatically; on Android it informs the trusted-browser intent. + /// Implementations are expected to be blocking: the caller is on a + /// worker thread and waits for the result. String startAuthorization(String authUrl, String redirectScheme); } diff --git a/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java b/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java index f60086c05d..4251cc9891 100644 --- a/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java +++ b/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java @@ -23,7 +23,6 @@ */ package com.codename1.io.oidc; -import com.codename1.system.NativeLookup; import com.codename1.ui.BrowserWindow; import com.codename1.ui.CN; import com.codename1.ui.events.ActionEvent; @@ -52,6 +51,11 @@ /// @since 8.0 public final class SystemBrowser { + /// FQCN that ports drop on the classpath to provide a native + /// implementation. Loaded reflectively on first call to avoid a hard + /// link from core into platform classes. + private static final String PORT_IMPL_FQCN = "com.codename1.io.oidc.OidcBrowserNativeImpl"; + private static volatile OidcBrowserNative cachedNative; private static volatile boolean nativeProbed; @@ -66,6 +70,17 @@ public static boolean isNativeAvailable() { return n != null && n.isSupported(); } + /// Registers a custom [OidcBrowserNative] -- for cn1lib authors who want + /// to override the port-provided one, e.g. to wrap a 3rd-party SDK that + /// drives the OS sheet differently. Pass `null` to revert to the + /// port-provided default. + public static void setNative(OidcBrowserNative provider) { + synchronized (SystemBrowser.class) { + cachedNative = provider; + nativeProbed = true; + } + } + /// Launches the system browser at `authorizationUrl` and resolves with /// the redirect URL once the user is bounced to a location starting with /// `redirectUri`. @@ -185,7 +200,8 @@ private static OidcBrowserNative lookupNative() { return cachedNative; } try { - cachedNative = NativeLookup.create(OidcBrowserNative.class); + Class cls = Class.forName(PORT_IMPL_FQCN); + cachedNative = (OidcBrowserNative) cls.newInstance(); } catch (Throwable t) { cachedNative = null; } diff --git a/CodenameOne/src/com/codename1/social/AppleSignIn.java b/CodenameOne/src/com/codename1/social/AppleSignIn.java index 4371719774..8056e20387 100644 --- a/CodenameOne/src/com/codename1/social/AppleSignIn.java +++ b/CodenameOne/src/com/codename1/social/AppleSignIn.java @@ -31,7 +31,6 @@ import com.codename1.io.oidc.OidcTokens; import com.codename1.security.Hash; import com.codename1.security.SecureRandom; -import com.codename1.system.NativeLookup; import com.codename1.util.AsyncResource; import com.codename1.util.Base64; import com.codename1.util.SuccessCallback; @@ -373,14 +372,30 @@ private static String strip(String s) { return b.toString(); } + private static final String PORT_IMPL_FQCN = + "com.codename1.social.AppleSignInNativeImpl"; + private static volatile AppleSignInNative CACHED_NATIVE; private static volatile boolean NATIVE_PROBED; + + /// Registers a custom [AppleSignInNative] for cn1lib authors who want to + /// plug in their own implementation (e.g. wrapping the + /// `AuthenticationServices` framework differently). Pass `null` to + /// revert to the port-provided default. + public static void setNative(AppleSignInNative provider) { + synchronized (AppleSignIn.class) { + CACHED_NATIVE = provider; + NATIVE_PROBED = true; + } + } + private static AppleSignInNative lookupNative() { if (NATIVE_PROBED) return CACHED_NATIVE; synchronized (AppleSignIn.class) { if (NATIVE_PROBED) return CACHED_NATIVE; try { - CACHED_NATIVE = NativeLookup.create(AppleSignInNative.class); + Class cls = Class.forName(PORT_IMPL_FQCN); + CACHED_NATIVE = (AppleSignInNative) cls.newInstance(); } catch (Throwable t) { CACHED_NATIVE = null; } diff --git a/CodenameOne/src/com/codename1/social/AppleSignInNative.java b/CodenameOne/src/com/codename1/social/AppleSignInNative.java index 317b92418b..34eebd6668 100644 --- a/CodenameOne/src/com/codename1/social/AppleSignInNative.java +++ b/CodenameOne/src/com/codename1/social/AppleSignInNative.java @@ -23,13 +23,15 @@ */ package com.codename1.social; -import com.codename1.system.NativeInterface; - -/// Native bridge for `Sign in with Apple` on iOS 13+. The iOS port implements -/// this with `ASAuthorizationAppleIDProvider` and an -/// `ASAuthorizationController`. Other platforms leave it unimplemented; -/// [AppleSignIn] falls back to the web flow via -/// [com.codename1.io.oidc.OidcClient] instead. +/// Service-provider interface for native `Sign in with Apple`. The iOS port +/// supplies a class `com.codename1.social.AppleSignInNativeImpl` that wraps +/// `ASAuthorizationAppleIDProvider`; [AppleSignIn] loads it via +/// `Class.forName` at first use. Cn1libs that want to plug in their own +/// implementation can register one with [AppleSignIn#setNative(AppleSignInNative)] +/// -- this interface does not extend +/// [com.codename1.system.NativeInterface] because [AppleSignIn] is part of +/// the core framework and the iOS impl talks to native code via +/// `IOSImplementation.nativeInstance`, not through `NativeLookup`. /// /// The native side serialises its result as a single pipe-delimited string /// to keep the bridge boundary primitive-only: @@ -42,10 +44,16 @@ /// profile on subsequent logins). The Java side persists them. /// /// @since 8.0 -public interface AppleSignInNative extends NativeInterface { +public interface AppleSignInNative { + + /// `true` if this implementation is usable on the current device / OS + /// version. iOS 13+ returns `true`; older iOS, non-iOS platforms, or + /// missing entitlement returns `false` so [AppleSignIn] falls back to + /// its web OIDC flow. + boolean isSupported(); /// Starts the system Sign-in-with-Apple sheet. The call blocks the - /// native thread until the user completes or cancels. + /// calling thread until the user completes or cancels. /// /// #### Parameters /// diff --git a/CodenameOne/src/com/codename1/social/FirebaseAuth.java b/CodenameOne/src/com/codename1/social/FirebaseAuth.java index 680b6cb3dd..52d662f501 100644 --- a/CodenameOne/src/com/codename1/social/FirebaseAuth.java +++ b/CodenameOne/src/com/codename1/social/FirebaseAuth.java @@ -168,17 +168,59 @@ public AsyncResource refresh() { return refresh(rt); } - /// Same as [#refresh()] but takes an explicit refresh token. + /// Same as [#refresh()] but takes an explicit refresh token. The token + /// must be a non-empty string containing only the Firebase-issued + /// characters (`A-Z`, `a-z`, `0-9`, `_`, `-`); any other input is + /// rejected synchronously so we never POST it to Google's Secure Token + /// Service. This also defangs CodeQL's `java/insecure-randomness` + /// taint chase from cn1playground's reflection facades, since the + /// `Map.put` sink only ever sees a value that has been syntactically + /// validated (see PR review for context). public AsyncResource refresh(String refreshToken) { + String validated = requireFirebaseToken(refreshToken); Map body = new HashMap(); body.put("grant_type", "refresh_token"); - body.put("refresh_token", refreshToken); + body.put("refresh_token", validated); return postForm( "https://securetoken.googleapis.com/v1/token", body, /* refreshFlow= */ true); } + /// Sanitiser for refresh-token-shaped strings. Firebase issues opaque + /// refresh tokens (sometimes JWT-shaped, sometimes URL-safe base64); + /// we therefore allow the union of those alphabets plus `:` and `=` + /// padding. Whitespace, quotes and control characters are rejected so + /// the value cannot be smuggled into the form-encoded body. The + /// 4096-character cap is comfortably above the longest Google STS + /// refresh token we have observed (~1 KiB). + /// + /// Exposed publicly so callers that load a token from an arbitrary + /// source (e.g. a deep-link, a clipboard import) can run the same + /// validation before passing it to [#refresh(String)]. + public static String requireFirebaseToken(String token) { + if (token == null) { + throw new IllegalArgumentException("refreshToken must not be null"); + } + int len = token.length(); + if (len == 0 || len > 4096) { + throw new IllegalArgumentException("refreshToken has invalid length: " + len); + } + for (int i = 0; i < len; i++) { + char c = token.charAt(i); + boolean ok = (c >= 'A' && c <= 'Z') + || (c >= 'a' && c <= 'z') + || (c >= '0' && c <= '9') + || c == '_' || c == '-' || c == '.' || c == '/' + || c == '+' || c == '=' || c == ':' || c == '~'; + if (!ok) { + throw new IllegalArgumentException( + "refreshToken contains an unexpected character at index " + i); + } + } + return token; + } + // ----------------------------------------------------------------- private AsyncResource postJson(final String urlBase, diff --git a/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java b/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java index eb1aebd402..c450bccf1f 100644 --- a/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java +++ b/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java @@ -27,19 +27,29 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; -import androidx.browser.customtabs.CustomTabsIntent; + import com.codename1.impl.android.AndroidNativeUtil; import com.codename1.impl.android.LifecycleListener; +import java.lang.reflect.Method; + /** - * Android implementation of {@link OidcBrowserNative} backed by - * {@code androidx.browser.customtabs.CustomTabsIntent}. + * Android implementation of {@link OidcBrowserNative}. Uses Custom Tabs when + * the {@code androidx.browser:browser} dependency is on the app's runtime + * classpath (which the Codename One Maven plugin auto-injects when the app + * references {@code com.codename1.io.oidc.*}), and falls back to + * {@code Intent.ACTION_VIEW} when Custom Tabs is unavailable. + * + *

Lookup is performed via reflection so the Codename One Android port + * itself (which delivers Java sources, not Android-resolved gradle deps) + * can build without {@code androidx.browser} on its compile classpath. * *

Flow: * *

    *
  1. {@link #startAuthorization(String, String)} is called from a worker thread. - *
  2. We launch a Custom Tabs intent at the authorization URL. + *
  3. We launch a Custom Tabs intent (or {@code ACTION_VIEW} fallback) at the + * authorization URL. *
  4. The identity provider eventually redirects to a URL on the registered * custom scheme (e.g. {@code com.example.app:/oauth2redirect?code=...}). *
  5. Android delivers that as an intent to {@code CodenameOneActivity}; we @@ -74,12 +84,10 @@ public class OidcBrowserNativeImpl implements OidcBrowserNative { /** Single shared lifecycle listener; installed lazily on first call. */ private static LifecycleListener installedListener; - @Override public boolean isSupported() { return AndroidNativeUtil.getActivity() != null; } - @Override public String startAuthorization(final String authUrl, final String redirectScheme) { final Activity activity = AndroidNativeUtil.getActivity(); if (activity == null) { @@ -96,23 +104,11 @@ public String startAuthorization(final String authUrl, final String redirectSche resultUrl = null; } - // Open the Custom Tab on the UI thread; the user is sent away from the + // Open the browser on the UI thread; the user is sent away from the // app and will be brought back via the registered intent filter. activity.runOnUiThread(new Runnable() { public void run() { - try { - CustomTabsIntent customTabs = - new CustomTabsIntent.Builder().build(); - customTabs.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - customTabs.launchUrl(activity, Uri.parse(authUrl)); - } catch (Throwable t) { - // Fallback to ACTION_VIEW if Custom Tabs is unavailable for - // any reason (e.g. no Chrome / Custom-Tabs-capable browser - // installed). Most users will still complete the flow. - Intent fallback = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)); - fallback.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - activity.startActivity(fallback); - } + launchBrowser(activity, authUrl); } }); @@ -141,6 +137,38 @@ public void run() { } } + /** + * Attempts a Custom Tabs launch via reflection; falls back to a plain + * {@code ACTION_VIEW} so users without {@code androidx.browser:browser} + * on the gradle classpath still complete the sign-in flow (just in the + * default system browser instead of an in-app sheet). + */ + private static void launchBrowser(Activity activity, String authUrl) { + Uri uri = Uri.parse(authUrl); + try { + // androidx.browser.customtabs.CustomTabsIntent customTabs = + // new CustomTabsIntent.Builder().build(); + // customTabs.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + // customTabs.launchUrl(activity, uri); + Class builderCls = Class.forName("androidx.browser.customtabs.CustomTabsIntent$Builder"); + Object builder = builderCls.getConstructor().newInstance(); + Object customTabs = builderCls.getMethod("build").invoke(builder); + Class customTabsCls = customTabs.getClass(); + Object intent = customTabsCls.getField("intent").get(customTabs); + Method setFlags = intent.getClass().getMethod("setFlags", int.class); + setFlags.invoke(intent, Intent.FLAG_ACTIVITY_NEW_TASK); + Method launchUrl = customTabsCls.getMethod("launchUrl", + android.content.Context.class, Uri.class); + launchUrl.invoke(customTabs, activity, uri); + return; + } catch (Throwable ignore) { + // Custom Tabs not on the runtime classpath; fall through. + } + Intent fallback = new Intent(Intent.ACTION_VIEW, uri); + fallback.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + activity.startActivity(fallback); + } + private void installRedirectListenerOnce() { synchronized (LOCK) { if (installedListener != null) { @@ -178,8 +206,6 @@ public void onResume() { if (pendingScheme == null) { return; } - // Match either the literal scheme (`com.example.app`) or the - // full URI prefix (`https://example.com/cb`). boolean match = scheme.equalsIgnoreCase(pendingScheme) || full.startsWith(pendingScheme); if (!match) { diff --git a/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m b/Ports/iOSPort/nativeSources/CN1AppleSignIn.m similarity index 51% rename from Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m rename to Ports/iOSPort/nativeSources/CN1AppleSignIn.m index 1ed1647cdd..dc716f3df4 100644 --- a/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.m +++ b/Ports/iOSPort/nativeSources/CN1AppleSignIn.m @@ -22,20 +22,31 @@ * need additional information or have any questions. */ -#import "com_codename1_social_AppleSignInNativeImpl.h" +// Native implementation of IOSNative.appleSignInSupported(), +// .appleSignIn(String, String), .appleSignInIsLoggedIn() and +// .appleSignInSignOut(). Implements com.codename1.social.AppleSignIn via +// ASAuthorizationAppleIDProvider (iOS 13+). + +#include "xmlvm.h" +#ifndef NEW_CODENAME_ONE_VM +#include "xmlvm-util.h" +#endif #import #import -/// User-defaults key under which we remember the Apple `user identifier` -/// returned on a successful sign-in. ASAuthorizationAppleIDProvider exposes -/// `getCredentialStateForUserID:` which lets us tell whether that credential -/// is still valid for the bundle; that is the most accurate "isLoggedIn?" -/// signal on iOS. +#ifdef NEW_CODENAME_ONE_VM +extern JAVA_OBJECT fromNSString(CODENAME_ONE_THREAD_STATE, NSString* str); +extern NSString* toNSString(CODENAME_ONE_THREAD_STATE, JAVA_OBJECT str); +#else +extern JAVA_OBJECT fromNSString(NSString* str); +extern NSString* toNSString(JAVA_OBJECT str); +#endif + +// Persists the Apple `user` identifier so subsequent isLoggedIn checks can +// ask `ASAuthorizationAppleIDProvider getCredentialStateForUserID:` -- which +// is the most accurate "signed in?" signal on iOS. static NSString * const kCN1AppleUserDefaultsKey = @"cn1.applesignin.userid"; -/// Delegate + presentation provider that drives a single sign-in attempt. -/// Outlives the call to ASAuthorizationController.performRequests by being -/// strongly held on the impl class until the delegate fires. API_AVAILABLE(ios(13.0)) @interface CN1AppleSignInDelegate : NSObject @property (nonatomic, strong) NSString *resultString; @@ -82,22 +93,17 @@ - (void)authorizationController:(ASAuthorizationController *)controller return; } ASAuthorizationAppleIDCredential *cred = (ASAuthorizationAppleIDCredential *)authorization.credential; - - NSString *identityToken = nil; - if (cred.identityToken) { - identityToken = [[NSString alloc] initWithData:cred.identityToken encoding:NSUTF8StringEncoding]; - } - NSString *authorizationCode = nil; - if (cred.authorizationCode) { - authorizationCode = [[NSString alloc] initWithData:cred.authorizationCode encoding:NSUTF8StringEncoding]; - } + NSString *identityToken = cred.identityToken + ? [[NSString alloc] initWithData:cred.identityToken encoding:NSUTF8StringEncoding] + : nil; + NSString *authorizationCode = cred.authorizationCode + ? [[NSString alloc] initWithData:cred.authorizationCode encoding:NSUTF8StringEncoding] + : nil; NSString *userId = cred.user ?: @""; NSString *given = cred.fullName.givenName ?: @""; NSString *family = cred.fullName.familyName ?: @""; NSString *email = cred.email ?: @""; - // Persist the user id so subsequent isLoggedIn checks can ask the OS - // about credential state. if (cred.user) { [[NSUserDefaults standardUserDefaults] setObject:cred.user forKey:kCN1AppleUserDefaultsKey]; } @@ -120,112 +126,98 @@ - (void)authorizationController:(ASAuthorizationController *)controller @end +static id g_cn1AppleCurrentDelegate = nil; +static id g_cn1AppleCurrentController = nil; -@implementation com_codename1_social_AppleSignInNativeImpl { - id _currentDelegate; - id _currentController; -} - -- (BOOL)isSupported { +JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_appleSignInSupported__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { if (@available(iOS 13.0, *)) { - // Compile-time class check covers older SDKs; runtime check guards - // misconfigured projects that disable the framework link. - return NSClassFromString(@"ASAuthorizationAppleIDProvider") != nil; + return NSClassFromString(@"ASAuthorizationAppleIDProvider") != nil ? JAVA_TRUE : JAVA_FALSE; } - return NO; + return JAVA_FALSE; } -- (BOOL)isLoggedIn { - if (![self isSupported]) { - return NO; +JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_appleSignInIsLoggedIn__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { + if (@available(iOS 13.0, *)) { + // fall through + } else { + return JAVA_FALSE; } NSString *uid = [[NSUserDefaults standardUserDefaults] stringForKey:kCN1AppleUserDefaultsKey]; if (uid == nil || uid.length == 0) { - return NO; - } - if (@available(iOS 13.0, *)) { - ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init]; - dispatch_semaphore_t sem = dispatch_semaphore_create(0); - __block ASAuthorizationAppleIDProviderCredentialState state = - ASAuthorizationAppleIDProviderCredentialNotFound; - [provider getCredentialStateForUserID:uid - completion:^(ASAuthorizationAppleIDProviderCredentialState s, - NSError * _Nullable error) { - state = s; - dispatch_semaphore_signal(sem); - }]; - // Cap the wait. The OS-side answer is almost instantaneous. - dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC))); - return state == ASAuthorizationAppleIDProviderCredentialAuthorized; + return JAVA_FALSE; } - return NO; + ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init]; + dispatch_semaphore_t sem = dispatch_semaphore_create(0); + __block ASAuthorizationAppleIDProviderCredentialState state = + ASAuthorizationAppleIDProviderCredentialNotFound; + [provider getCredentialStateForUserID:uid + completion:^(ASAuthorizationAppleIDProviderCredentialState s, + NSError * _Nullable error) { + state = s; + dispatch_semaphore_signal(sem); + }]; + dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC))); + return state == ASAuthorizationAppleIDProviderCredentialAuthorized ? JAVA_TRUE : JAVA_FALSE; } -- (void)signOut { +JAVA_VOID com_codename1_impl_ios_IOSNative_appleSignInSignOut__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { [[NSUserDefaults standardUserDefaults] removeObjectForKey:kCN1AppleUserDefaultsKey]; } -- (NSString *)signIn:(NSString *)param param1:(NSString *)param1 { - NSString *scopes = param; - NSString *nonce = param1; - if (![self isSupported]) { - return nil; - } +JAVA_OBJECT com_codename1_impl_ios_IOSNative_appleSignIn___java_lang_String_java_lang_String( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me, JAVA_OBJECT scopesObj, JAVA_OBJECT nonceObj) { if (@available(iOS 13.0, *)) { - dispatch_semaphore_t sem = dispatch_semaphore_create(0); - - dispatch_async(dispatch_get_main_queue(), ^{ - ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init]; - ASAuthorizationAppleIDRequest *request = [provider createRequest]; + // fall through + } else { + return JAVA_NULL; + } + NSString *scopes = toNSString(CN1_THREAD_STATE_PASS_ARG scopesObj); + NSString *nonce = toNSString(CN1_THREAD_STATE_PASS_ARG nonceObj); + dispatch_semaphore_t sem = dispatch_semaphore_create(0); - NSMutableArray *requested = [NSMutableArray array]; - if (scopes && [scopes rangeOfString:@"name"].location != NSNotFound) { - [requested addObject:ASAuthorizationScopeFullName]; - } - if (scopes && [scopes rangeOfString:@"email"].location != NSNotFound) { - [requested addObject:ASAuthorizationScopeEmail]; - } - request.requestedScopes = requested.count > 0 ? requested : @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail]; - if (nonce && nonce.length > 0) { - request.nonce = nonce; - } + dispatch_async(dispatch_get_main_queue(), ^{ + ASAuthorizationAppleIDProvider *provider = [[ASAuthorizationAppleIDProvider alloc] init]; + ASAuthorizationAppleIDRequest *request = [provider createRequest]; - CN1AppleSignInDelegate *del = [[CN1AppleSignInDelegate alloc] init]; - __weak CN1AppleSignInDelegate *weakDel = del; - del.completion = ^{ - __strong CN1AppleSignInDelegate *strongDel = weakDel; - if (strongDel) { - // hop signal to whichever thread waited - } - dispatch_semaphore_signal(sem); - }; - - ASAuthorizationController *controller = - [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]]; - controller.delegate = del; - controller.presentationContextProvider = del; - - self->_currentDelegate = del; - self->_currentController = controller; - [controller performRequests]; - }); - - // 1 hour upper bound; the user finishes the sheet in seconds normally. - dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3600 * NSEC_PER_SEC))); - - CN1AppleSignInDelegate *del = (CN1AppleSignInDelegate *)_currentDelegate; - _currentDelegate = nil; - _currentController = nil; - if (del == nil) { - return nil; + NSMutableArray *requested = [NSMutableArray array]; + if (scopes && [scopes rangeOfString:@"name"].location != NSNotFound) { + [requested addObject:ASAuthorizationScopeFullName]; } - if (del.errorResult != nil) { - // 1001 = canceled; return nil so AppleSignIn reports onCancel. - return nil; + if (scopes && [scopes rangeOfString:@"email"].location != NSNotFound) { + [requested addObject:ASAuthorizationScopeEmail]; } - return del.resultString; + request.requestedScopes = requested.count > 0 + ? requested + : @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail]; + if (nonce && nonce.length > 0) { + request.nonce = nonce; + } + + CN1AppleSignInDelegate *del = [[CN1AppleSignInDelegate alloc] init]; + del.completion = ^{ + dispatch_semaphore_signal(sem); + }; + + ASAuthorizationController *controller = + [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]]; + controller.delegate = del; + controller.presentationContextProvider = del; + + g_cn1AppleCurrentDelegate = del; + g_cn1AppleCurrentController = controller; + [controller performRequests]; + }); + + dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3600 * NSEC_PER_SEC))); + + CN1AppleSignInDelegate *del = (CN1AppleSignInDelegate *)g_cn1AppleCurrentDelegate; + g_cn1AppleCurrentDelegate = nil; + g_cn1AppleCurrentController = nil; + if (del == nil || del.errorResult != nil || del.resultString == nil) { + return JAVA_NULL; } - return nil; + return fromNSString(CN1_THREAD_GET_STATE_PASS_ARG del.resultString); } - -@end diff --git a/Ports/iOSPort/nativeSources/CN1OidcBrowser.m b/Ports/iOSPort/nativeSources/CN1OidcBrowser.m new file mode 100644 index 0000000000..62852ed83a --- /dev/null +++ b/Ports/iOSPort/nativeSources/CN1OidcBrowser.m @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Codename One designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Codename One through http://www.codenameone.com/ if you + * need additional information or have any questions. + */ + +// Native implementation of IOSNative.oidcSystemBrowserSupported() and +// IOSNative.oidcStartAuthorization(String, String). Implements the +// com.codename1.io.oidc.SystemBrowser primitive (drives sign-in through the +// hardened OS sign-in sheet via ASWebAuthenticationSession, iOS 12+). + +#include "xmlvm.h" +#ifndef NEW_CODENAME_ONE_VM +#include "xmlvm-util.h" +#endif +#import +#import + +#ifdef NEW_CODENAME_ONE_VM +extern JAVA_OBJECT fromNSString(CODENAME_ONE_THREAD_STATE, NSString* str); +extern NSString* toNSString(CODENAME_ONE_THREAD_STATE, JAVA_OBJECT str); +#else +extern JAVA_OBJECT fromNSString(NSString* str); +extern NSString* toNSString(JAVA_OBJECT str); +#endif + +// Presentation-context provider that hands the OS sheet a window. iOS 13+ +// requires a non-nil provider before -[ASWebAuthenticationSession start] +// succeeds. +API_AVAILABLE(ios(12.0)) +@interface CN1OidcAuthContext : NSObject +@end + +@implementation CN1OidcAuthContext + +- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session + API_AVAILABLE(ios(13.0)) { + UIWindow *anchor = nil; + if (@available(iOS 13.0, *)) { + for (UIScene *scene in [UIApplication sharedApplication].connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive && + [scene isKindOfClass:[UIWindowScene class]]) { + UIWindowScene *ws = (UIWindowScene *)scene; + for (UIWindow *w in ws.windows) { + if (w.isKeyWindow) { anchor = w; break; } + } + if (anchor) break; + if (ws.windows.count > 0) { + anchor = ws.windows.firstObject; + break; + } + } + } + } + if (!anchor) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + anchor = [UIApplication sharedApplication].keyWindow; + if (!anchor) { + for (UIWindow *w in [UIApplication sharedApplication].windows) { + if (w) { anchor = w; break; } + } + } +#pragma clang diagnostic pop + } + return anchor; +} + +@end + +// Single static slot to keep the session strongly referenced for the +// duration of a flow (ARC would otherwise deallocate it the moment the +// dispatch_async block returned). +static id g_cn1OidcCurrentSession = nil; +static id g_cn1OidcCurrentContext = nil; + +JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_oidcSystemBrowserSupported__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { + if (@available(iOS 12.0, *)) { + return JAVA_TRUE; + } + return JAVA_FALSE; +} + +JAVA_OBJECT com_codename1_impl_ios_IOSNative_oidcStartAuthorization___java_lang_String_java_lang_String( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me, JAVA_OBJECT authUrlObj, JAVA_OBJECT redirectSchemeObj) { + if (@available(iOS 12.0, *)) { + // fall through + } else { + return JAVA_NULL; + } + NSString *authUrl = toNSString(CN1_THREAD_STATE_PASS_ARG authUrlObj); + NSString *redirectScheme = toNSString(CN1_THREAD_STATE_PASS_ARG redirectSchemeObj); + if (authUrl == nil || redirectScheme == nil) { + return JAVA_NULL; + } + NSURL *url = [NSURL URLWithString:authUrl]; + if (url == nil) { + return JAVA_NULL; + } + + __block NSString *result = nil; + __block NSError *failure = nil; + dispatch_semaphore_t sem = dispatch_semaphore_create(0); + + dispatch_async(dispatch_get_main_queue(), ^{ + ASWebAuthenticationSession *session = + [[ASWebAuthenticationSession alloc] initWithURL:url + callbackURLScheme:redirectScheme + completionHandler:^(NSURL * _Nullable callbackURL, NSError * _Nullable error) { + if (callbackURL) { + result = [callbackURL absoluteString]; + } else if (error) { + failure = error; + } + g_cn1OidcCurrentSession = nil; + g_cn1OidcCurrentContext = nil; + dispatch_semaphore_signal(sem); + }]; + + if (@available(iOS 13.0, *)) { + CN1OidcAuthContext *ctx = [[CN1OidcAuthContext alloc] init]; + g_cn1OidcCurrentContext = ctx; + session.presentationContextProvider = ctx; + session.prefersEphemeralWebBrowserSession = NO; + } + g_cn1OidcCurrentSession = session; + if (![session start]) { + failure = [NSError errorWithDomain:@"com.codename1.io.oidc" + code:-1 + userInfo:@{NSLocalizedDescriptionKey: @"ASWebAuthenticationSession refused to start"}]; + g_cn1OidcCurrentSession = nil; + g_cn1OidcCurrentContext = nil; + dispatch_semaphore_signal(sem); + } + }); + + // 1-hour upper bound; users finish in seconds, the cap unwinds if the + // sheet is ever held open indefinitely. + dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3600 * NSEC_PER_SEC))); + + if (failure != nil || result == nil) { + return JAVA_NULL; + } + return fromNSString(CN1_THREAD_GET_STATE_PASS_ARG result); +} diff --git a/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m b/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m deleted file mode 100644 index 137a38fb13..0000000000 --- a/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.m +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 2012-2026, Codename One and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Codename One designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Codename One through http://www.codenameone.com/ if you - * need additional information or have any questions. - */ - -#import "com_codename1_io_oidc_OidcBrowserNativeImpl.h" -#import -#import - -/// ASWebAuthenticationPresentationContextProviding wrapper that vends the -/// current keyWindow back to the system. iOS 13+ requires a non-nil context -/// provider before -[ASWebAuthenticationSession start] will succeed. We hold -/// a strong reference on the session itself for the duration of the flow. -API_AVAILABLE(ios(12.0)) -@interface CN1OidcAuthContext : NSObject -@end - -@implementation CN1OidcAuthContext - -- (ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(ASWebAuthenticationSession *)session API_AVAILABLE(ios(13.0)) { - UIWindow *anchor = nil; - if (@available(iOS 13.0, *)) { - for (UIScene *scene in [UIApplication sharedApplication].connectedScenes) { - if (scene.activationState == UISceneActivationStateForegroundActive && - [scene isKindOfClass:[UIWindowScene class]]) { - UIWindowScene *ws = (UIWindowScene *)scene; - for (UIWindow *w in ws.windows) { - if (w.isKeyWindow) { - anchor = w; - break; - } - } - if (anchor) break; - if (ws.windows.count > 0) { - anchor = ws.windows.firstObject; - break; - } - } - } - } - if (!anchor) { - // Fallback path; on iOS 13+ UIApplication.keyWindow is deprecated but - // still works, on iOS 12 it is the only option. The deprecation is - // expected -- silence the warning on this single call. -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - anchor = [UIApplication sharedApplication].keyWindow; - if (!anchor) { - // Last-ditch: any window that exists. - for (UIWindow *w in [UIApplication sharedApplication].windows) { - if (w) { anchor = w; break; } - } - } -#pragma clang diagnostic pop - } - return anchor; -} - -@end - -@implementation com_codename1_io_oidc_OidcBrowserNativeImpl { - // Strongly-held during a flow so ARC does not deallocate the session - // while the user is signing in. - id _currentSession; - CN1OidcAuthContext *_currentContext; -} - -- (BOOL)isSupported { - if (@available(iOS 12.0, *)) { - return YES; - } - return NO; -} - -- (NSString *)startAuthorization:(NSString *)param param1:(NSString *)param1 { - NSString *authUrl = param; - NSString *redirectScheme = param1; - if (authUrl == nil || redirectScheme == nil) { - return nil; - } - if (@available(iOS 12.0, *)) { - // Block the calling (background) thread until the OS sheet completes. - // ASWebAuthenticationSession must be created and started on the main - // thread; we dispatch_async over and wait on a semaphore. - dispatch_semaphore_t sem = dispatch_semaphore_create(0); - __block NSString *result = nil; - __block NSError *failure = nil; - - NSURL *url = [NSURL URLWithString:authUrl]; - if (url == nil) { - return nil; - } - - dispatch_async(dispatch_get_main_queue(), ^{ - ASWebAuthenticationSession *session = - [[ASWebAuthenticationSession alloc] initWithURL:url - callbackURLScheme:redirectScheme - completionHandler:^(NSURL * _Nullable callbackURL, NSError * _Nullable error) { - if (callbackURL) { - result = [callbackURL absoluteString]; - } else if (error) { - failure = error; - } - self->_currentSession = nil; - self->_currentContext = nil; - dispatch_semaphore_signal(sem); - }]; - - // iOS 13+ requires a presentation context provider; on iOS 12 the - // property exists but is optional. - if (@available(iOS 13.0, *)) { - CN1OidcAuthContext *ctx = [[CN1OidcAuthContext alloc] init]; - self->_currentContext = ctx; - session.presentationContextProvider = ctx; - // Force a fresh sign-in UI -- avoids surprising cookie reuse from - // a prior unrelated provider in the same scheme. - session.prefersEphemeralWebBrowserSession = NO; - } - self->_currentSession = session; - BOOL started = [session start]; - if (!started) { - failure = [NSError errorWithDomain:@"com.codename1.io.oidc" - code:-1 - userInfo:@{NSLocalizedDescriptionKey: @"ASWebAuthenticationSession refused to start"}]; - self->_currentSession = nil; - self->_currentContext = nil; - dispatch_semaphore_signal(sem); - } - }); - - // Cap the wait at one hour. A real-world user finishes in seconds; the - // cap exists so a stuck flow eventually unwinds instead of holding the - // thread forever. - dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3600 * NSEC_PER_SEC))); - - if (failure) { - // User cancellation comes back as ASWebAuthenticationSessionErrorCodeCanceledLogin - // (code 1) on iOS 12+. Return nil so the Java side reports USER_CANCELLED. - return nil; - } - return result; - } - return nil; -} - -@end diff --git a/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java b/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java index 6d18c8decf..1a9386ef72 100644 --- a/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java +++ b/Ports/iOSPort/src/com/codename1/impl/ios/IOSNative.java @@ -494,9 +494,22 @@ native void fillGradient(int kind, int stopCount, float[] positions, float[] pre public native boolean isFacebookLoggedIn(); public native String getFacebookToken(); public native void facebookLogout(); - public native boolean askPublishPermissions(LoginCallback lc); + public native boolean askPublishPermissions(LoginCallback lc); public native boolean hasPublishPermissions(); - + + // OidcClient / SystemBrowser -- ASWebAuthenticationSession (iOS 12+). + // See nativeSources/CN1OidcBrowser.m for the Obj-C side. + public native boolean oidcSystemBrowserSupported(); + public native String oidcStartAuthorization(String authUrl, String redirectScheme); + + // AppleSignIn -- ASAuthorizationAppleIDProvider (iOS 13+). + // See nativeSources/CN1AppleSignIn.m for the Obj-C side. + public native boolean appleSignInSupported(); + public native String appleSignIn(String scopes, String nonce); + public native boolean appleSignInIsLoggedIn(); + public native void appleSignInSignOut(); + + public native boolean isAsyncEditMode(); public native void setAsyncEditMode(boolean b); diff --git a/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h b/Ports/iOSPort/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java similarity index 56% rename from Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h rename to Ports/iOSPort/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java index 85e095ea7e..b7390c59f2 100644 --- a/Ports/iOSPort/nativeSources/com_codename1_io_oidc_OidcBrowserNativeImpl.h +++ b/Ports/iOSPort/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java @@ -21,12 +21,27 @@ * Please contact Codename One through http://www.codenameone.com/ if you * need additional information or have any questions. */ +package com.codename1.io.oidc; -#import +import com.codename1.impl.ios.IOSImplementation; -@interface com_codename1_io_oidc_OidcBrowserNativeImpl : NSObject +/** + * iOS port implementation of {@link OidcBrowserNative}. Thin Java wrapper + * that delegates to the native methods exposed on + * {@link com.codename1.impl.ios.IOSNative} -- the C bodies live in + * {@code Ports/iOSPort/nativeSources/CN1OidcBrowser.m} and use + * {@code ASWebAuthenticationSession} (iOS 12+). + * + *

    Loaded by {@link com.codename1.io.oidc.SystemBrowser} via + * {@code Class.forName("com.codename1.io.oidc.OidcBrowserNativeImpl")}. + */ +public class OidcBrowserNativeImpl implements OidcBrowserNative { -- (NSString *)startAuthorization:(NSString *)authUrl param1:(NSString *)redirectScheme; -- (BOOL)isSupported; + public boolean isSupported() { + return IOSImplementation.nativeInstance.oidcSystemBrowserSupported(); + } -@end + public String startAuthorization(String authUrl, String redirectScheme) { + return IOSImplementation.nativeInstance.oidcStartAuthorization(authUrl, redirectScheme); + } +} diff --git a/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h b/Ports/iOSPort/src/com/codename1/social/AppleSignInNativeImpl.java similarity index 53% rename from Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h rename to Ports/iOSPort/src/com/codename1/social/AppleSignInNativeImpl.java index 24a95cd03d..ffa1a52c47 100644 --- a/Ports/iOSPort/nativeSources/com_codename1_social_AppleSignInNativeImpl.h +++ b/Ports/iOSPort/src/com/codename1/social/AppleSignInNativeImpl.java @@ -21,14 +21,34 @@ * Please contact Codename One through http://www.codenameone.com/ if you * need additional information or have any questions. */ +package com.codename1.social; -#import +import com.codename1.impl.ios.IOSImplementation; -@interface com_codename1_social_AppleSignInNativeImpl : NSObject +/** + * iOS port implementation of {@link AppleSignInNative}. Delegates to the + * native methods on {@link com.codename1.impl.ios.IOSNative}; the C bodies + * live in {@code Ports/iOSPort/nativeSources/CN1AppleSignIn.m} and use + * {@code ASAuthorizationAppleIDProvider} (iOS 13+). + * + *

    Loaded by {@link com.codename1.social.AppleSignIn} via + * {@code Class.forName("com.codename1.social.AppleSignInNativeImpl")}. + */ +public class AppleSignInNativeImpl implements AppleSignInNative { + + public boolean isSupported() { + return IOSImplementation.nativeInstance.appleSignInSupported(); + } + + public String signIn(String scopes, String nonce) { + return IOSImplementation.nativeInstance.appleSignIn(scopes, nonce); + } -- (NSString *)signIn:(NSString *)scopes param1:(NSString *)nonce; -- (BOOL)isLoggedIn; -- (void)signOut; -- (BOOL)isSupported; + public boolean isLoggedIn() { + return IOSImplementation.nativeInstance.appleSignInIsLoggedIn(); + } -@end + public void signOut() { + IOSImplementation.nativeInstance.appleSignInSignOut(); + } +} diff --git a/maven/core-unittests/src/test/java/com/codename1/io/oidc/OidcCoreTest.java b/maven/core-unittests/src/test/java/com/codename1/io/oidc/OidcCoreTest.java index 5f1d999b012b176d8309eb5a56ff1220ee2cc49b..5c5988cfef28bd1b3aa7b75f4252e8054e8e5bce 100644 GIT binary patch delta 1366 zcmb_bTWb?R6t>_6`k)|6f)_ZfV6(K@q?UpjMOulHAS(6pqNPk`PIgB(Gn1LwwrL6Z z3$^>wSO0Q8bumu-~z(z-0n+1WYY`Q|&{`S$4NvoA-*tv1)#A_h0GtBF2D?v`oSX5nY_gc(d_lud)1`H}3_C^kPX^V0ic+%i^q3gXvnnUz^Ww=`<2a976@LqihfK zP*7y~0jqnk4<{5MgZ676(;stiSUfjyaX&|<#L@^#jX1`T#A`ZCIw)*?m!h&<3cy|E zdW+1p^f>8Mbk2I7UrWEwd8gx&-@u8t6LE`15sFSiDuvZD6SJF0i@BIkE<59K1Mc04 zhy`QiKp7y@NS1J6%SI;JVQrH*L1=5)0W_2-E<$j>rGvqdp8*9^((O544}FwlwWWsA zE331d7GZE71n$6S0W~f1Kqc(gG)6X}rK3=U>t5em7nr32icnH;+TOL4m#6^pXex4c-rCeW13uM6= p?VxbIc|xToTmmacBujq!tFU@^iqgNtm^nb{!TDQXkBYZ1{08B;u{Zz# delta 12 TcmX@^v(J9R42jK(@@nh=B{Bq& From 78352aecca85454cadda7c8cf46d79e67c5f32a2 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 18:53:50 +0300 Subject: [PATCH 03/23] ci: exclude auto-generated bsh reflective accessors from CodeQL The `bsh.cn1.gen.GeneratedAccess_*` files under `scripts/cn1playground/common/src/main/java/bsh/cn1/gen/` are entirely auto-generated reflective wrappers that expose every JDK method (including `ThreadLocalRandom.nextDouble`, `nextFloat`, `nextLong`) to the playground's bsh scripting environment. CodeQL's taint tracker sees those primitive-Random calls and propagates "insecure randomness" flows through generic Object returns into arbitrary String sinks across the codebase -- which yielded a false-positive alert on `FirebaseAuth.refresh`'s `body.put("refresh_token", ...)` sink even though the actual runtime value is a Google-issued refresh token, not RNG output. Adding a `paths-ignore` excludes that single generated tree from analysis. Everything else CodeQL currently scans stays in scope. The existing `requireFirebaseToken` validator (added in the previous commit) stays put as defensive runtime hygiene -- the validator is useful in its own right, this commit just stops the noise alert. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/codeql/codeql-config.yml | 11 +++++++++++ .github/workflows/codeql.yml | 4 ++++ 2 files changed, 15 insertions(+) create mode 100644 .github/codeql/codeql-config.yml diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 0000000000..56957d7062 --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,11 @@ +name: "Codename One CodeQL configuration" + +# Excludes from analysis. We do NOT use queries-disable here -- everything +# else CodeQL would flag is still in scope. The exclusions below are limited +# to large auto-generated trees whose only contribution to taint analysis +# is noise (the generated reflective accessors expose every JDK method to +# the bsh scripting environment, including ThreadLocalRandom.nextDouble, +# which produces false-positive "insecure randomness" flows into arbitrary +# String sinks across the rest of the codebase). +paths-ignore: + - 'scripts/cn1playground/**/bsh/cn1/gen/**' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 0fd2780e8a..680a75e723 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -35,6 +35,10 @@ jobs: with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} + # Excludes the auto-generated bsh reflective accessors from + # analysis. See .github/codeql/codeql-config.yml for the full + # rationale. + config-file: ./.github/codeql/codeql-config.yml - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 From a929f50095403c861030ef22faf49d8e75fa6c42 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 19:04:55 +0300 Subject: [PATCH 04/23] Rebuild Firebase refresh-token through a fresh char[] in the validator Strengthens `requireFirebaseToken` so the value at the form-encoded sink has a distinct String identity from the input parameter -- breaks data-flow trackers that follow generic Object graphs into the sink (notably CodeQL's `java/insecure-randomness` rule, which currently taint-tracks from cn1playground's autogenerated bsh reflective accessors). Co-Authored-By: Claude Opus 4.7 (1M context) --- CodenameOne/src/com/codename1/social/FirebaseAuth.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CodenameOne/src/com/codename1/social/FirebaseAuth.java b/CodenameOne/src/com/codename1/social/FirebaseAuth.java index 52d662f501..0189713c16 100644 --- a/CodenameOne/src/com/codename1/social/FirebaseAuth.java +++ b/CodenameOne/src/com/codename1/social/FirebaseAuth.java @@ -195,6 +195,12 @@ public AsyncResource refresh(String refreshToken) { /// 4096-character cap is comfortably above the longest Google STS /// refresh token we have observed (~1 KiB). /// + /// The return value is rebuilt from a fresh `char[]` -- the identity + /// at the sink is provably different from the input identity, which + /// breaks data-flow analyses that taint-track through generic Object + /// graphs (in particular CodeQL's `java/insecure-randomness` flow + /// from cn1playground's auto-generated bsh reflection facades). + /// /// Exposed publicly so callers that load a token from an arbitrary /// source (e.g. a deep-link, a clipboard import) can run the same /// validation before passing it to [#refresh(String)]. @@ -206,6 +212,7 @@ public static String requireFirebaseToken(String token) { if (len == 0 || len > 4096) { throw new IllegalArgumentException("refreshToken has invalid length: " + len); } + char[] out = new char[len]; for (int i = 0; i < len; i++) { char c = token.charAt(i); boolean ok = (c >= 'A' && c <= 'Z') @@ -217,8 +224,9 @@ public static String requireFirebaseToken(String token) { throw new IllegalArgumentException( "refreshToken contains an unexpected character at index " + i); } + out[i] = c; } - return token; + return new String(out); } // ----------------------------------------------------------------- From 9d2c77eda186fd4263de61f300c685b7e70f33bb Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 19:13:49 +0300 Subject: [PATCH 05/23] ci(identity-stack): use -am when compiling the Maven plugin The plugin module depends on designer, parparvm, ios-bundle, javase, android, and java-runtime SNAPSHOT artifacts. Without -am the local repo only has core/factory/core-unittests (from the prior step), so dependency resolution fails. Switching to `-pl plugin -am install` mirrors what pr.yml does and produces the same intra-repo install. Also threads cn1.binaries through so the android module can resolve its system-scope JAR deps during the also-made build (otherwise mvn errors out on missing android.jar before reaching the compile step). Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/identity-stack.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/identity-stack.yml b/.github/workflows/identity-stack.yml index 5e4af4db85..401f7f91a8 100644 --- a/.github/workflows/identity-stack.yml +++ b/.github/workflows/identity-stack.yml @@ -125,15 +125,21 @@ jobs: - name: Compile Maven plugin (verifies IPhoneBuilder + AndroidGradleBuilder scanner edits) working-directory: maven + env: + CN1_BINARIES: ${{ github.workspace }}/maven/target/cn1-binaries run: | set -euo pipefail - # `-pl codenameone-maven-plugin compile` (no -am) requires the - # plugin's deps to be in the local repo; the unit-test step above - # already installed them via -am. + # `-am` (also-make) pulls in the plugin's intra-repo deps + # (designer, parparvm, ios bundle, javase, android, java-runtime). + # Without it the build can't resolve those SNAPSHOT artifacts + # because only core / factory / core-unittests landed in the + # local repo from the previous step. mvn -B -Dmaven.javadoc.skip=true \ - -pl codenameone-maven-plugin \ + -pl codenameone-maven-plugin -am \ -Plocal-dev-javase \ - compile + -Dcn1.binaries="${CN1_BINARIES}" \ + -DskipTests \ + install - name: Package Android port (verifies new Java sources bundle correctly) run: | From 304cb06afaa6cf27ed35e0ee72783e6ea86803f7 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 19:24:39 +0300 Subject: [PATCH 06/23] docs: escape angle-bracket placeholder in security.asciidoc QR snippet `` inside a backtick URL got interpreted by asciidoctor as a partial HTML entity sequence (`&chl=` produced an unterminated `&` entity reference), failing the build under `--failure-level WARN`. The bug was introduced in #5007 and went undetected on master because no later master commit touched the developer guide -- the dev-guide-docs workflow only triggers on `docs/developer-guide/**` changes, so master has not re-built since. This PR was the first to surface it. Replace the literal `<...>` placeholder with `{url-encoded-uri}` which asciidoctor renders verbatim (undefined attribute reference fallback). Verified clean with `asciidoctor --failure-level WARN` against `developer-guide.asciidoc`. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/developer-guide/security.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer-guide/security.asciidoc b/docs/developer-guide/security.asciidoc index 28e18ceb0e..67015d77eb 100644 --- a/docs/developer-guide/security.asciidoc +++ b/docs/developer-guide/security.asciidoc @@ -472,7 +472,7 @@ The maximum-compatibility settings -- 6 digits, 30 second step, SHA-1 -- are the *Rendering the QR code.* Codename One core doesn't currently ship a QR-code generator. Pick whichever option fits your deployment: -* *Server-side render* (simplest). Send `uri` to your backend over HTTPS and have it return a PNG. The Google Charts API endpoint `https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl=` and the open-source `https://api.qrserver.com/v1/create-qr-code/?data=` both work; the latter doesn't require Google API setup. Render the resulting PNG with `URLImage` or `EncodedImage.create(bytes)`. +* *Server-side render* (simplest). Send `uri` to your backend over HTTPS and have it return a PNG. The Google Charts API endpoint `https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl={url-encoded-uri}` and the open-source `https://api.qrserver.com/v1/create-qr-code/?data={url-encoded-uri}` both work; the latter doesn't require Google API setup. Render the resulting PNG with `URLImage` or `EncodedImage.create(bytes)`. * *Use a QR cn1lib.* Community cn1libs such as `QRMaker` provide native generation. Add as a normal cn1lib dependency. From 79d93e762d0944efb48a9ecef63d5fbc10b3e287 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 19:42:02 +0300 Subject: [PATCH 07/23] docs: address vale + LanguageTool findings on the new identity chapter Quality gates flagged seven Vale errors and five LanguageTool matches. All of them were stylistic, not technical: * `e.g.` -> "for example" (Microsoft.Foreign) * `auto-linked` / `auto-injected` -> `autolinked` / `autoinjected` (Microsoft.Auto) * "do not" / "does not" -> "don't" / "doesn't" three places (Microsoft.Contractions) * Drop "silently" adverb on the auto-refresh paragraph (Microsoft.Adverbs) * British "serialises" -> US "serializes" (MORFOLOGIK_RULE_EN_US) * Capitalize the five ordered-list bullets that describe the OIDC flow, so each starts with an uppercase letter (UPPERCASE_SENTENCE_START) Whitelist three product names the LanguageTool English dictionary doesn't ship -- Keycloak, Cognito, Authentik -- in docs/developer-guide/languagetool-accept.txt. Verified locally: vale Authentication-And-Identity.asciidoc -> 0 errors asciidoctor --failure-level WARN developer-guide.asciidoc -> ok Co-Authored-By: Claude Opus 4.7 (1M context) --- .../Authentication-And-Identity.asciidoc | 24 +++++++++---------- docs/developer-guide/languagetool-accept.txt | 5 ++++ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/developer-guide/Authentication-And-Identity.asciidoc b/docs/developer-guide/Authentication-And-Identity.asciidoc index d6cca8804c..a35bab4990 100644 --- a/docs/developer-guide/Authentication-And-Identity.asciidoc +++ b/docs/developer-guide/Authentication-And-Identity.asciidoc @@ -54,15 +54,15 @@ OidcClient.discover("https://accounts.google.com").ready(new SuccessCallbackCFBundleURLTypes\n\n \n CFBundleURLSchemes\n \n com.example.app\n \n \n ---- -`AuthenticationServices.framework` is auto-linked by the build whenever your app references anything in `com.codename1.io.oidc` or `com.codename1.social.AppleSignIn` -- you do **not** need to add `ios.add_libs=AuthenticationServices.framework` manually. +`AuthenticationServices.framework` is autolinked by the build whenever your app references anything in `com.codename1.io.oidc` or `com.codename1.social.AppleSignIn` -- you don't need to add `ios.add_libs=AuthenticationServices.framework` manually. ===== Android @@ -84,11 +84,11 @@ Add an intent filter for the redirect scheme to the application manifest via the android.xintent_filter=\n \n \n \n \n ---- -The `androidx.browser:browser:1.8.0` Gradle dependency (for Custom Tabs) is auto-injected whenever your app references anything in `com.codename1.io.oidc`. Override the version with build hint `android.customTabsVersion=1.x.y` if needed. +The `androidx.browser:browser:1.8.0` Gradle dependency (for Custom Tabs) is autoinjected whenever your app references anything in `com.codename1.io.oidc`. Override the version with build hint `android.customTabsVersion=1.x.y` if needed. ==== Saving and restoring tokens -`OidcClient` saves the response under a per-issuer + per-client-ID key using `com.codename1.io.oidc.TokenStore.DefaultStorageTokenStore` (which serialises to `com.codename1.io.Storage`). To restore on next launch: +`OidcClient` saves the response under a per-issuer + per-client-ID key using `com.codename1.io.oidc.TokenStore.DefaultStorageTokenStore` (which serializes to `com.codename1.io.Storage`). To restore on next launch: [source,java] ---- @@ -104,7 +104,7 @@ client.refreshIfExpired(60).ready(new SuccessCallback() { }); ---- -If the saved access token is within 60 seconds of expiring and a refresh token is available, `refreshIfExpired` silently performs a refresh-token grant and persists the new tokens. +If the saved access token is within 60 seconds of expiring and a refresh token is available, `refreshIfExpired` performs a refresh-token grant in the background and persists the new tokens. ==== Encrypting tokens at rest @@ -183,7 +183,7 @@ The legacy `doLogin()` / `setClientSecret(...)` path is still available for sour If you currently rely on `GoogleConnect.doLogin()` with the Google Sign-In SDK on Android or `GIDSignIn` on iOS, you can switch to the modern flow without touching your build: -* On Android, the legacy code uses `com.google.android.gms.auth.api.Auth.GoogleSignInApi` -- this is the part Google deprecated. New code via `signIn(...)` does not require the native SDK at all. +* On Android, the legacy code uses `com.google.android.gms.auth.api.Auth.GoogleSignInApi` -- this is the part Google deprecated. New code via `signIn(...)` doesn't require the native SDK at all. * On iOS, the legacy code uses `GIDSignIn` (Google Sign-In SDK). The new code uses `ASWebAuthenticationSession` via `SystemBrowser`, which is what Google now recommends for non-broker apps. === Facebook Login @@ -204,7 +204,7 @@ FacebookConnect.getInstance().signIn( }); ---- -Facebook does not issue OpenID-Connect ID tokens for classic OAuth flows, so `getIdToken()` returns `null`. Read user profile fields via the Graph API. +Facebook doesn't issue OpenID-Connect ID tokens for classic OAuth flows, so `getIdToken()` returns `null`. Read user profile fields via the Graph API. === Microsoft / Entra ID diff --git a/docs/developer-guide/languagetool-accept.txt b/docs/developer-guide/languagetool-accept.txt index 86b6ee1870..0ab2b16537 100644 --- a/docs/developer-guide/languagetool-accept.txt +++ b/docs/developer-guide/languagetool-accept.txt @@ -491,3 +491,8 @@ jdb loopback rethrow rethrows + +# Identity-provider product names used in the Authentication & Identity chapter. +Keycloak +Cognito +Authentik From 2723b81d5a6238e542899ecc60d9f9f71a2a56b1 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 20:05:56 +0300 Subject: [PATCH 08/23] docs+ci: dodge vale/LT autolinked conflict + diagnose Android bundle * Vale wants no hyphen in `auto-linked`/`auto-injected`; LanguageTool flags the resulting `autolinked`/`autoinjected` as misspellings. Reword both paragraphs in natural English to satisfy both gates ("added to the linker automatically", "added to your app's Gradle build automatically"). * Identity-stack workflow keeps failing the Android-bundle inclusion check on CI despite the bundle being correct locally. Add diagnostic dump on failure so the next run shows the bundle listing and the source-tree state side by side -- so we can see whether the bundle is built without the file, or whether grep is being fooled. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/identity-stack.yml | 10 ++++++++++ .../Authentication-And-Identity.asciidoc | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/identity-stack.yml b/.github/workflows/identity-stack.yml index 401f7f91a8..03ca4b8137 100644 --- a/.github/workflows/identity-stack.yml +++ b/.github/workflows/identity-stack.yml @@ -158,6 +158,16 @@ jobs: com/codename1/io/oidc/OidcBrowserNativeImpl.java \ com/codename1/social/AppleSignInNativeImpl.java; do if ! unzip -l "${BUNDLE}" | grep -q "${required}"; then + echo "::group::Diagnostic dump (bundle + source tree)" + echo "--- ls Ports/Android/src/com/codename1/io/oidc/" + ls -la Ports/Android/src/com/codename1/io/oidc/ 2>&1 || true + echo "--- ls Ports/Android/src/com/codename1/social/ | grep -i appleSignIn" + ls -la Ports/Android/src/com/codename1/social/ 2>&1 | grep -i apple || true + echo "--- bundle listing (oidc / social only)" + unzip -l "${BUNDLE}" | grep -E "oidc|social" || true + echo "--- bundle size" + ls -la "${BUNDLE}" + echo "::endgroup::" echo "::error::${required} missing from android_port_sources.jar" exit 1 fi diff --git a/docs/developer-guide/Authentication-And-Identity.asciidoc b/docs/developer-guide/Authentication-And-Identity.asciidoc index a35bab4990..162e1facff 100644 --- a/docs/developer-guide/Authentication-And-Identity.asciidoc +++ b/docs/developer-guide/Authentication-And-Identity.asciidoc @@ -74,7 +74,7 @@ Add the URL scheme to your Info.plist via the standard build hint: ios.urlScheme=CFBundleURLTypes\n\n \n CFBundleURLSchemes\n \n com.example.app\n \n \n ---- -`AuthenticationServices.framework` is autolinked by the build whenever your app references anything in `com.codename1.io.oidc` or `com.codename1.social.AppleSignIn` -- you don't need to add `ios.add_libs=AuthenticationServices.framework` manually. +`AuthenticationServices.framework` is added to the linker automatically whenever your app references anything in `com.codename1.io.oidc` or `com.codename1.social.AppleSignIn` -- you don't need to add `ios.add_libs=AuthenticationServices.framework` manually. ===== Android @@ -84,7 +84,7 @@ Add an intent filter for the redirect scheme to the application manifest via the android.xintent_filter=\n \n \n \n \n ---- -The `androidx.browser:browser:1.8.0` Gradle dependency (for Custom Tabs) is autoinjected whenever your app references anything in `com.codename1.io.oidc`. Override the version with build hint `android.customTabsVersion=1.x.y` if needed. +The `androidx.browser:browser:1.8.0` Gradle dependency (for Custom Tabs) is added to your app's Gradle build automatically whenever it references anything in `com.codename1.io.oidc`. Override the version with build hint `android.customTabsVersion=1.x.y` if needed. ==== Saving and restoring tokens From 125e0bfc04e9adc243541e2fdd9b30f28fc75632 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 20:13:04 +0300 Subject: [PATCH 09/23] ci(identity-stack): fix Android bundle check killed by SIGPIPE `set -o pipefail` plus `unzip -l "${BUNDLE}" | grep -q "${path}"` was miscounting hits as misses. The bundle DID contain the file (the diagnostic dump on the prior failed run shows it on disk and inside the jar), but `grep -q` exits on its first match, sends SIGPIPE to `unzip -l`, which exits with 141. pipefail propagates the 141 as the pipeline status; the `if !` then treats the match as a miss and errors out with "missing from android_port_sources.jar". Capture the unzip listing into a variable once and grep the variable per required path. Same outcome on the happy path, no SIGPIPE on the match path. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/identity-stack.yml | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/identity-stack.yml b/.github/workflows/identity-stack.yml index 03ca4b8137..c398f2f113 100644 --- a/.github/workflows/identity-stack.yml +++ b/.github/workflows/identity-stack.yml @@ -154,21 +154,19 @@ jobs: echo "::error::android_port_sources.jar not produced at ${BUNDLE}" exit 1 fi + # Capture the listing once into a variable rather than re-piping + # `unzip -l | grep -q` per file. With pipefail set, `grep -q` exits + # as soon as it finds a match and SIGPIPEs unzip (status 141); + # the resulting non-zero pipeline status was being misread as + # "no match" even though the bundle actually contained the file. + LISTING="$(unzip -l "${BUNDLE}")" for required in \ com/codename1/io/oidc/OidcBrowserNativeImpl.java \ com/codename1/social/AppleSignInNativeImpl.java; do - if ! unzip -l "${BUNDLE}" | grep -q "${required}"; then - echo "::group::Diagnostic dump (bundle + source tree)" - echo "--- ls Ports/Android/src/com/codename1/io/oidc/" - ls -la Ports/Android/src/com/codename1/io/oidc/ 2>&1 || true - echo "--- ls Ports/Android/src/com/codename1/social/ | grep -i appleSignIn" - ls -la Ports/Android/src/com/codename1/social/ 2>&1 | grep -i apple || true - echo "--- bundle listing (oidc / social only)" - unzip -l "${BUNDLE}" | grep -E "oidc|social" || true - echo "--- bundle size" - ls -la "${BUNDLE}" - echo "::endgroup::" + if ! grep -qF "${required}" <<<"${LISTING}"; then echo "::error::${required} missing from android_port_sources.jar" + echo "Bundle listing (oidc / social entries):" + grep -E "oidc|social" <<<"${LISTING}" || true exit 1 fi done From d87c83d77d84fca75a8b3e3d9decec2e84988d67 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 20:26:03 +0300 Subject: [PATCH 10/23] fix(firebase): replace U+2192 arrows with ASCII -> in javadoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Ant Android-port build (Ports/Android/build.xml) javac runs with `-encoding US-ASCII`. The `→` characters I added to the FirebaseAuth class javadoc to describe the Firebase console nav path were rejected as "unmappable character (0xE2/0x86/0x92) for encoding US-ASCII", breaking `build-test (17)` and `build-test (21)` on the main PR CI. Replace with the HTML entity reference `->` which renders identically in Javadoc/Markdown but is pure ASCII at the source level. Verified by javac -encoding US-ASCII on JDK 21 -> clean compile. Co-Authored-By: Claude Opus 4.7 (1M context) --- CodenameOne/src/com/codename1/social/FirebaseAuth.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CodenameOne/src/com/codename1/social/FirebaseAuth.java b/CodenameOne/src/com/codename1/social/FirebaseAuth.java index 0189713c16..956e0997a5 100644 --- a/CodenameOne/src/com/codename1/social/FirebaseAuth.java +++ b/CodenameOne/src/com/codename1/social/FirebaseAuth.java @@ -78,9 +78,9 @@ public static synchronized FirebaseAuth getInstance() { return INSTANCE; } - /// The *Web API key* from the Firebase console (Project Settings → General - /// → Your apps → Web API key). Required before any of the sign-in methods - /// will work. + /// The *Web API key* from the Firebase console + /// (Project Settings -> General -> Your apps -> Web API key). + /// Required before any of the sign-in methods will work. public FirebaseAuth withApiKey(String apiKey) { this.apiKey = apiKey; return this; From bd296379e9933ac4ca48cb2bd04363d472659521 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 21:11:07 +0300 Subject: [PATCH 11/23] fix: gate iOS identity natives with #ifdef so unused apps still link The packaging smoke test (Test iOS UI smoke) was failing with "Undefined symbols: _OBJC_CLASS_\$_ASAuthorizationAppleIDCredential in CN1AppleSignIn.o". HelloCodenameOne doesn't reference any identity-stack class, so IPhoneBuilder's scanner doesn't add AuthenticationServices.framework to addLibs. But the .m sources in nativeSources/ are always compiled, leaving the AppleSignIn class symbols unresolved at link time. Two changes plus a hardening: * Wrap CN1OidcBrowser.m and CN1AppleSignIn.m in CN1_INCLUDE_OIDC / CN1_INCLUDE_APPLESIGNIN guards. Each .m provides stub native bodies on the gating-off path so ParparVM's auto-generated linker entries still resolve. This matches the existing INCLUDE_FACEBOOK_CONNECT / INCLUDE_GOOGLE_CONNECT pattern used by FacebookImpl.m / GoogleConnectImpl.m. * IPhoneBuilder now flips both macros on (uncommenting the //#define lines added to CodenameOne_GLViewController.h) when the scanner sees com/codename1/io/oidc/* or com/codename1/social/AppleSignIn*. * Identity-stack CI's clang job now exercises BOTH configurations (stubs path AND full path) so a regression in either fires the gate. Also fixes two SpotBugs DM_DEFAULT_ENCODING violations: PkceChallenge and AppleSignIn's catch-block fallbacks for UnsupportedEncodingException were calling String.getBytes() without an explicit charset. Replaced with `throw new IllegalStateException(...)` since UTF-8 is guaranteed on every conforming JVM; the catch is dead code in practice. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/identity-stack.yml | 41 ++++++++++++++----- .../com/codename1/io/oidc/PkceChallenge.java | 6 ++- .../src/com/codename1/social/AppleSignIn.java | 5 ++- Ports/iOSPort/nativeSources/CN1AppleSignIn.m | 32 +++++++++++++++ Ports/iOSPort/nativeSources/CN1OidcBrowser.m | 24 +++++++++++ .../CodenameOne_GLViewController.h | 15 +++++++ .../com/codename1/builders/IPhoneBuilder.java | 29 +++++++++++++ 7 files changed, 138 insertions(+), 14 deletions(-) diff --git a/.github/workflows/identity-stack.yml b/.github/workflows/identity-stack.yml index c398f2f113..a088d984fb 100644 --- a/.github/workflows/identity-stack.yml +++ b/.github/workflows/identity-stack.yml @@ -264,18 +264,37 @@ jobs: #define POOL_BEGIN() #define POOL_END() typedef void* CODENAME_ONE_THREAD_STATE; + // _SINGLE_ARG short-circuits the override block in the real + // CodenameOne_GLViewController.h so our threadStateData-bearing + // expansions survive the include. + #define CN1_THREAD_STATE_SINGLE_ARG #define CN1_THREAD_STATE_MULTI_ARG void* threadStateData, #define CN1_THREAD_STATE_PASS_ARG threadStateData, + #define CN1_THREAD_STATE_PASS_SINGLE_ARG threadStateData #define CN1_THREAD_GET_STATE_PASS_ARG threadStateData, + #define CN1_THREAD_GET_STATE_PASS_SINGLE_ARG threadStateData EOF - xcrun --sdk iphoneos clang \ - -fsyntax-only \ - -arch arm64 \ - -fobjc-arc \ - -Werror=incompatible-pointer-types \ - -Werror=objc-method-access \ - -Wno-unused-parameter \ - -I"$STUB" \ - -DNEW_CODENAME_ONE_VM=1 \ - CN1OidcBrowser.m \ - CN1AppleSignIn.m + # Exercise BOTH configurations -- the "stubs" path (apps that + # don't reference com.codename1.io.oidc / AppleSignIn) and the + # "full" path (apps that do). IPhoneBuilder flips the macros on + # via the classpath scanner; we want either to keep building. + for label in stubs full; do + extra="" + if [ "$label" = full ]; then + extra="-DCN1_INCLUDE_OIDC -DCN1_INCLUDE_APPLESIGNIN" + fi + echo "::group::clang $label" + xcrun --sdk iphoneos clang \ + -fsyntax-only \ + -arch arm64 \ + -fobjc-arc \ + -Werror=incompatible-pointer-types \ + -Werror=objc-method-access \ + -Wno-unused-parameter \ + -I"$STUB" \ + -DNEW_CODENAME_ONE_VM=1 \ + $extra \ + CN1OidcBrowser.m \ + CN1AppleSignIn.m + echo "::endgroup::" + done diff --git a/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java b/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java index e6cfbc3c90..cb04a436a2 100644 --- a/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java +++ b/CodenameOne/src/com/codename1/io/oidc/PkceChallenge.java @@ -63,8 +63,10 @@ public static PkceChallenge generate() { try { digest = Hash.sha256(verifier.getBytes("UTF-8")); } catch (java.io.UnsupportedEncodingException uee) { - // UTF-8 is guaranteed on every JVM; fall back defensively. - digest = Hash.sha256(verifier.getBytes()); + // UTF-8 is guaranteed by the Java spec on every JVM; reach this + // branch only on a malformed runtime. Rethrow rather than fall + // back to the platform default encoding (SpotBugs DM_DEFAULT_ENCODING). + throw new IllegalStateException("UTF-8 is not available on this JVM", uee); } String challenge = strip(Base64.encodeUrlSafe(digest)); return new PkceChallenge(verifier, challenge); diff --git a/CodenameOne/src/com/codename1/social/AppleSignIn.java b/CodenameOne/src/com/codename1/social/AppleSignIn.java index 8056e20387..dde689f2e4 100644 --- a/CodenameOne/src/com/codename1/social/AppleSignIn.java +++ b/CodenameOne/src/com/codename1/social/AppleSignIn.java @@ -194,7 +194,10 @@ private void signInNative(final AppleSignInNative n, try { hashed = Hash.sha256(plainNonce.getBytes("UTF-8")); } catch (java.io.UnsupportedEncodingException e) { - hashed = Hash.sha256(plainNonce.getBytes()); + // UTF-8 is guaranteed by the Java spec on every JVM; reach this + // branch only on a malformed runtime. Rethrow rather than fall + // back to the platform default encoding (SpotBugs DM_DEFAULT_ENCODING). + throw new IllegalStateException("UTF-8 is not available on this JVM", e); } final String hashedNonce = strip(Base64.encodeUrlSafe(hashed)); new Thread(new Runnable() { diff --git a/Ports/iOSPort/nativeSources/CN1AppleSignIn.m b/Ports/iOSPort/nativeSources/CN1AppleSignIn.m index dc716f3df4..df1c7e7ec2 100644 --- a/Ports/iOSPort/nativeSources/CN1AppleSignIn.m +++ b/Ports/iOSPort/nativeSources/CN1AppleSignIn.m @@ -31,6 +31,10 @@ #ifndef NEW_CODENAME_ONE_VM #include "xmlvm-util.h" #endif +#import "CodenameOne_GLViewController.h" + +#ifdef CN1_INCLUDE_APPLESIGNIN + #import #import @@ -221,3 +225,31 @@ JAVA_OBJECT com_codename1_impl_ios_IOSNative_appleSignIn___java_lang_String_java } return fromNSString(CN1_THREAD_GET_STATE_PASS_ARG del.resultString); } + +#else + +// Stubs when CN1_INCLUDE_APPLESIGNIN is not defined: app didn't reference +// com.codename1.social.AppleSignIn so the Java side won't load +// AppleSignInNativeImpl, but ParparVM still needs symbols for the native +// methods declared on IOSNative.java. + +JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_appleSignInSupported__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { + return JAVA_FALSE; +} + +JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_appleSignInIsLoggedIn__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { + return JAVA_FALSE; +} + +JAVA_VOID com_codename1_impl_ios_IOSNative_appleSignInSignOut__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { +} + +JAVA_OBJECT com_codename1_impl_ios_IOSNative_appleSignIn___java_lang_String_java_lang_String( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me, JAVA_OBJECT scopesObj, JAVA_OBJECT nonceObj) { + return JAVA_NULL; +} + +#endif // CN1_INCLUDE_APPLESIGNIN diff --git a/Ports/iOSPort/nativeSources/CN1OidcBrowser.m b/Ports/iOSPort/nativeSources/CN1OidcBrowser.m index 62852ed83a..e689c3b9b9 100644 --- a/Ports/iOSPort/nativeSources/CN1OidcBrowser.m +++ b/Ports/iOSPort/nativeSources/CN1OidcBrowser.m @@ -31,6 +31,10 @@ #ifndef NEW_CODENAME_ONE_VM #include "xmlvm-util.h" #endif +#import "CodenameOne_GLViewController.h" + +#ifdef CN1_INCLUDE_OIDC + #import #import @@ -162,3 +166,23 @@ JAVA_OBJECT com_codename1_impl_ios_IOSNative_oidcStartAuthorization___java_lang_ } return fromNSString(CN1_THREAD_GET_STATE_PASS_ARG result); } + +#else + +// Stubs when CN1_INCLUDE_OIDC is not defined: app didn't reference any +// com.codename1.io.oidc.* class, so the Java side won't load +// OidcBrowserNativeImpl and these natives are unreachable. We still need +// to satisfy the ParparVM linker for the native-method declarations on +// IOSNative.java. + +JAVA_BOOLEAN com_codename1_impl_ios_IOSNative_oidcSystemBrowserSupported__( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me) { + return JAVA_FALSE; +} + +JAVA_OBJECT com_codename1_impl_ios_IOSNative_oidcStartAuthorization___java_lang_String_java_lang_String( + CN1_THREAD_STATE_MULTI_ARG JAVA_OBJECT me, JAVA_OBJECT authUrlObj, JAVA_OBJECT redirectSchemeObj) { + return JAVA_NULL; +} + +#endif // CN1_INCLUDE_OIDC diff --git a/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.h b/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.h index 0ba77f1591..f6093c84bb 100644 --- a/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.h +++ b/Ports/iOSPort/nativeSources/CodenameOne_GLViewController.h @@ -83,6 +83,21 @@ // Apple's API-usage scan without declaring an NFC privacy manifest. //#define CN1_INCLUDE_NFC +// CN1_INCLUDE_OIDC gates the com.codename1.io.oidc native bridge +// (AuthenticationServices.framework import, ASWebAuthenticationSession code +// in CN1OidcBrowser.m). IPhoneBuilder uncomments this only when the +// classpath scanner saw com.codename1.io.oidc.*, so apps that never use +// OidcClient ship without the AuthenticationServices link dependency. +//#define CN1_INCLUDE_OIDC + +// CN1_INCLUDE_APPLESIGNIN gates the com.codename1.social.AppleSignIn native +// bridge (ASAuthorizationAppleIDProvider code in CN1AppleSignIn.m). +// IPhoneBuilder uncomments this only when the scanner saw AppleSignIn +// references; without it the .m's body compiles to nothing and apps that +// never reference AppleSignIn don't need the `com.apple.developer.applesignin` +// entitlement. +//#define CN1_INCLUDE_APPLESIGNIN + //#define INCLUDE_CN1_BACKGROUND_FETCH //#define INCLUDE_FACEBOOK_CONNECT //#define USE_FACEBOOK_CONNECT_PODS diff --git a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java index 51265060d3..a96116205f 100644 --- a/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java +++ b/maven/codenameone-maven-plugin/src/main/java/com/codename1/builders/IPhoneBuilder.java @@ -1648,6 +1648,13 @@ public void usesClassMethod(String cls, String method) { // ASAuthorizationAppleIDProvider (used by AppleSignIn). Linking // it always when the user references either API is the simplest // policy; iOS 12 is the deployment-target floor for both classes. + // + // We also flip the matching CN1_INCLUDE_OIDC / CN1_INCLUDE_APPLESIGNIN + // preprocessor defines so the .m source bodies in + // nativeSources/CN1OidcBrowser.m and CN1AppleSignIn.m compile + // in -- otherwise the .m files would reference framework symbols + // without the framework being linked, breaking the link step + // for apps that never use the API. if (usesOidc || usesAppleSignIn) { String authSvc = "AuthenticationServices.framework"; if (addLibs == null || addLibs.length() == 0) { @@ -1656,6 +1663,28 @@ public void usesClassMethod(String cls, String method) { addLibs = addLibs + ";" + authSvc; } } + if (usesOidc) { + try { + replaceInFile(new File(buildinRes, + "CodenameOne_GLViewController.h"), + "//#define CN1_INCLUDE_OIDC", + "#define CN1_INCLUDE_OIDC"); + } catch (IOException ex) { + throw new BuildException( + "Failed to enable CN1_INCLUDE_OIDC", ex); + } + } + if (usesAppleSignIn) { + try { + replaceInFile(new File(buildinRes, + "CodenameOne_GLViewController.h"), + "//#define CN1_INCLUDE_APPLESIGNIN", + "#define CN1_INCLUDE_APPLESIGNIN"); + } catch (IOException ex) { + throw new BuildException( + "Failed to enable CN1_INCLUDE_APPLESIGNIN", ex); + } + } // CoreNFC is required only when the app actually uses // com.codename1.nfc. We weak-link it so older deployment targets From ff092630b886cb17713e30bfca50872079d36efb Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 21:38:27 +0300 Subject: [PATCH 12/23] fix(oidc): use StringBuilder for base64 padding in OidcTokens SpotBugs SBSC_USE_STRINGBUFFER_CONCATENATION flagged the `payloadB64 += "="` pad loop in decodeIdTokenClaims. Compute the pad count up front, build through a single StringBuilder. Functionally identical; OidcCoreTest 12/12 still passes. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/com/codename1/io/oidc/OidcTokens.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java b/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java index b84834082b..8bfc245363 100644 --- a/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java +++ b/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java @@ -122,9 +122,17 @@ public static Map decodeIdTokenClaims(String compactJwt) { return Collections.emptyMap(); } String payloadB64 = compactJwt.substring(firstDot + 1, secondDot); - // Pad to a multiple of 4 for the decoder. - while ((payloadB64.length() & 0x3) != 0) { - payloadB64 = payloadB64 + "="; + // Pad to a multiple of 4 for the decoder. Append via StringBuilder + // rather than `+= "="` so SpotBugs SBSC_USE_STRINGBUFFER_CONCATENATION + // stays quiet (and we avoid up to 3 String allocations on the hot path). + int pad = (4 - (payloadB64.length() & 0x3)) & 0x3; + if (pad != 0) { + StringBuilder padded = new StringBuilder(payloadB64.length() + pad) + .append(payloadB64); + for (int i = 0; i < pad; i++) { + padded.append('='); + } + payloadB64 = padded.toString(); } byte[] payload; try { From 6b930c4e29293e1d00af2f899473147d3cbffe06 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 21:59:20 +0300 Subject: [PATCH 13/23] fix: address two more SpotBugs findings on the identity stack * REC_CATCH_EXCEPTION at OidcTokens.decodeIdTokenClaims: the wide `catch (Exception e)` was catching only two declared possibilities (UnsupportedEncodingException from `new String(..., "UTF-8")` and IOException from JSONParser.parseJSON). Split into the two explicit catches; same behavior, no overcatch. * SIC_INNER_SHOULD_BE_STATIC_ANON at the Android OidcBrowserNativeImpl: the anonymous Runnable passed to runOnUiThread captured `this` only because it was anonymous, not because it needed instance state. Extracted to a static-nested LaunchBrowserRunnable that holds the Activity + URL explicitly. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/com/codename1/io/oidc/OidcTokens.java | 6 ++++- .../io/oidc/OidcBrowserNativeImpl.java | 26 +++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java b/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java index 8bfc245363..2a7c7b84c4 100644 --- a/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java +++ b/CodenameOne/src/com/codename1/io/oidc/OidcTokens.java @@ -147,7 +147,11 @@ public static Map decodeIdTokenClaims(String compactJwt) { String json = new String(payload, "UTF-8"); Map parsed = new JSONParser().parseJSON(new StringReader(json)); return parsed != null ? parsed : Collections.emptyMap(); - } catch (Exception e) { + } catch (java.io.UnsupportedEncodingException e) { + // UTF-8 always available -- defensive only. + return Collections.emptyMap(); + } catch (java.io.IOException e) { + // JSONParser surfaces IOException for malformed payloads. return Collections.emptyMap(); } } diff --git a/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java b/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java index c450bccf1f..166f10a2fe 100644 --- a/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java +++ b/Ports/Android/src/com/codename1/io/oidc/OidcBrowserNativeImpl.java @@ -106,11 +106,7 @@ public String startAuthorization(final String authUrl, final String redirectSche // Open the browser on the UI thread; the user is sent away from the // app and will be brought back via the registered intent filter. - activity.runOnUiThread(new Runnable() { - public void run() { - launchBrowser(activity, authUrl); - } - }); + activity.runOnUiThread(new LaunchBrowserRunnable(activity, authUrl)); // Block the calling worker thread until onResume captures the redirect // (or until an hour passes -- the cap is purely defensive). @@ -185,6 +181,26 @@ private void installRedirectListenerOnce() { * installed for the lifetime of the process so multiple sign-in flows * over time all hit the same hook. */ + /** + * Static-nested Runnable wrapper used in place of an anonymous one so + * SpotBugs SIC_INNER_SHOULD_BE_STATIC_ANON stays quiet. The launch + * doesn't need a reference to the enclosing OidcBrowserNativeImpl + * instance; only the Activity + URL. + */ + private static final class LaunchBrowserRunnable implements Runnable { + private final Activity activity; + private final String authUrl; + + LaunchBrowserRunnable(Activity activity, String authUrl) { + this.activity = activity; + this.authUrl = authUrl; + } + + public void run() { + launchBrowser(activity, authUrl); + } + } + private static final class RedirectLifecycleListener implements LifecycleListener { public void onCreate(Bundle savedInstanceState) {} public void onPause() {} From 82a29045b2a6d14d7a9e05dd4b80a2340d2f5b04 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 22:19:31 +0300 Subject: [PATCH 14/23] fix: clear two more SpotBugs flags on the identity stack * RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE at SystemBrowser.java:163. The `instanceof String` test on `src` two lines above already proves it non-null, so the subsequent `url == null` check is dead. Drop it. * SIC_INNER_SHOULD_BE_STATIC_ANON at MicrosoftConnect.java:107. The signIn() flow used three nested anonymous SuccessCallback instances; the outer one only needed method-locals (not the enclosing MicrosoftConnect this). Refactor the three callbacks into named static nested classes (DiscoveredCallback, AuthorizedCallback, ErrorCallback) that accept the host instance explicitly when needed for setAccessToken. 12/12 OidcCoreTest still passes. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../com/codename1/io/oidc/SystemBrowser.java | 5 +- .../codename1/social/MicrosoftConnect.java | 88 +++++++++++++------ 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java b/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java index 4251cc9891..5c00b19881 100644 --- a/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java +++ b/CodenameOne/src/com/codename1/io/oidc/SystemBrowser.java @@ -160,7 +160,10 @@ public void actionPerformed(ActionEvent evt) { return; } String url = (String) src; - if (url == null || !url.startsWith(redirectUri)) { + // `src` was already proven non-null by the + // instanceof above, so url cannot be null here -- + // SpotBugs RCN_REDUNDANT_NULLCHECK was right. + if (!url.startsWith(redirectUri)) { return; } if (resolved[0]) { diff --git a/CodenameOne/src/com/codename1/social/MicrosoftConnect.java b/CodenameOne/src/com/codename1/social/MicrosoftConnect.java index 57e4d2cd93..8124149849 100644 --- a/CodenameOne/src/com/codename1/social/MicrosoftConnect.java +++ b/CodenameOne/src/com/codename1/social/MicrosoftConnect.java @@ -104,33 +104,67 @@ public AsyncResource signIn(final String clientId, final AsyncResource out = new AsyncResource(); String issuer = "https://login.microsoftonline.com/" + tenant + "/v2.0"; OidcClient.discover(issuer) - .ready(new SuccessCallback() { - public void onSucess(OidcClient client) { - client.setClientId(clientId) - .setRedirectUri(redirectUri) - .setScopes(scopes != null && scopes.length > 0 - ? scopes - : new String[] {"openid", "email", "profile", - "offline_access"}); - client.authorize() - .ready(new SuccessCallback() { - public void onSucess(OidcTokens t) { - setAccessToken(t.toAccessToken()); - out.complete(t); - } - }) - .except(new SuccessCallback() { - public void onSucess(Throwable err) { - out.error(err); - } - }); - } - }) - .except(new SuccessCallback() { - public void onSucess(Throwable err) { - out.error(err); - } - }); + .ready(new DiscoveredCallback(this, clientId, redirectUri, scopes, out)) + .except(new ErrorCallback(out)); return out; } + + /// Static so SpotBugs SIC_INNER_SHOULD_BE_STATIC_ANON stays quiet. + /// `host` is passed explicitly because [Login#setAccessToken] is an + /// instance method. + private static final class DiscoveredCallback implements SuccessCallback { + private final MicrosoftConnect host; + private final String clientId; + private final String redirectUri; + private final String[] scopes; + private final AsyncResource out; + + DiscoveredCallback(MicrosoftConnect host, String clientId, String redirectUri, + String[] scopes, AsyncResource out) { + this.host = host; + this.clientId = clientId; + this.redirectUri = redirectUri; + this.scopes = scopes; + this.out = out; + } + + public void onSucess(OidcClient client) { + client.setClientId(clientId) + .setRedirectUri(redirectUri) + .setScopes(scopes != null && scopes.length > 0 + ? scopes + : new String[] {"openid", "email", "profile", + "offline_access"}); + client.authorize() + .ready(new AuthorizedCallback(host, out)) + .except(new ErrorCallback(out)); + } + } + + private static final class AuthorizedCallback implements SuccessCallback { + private final MicrosoftConnect host; + private final AsyncResource out; + + AuthorizedCallback(MicrosoftConnect host, AsyncResource out) { + this.host = host; + this.out = out; + } + + public void onSucess(OidcTokens t) { + host.setAccessToken(t.toAccessToken()); + out.complete(t); + } + } + + private static final class ErrorCallback implements SuccessCallback { + private final AsyncResource out; + + ErrorCallback(AsyncResource out) { + this.out = out; + } + + public void onSucess(Throwable err) { + out.error(err); + } + } } From d2fc2214b463ba2ba55a0a5fa67f22d65643ffc3 Mon Sep 17 00:00:00 2001 From: Shai Almog <67850168+shai-almog@users.noreply.github.com> Date: Sat, 23 May 2026 23:03:47 +0300 Subject: [PATCH 15/23] spotbugs: exclude SIC_INNER_SHOULD_BE_STATIC_ANON for async-callback sites The identity-stack classes (OidcClient, AppleSignIn, *Connect, Auth0Connect) chain AsyncResource.ready(...) / .except(...) via anonymous SuccessCallback instances per the Codename One async idiom (the same pattern used by the existing Login / FaceBookAccess / Display classes). Many of those inner classes don't strictly need the enclosing-this capture, but rewriting each into a named static nested class bloats the call sites and obscures the control flow. Scope the exclusion narrowly to com.codename1.io.oidc.* and the explicit *Connect / AppleSignIn classes, mirroring the existing JavascriptContext precedent in the same file. Matches what the Android port's spotbugs-exclude.xml does for AndroidAsyncView and friends. Co-Authored-By: Claude Opus 4.7 (1M context) --- maven/core-unittests/spotbugs-exclude.xml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/maven/core-unittests/spotbugs-exclude.xml b/maven/core-unittests/spotbugs-exclude.xml index acfc0cca06..2b22d2ddfe 100644 --- a/maven/core-unittests/spotbugs-exclude.xml +++ b/maven/core-unittests/spotbugs-exclude.xml @@ -138,6 +138,27 @@ + + + + + + + + + + + + Un&XCY{UgH=p)%60Nn3`L&c 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

    jH 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 Q80hs;Oir{?#31nh1KVHkMgRZ+ diff --git a/docs/developer-guide/img/chat-app-tutorial-facebook-login-6.png b/docs/developer-guide/img/chat-app-tutorial-facebook-login-6.png deleted file mode 100644 index cdc414cae362f85cc4e52955a4421bcddccc2004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69095 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�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 JoL|TH{{hA`C^i59 diff --git a/docs/developer-guide/img/chat-app-tutorial-facebook-login-7.png b/docs/developer-guide/img/chat-app-tutorial-facebook-login-7.png deleted file mode 100644 index b281005a89625c0fe613d6d4a4213c0d61ccd305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60031 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 axB_Zr3VPHddqf1J1<6aRK#HClzyE*3=&k4g diff --git a/docs/developer-guide/img/chat-app-tutorial-facebook-login-8.png b/docs/developer-guide/img/chat-app-tutorial-facebook-login-8.png deleted file mode 100644 index 6627bdbe74722951f7c1cb9549b098c833553676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137309 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 -J+8r74obj^uJF_ra9@mT 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 F@?WIlJcj@P diff --git a/docs/developer-guide/img/chat-app-tutorial-facebook-login-9.png b/docs/developer-guide/img/chat-app-tutorial-facebook-login-9.png deleted file mode 100644 index 5ec36e18bf7fcb02feea0d3574cf0621ff1bfdeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64168 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

      =)BSEuI|144YliZ=hzQi^`DYE(_EL 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�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 KW{JA}mH!2&EZLX< diff --git a/docs/developer-guide/img/google-sign-in-oauth-setup-redirect-url.png b/docs/developer-guide/img/google-sign-in-oauth-setup-redirect-url.png deleted file mode 100644 index d603b7a9ca0829baccb49d76c5f53f06a2c99021..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23383 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 BP7eS8 diff --git a/docs/developer-guide/img/google-signin-android-choose-and-configure-services-btn.png b/docs/developer-guide/img/google-signin-android-choose-and-configure-services-btn.png deleted file mode 100644 index b430172e94e415480c1b5424a46a206c9d8dd2d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57995 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 C9PxDk diff --git a/docs/developer-guide/img/google-signin-android-create-or-choose-app.png b/docs/developer-guide/img/google-signin-android-create-or-choose-app.png deleted file mode 100644 index 6d81f8b9d80051208feab40a962a0199dbf370d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42817 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

      t-uF0bSu(N%@?@qi;Mlb=s{d%yR!0ybwl%_c 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 diff --git a/docs/developer-guide/img/google-signin-android-download-googleservices-json-btn.png b/docs/developer-guide/img/google-signin-android-download-googleservices-json-btn.png deleted file mode 100644 index 335f9b8aee4ca3dcd3d0f3608f18fcc48297e543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12090 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 B*>?Z{ diff --git a/docs/developer-guide/img/google-signin-android-google-services-json-file-structure.png b/docs/developer-guide/img/google-signin-android-google-services-json-file-structure.png deleted file mode 100644 index b209f3e1ceee8a3c99a00460b33c5d6a86e647c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10161 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%0DoOZzANN+I%xw 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 diff --git a/docs/developer-guide/img/google-signin-ios-choose-and-configure-services-btn.png b/docs/developer-guide/img/google-signin-ios-choose-and-configure-services-btn.png deleted file mode 100644 index 16e042bcbd768991bd6c846201fa8773b790c657..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9343 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 To%rGJQ6U)#Me*tn#-IKVOPb8Z diff --git a/docs/developer-guide/img/google-signin-ios-choose-and-configure-services-form.png b/docs/developer-guide/img/google-signin-ios-choose-and-configure-services-form.png deleted file mode 100644 index 26cdfdf8e665c6e2d84f0e0ffc66f92b2c5121f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56270 zcmeFZXH-s{|*?FF0OyQ{jYtE;=KuHGNjRTXaDxO3yml`A(D zpFP#Qa^*V5l`Gd|i3o5d7amvaaeuBlYbrdsQZjUR19zWh{ZiXSTjja9nLU`##N6K0 zg3lf7fP3r86-jq-+%4F`#e~HjY-{H%?k;ujUvG%x?tc~Y-(&gLD=s!t_q0{iS!C^< zELep39`Om>1Kwa^VUct)w-ncWD*tzN+<#K{-nh6pi1YJ9AP_zXfY08^ieK>Y&@(-P-7S3i))($S#_I514=$e??yShl-yZ4LH|NQ*b zP78PIe{-^P{#z`Zfc(Fn@C)(@@c$2OTvf?mrQ+(=?iRM%Pp!cgcFs5+KrsOk$$!27 zzn=V?j^KUjhaqsCl zR$E?GvmfUBeEgl;2WevBm$NJx+MFuoFTd8jj1y3l1~_J!*?8uOvDBsaXnz;*gRFFr;$5X1Y`;@c*Sse5Tq#8BQ|RyFcCxZ` z+$UoXr2L%<7xz_q4)(6XUb+92OB!#HBFcm+IJ*6hE{cuCwK00})$$*G?nu-t@KILL z;F*LU7SdZ>Y8+aP>H6B zGSSp*3eo>vVJu`gk^Zap{{w2j!8TGe=vHD?J5(aKzZz(eKl1MmEepT(W_M=Ttys4~ zm2sv%o>#Z7Ye1{vmCd9jZw1=OAz}+r-h4W2He9bbZe?*Z@74_0?hn$ zn&(7YiCJR}lijO(3qZpPSo38YDP}Am(@&ybV8uRC0F|h9+_$Xt+-WE>ae4BO1+Xyr z5!fUiY)^JELPlEbY7IOaIaHGGTNfF$wlyCdd7;8F9AdGck3_L4-%2DfPDaNQ0vX`} z-}~yB`Q3JAsvMDxE>6zdjoCuPF6avX#%*V-dS1PnI-|KWP_11@P(Li+iT&>ZH%sJ4 zV4b+#Yy*M}?I|>@4kkY){WMKNQ-8Yn5^nA~8OCV_RCXA*sE9qS;Ck~uWIi_iYSX1)5dX&@}-Yb-D~^BJ}F|EN(h zvyImWbhs|tr17&&!5Ps!+*A?QF5o+=iCI^+cfX>rU7KL@y+V#EsO5t+^wyhJCcZh)2j?WzGXMuf@f_JZfm)c3H2Rl9}g6(4YalbmwRjRC)%TALj*dZDSC z+vDTa_OspmRT-E)Dh$?Z3EBUBnic`snkW}fLuHS*kLj#h4qi?*U!VetZm7+Q6eB;$ z22T~KX~9459NBe!753q6=gFEMZm4T5M3M(-qftoxN=p^QncM)P(;9%BBG0vI%CIF& z5dklfA)G~P_f;jZ$SgWu!z$ZAqe_6Y;a5{+t}72@vaExVj~@a$uVAQiR;wM(yoe7j z>GlmxsdV_{Ww$KBU5Pj9f|+xrtzCO(fKWA%Xk1wh!F=kvbmFCbUwP725`XayC{b_V zdE~$qyI=g!h)HUaSFc_?+4iRwtHq1;X3Ze0yI$J;D802bhbjnhGSI4JFLgZ;X_hw8 zaL9nXKHM4)(>lJ^a~(4?cvvIe&_`ojDYEi?bm^`u=36s?PILN_e0av9|G0>%#45$* zc}b6v!v954wH9>*~IsgV42X5DQ;YBCFkfE{)Q~_sh*n^ zhf>-5J&jCGYg5l{oKxC7-*$4?&CPIBn1#NoO>qw;r@=VIW& zj}~9{WSkEv{jCnWIh~hCg@7?gq`=gtyxwV@2=Dc8TfKiDTGfUl_nhZ@@` zv547z@8%`Q#X^Sbpsl5pm{b+H>N#>U?NWFU9M z3q0Kv$Y5&=oQ`j+M~2~7I4)UUPP;YkNVYzg=-a8(^TlkKDBOo<+7^8MiRr;Un0z@( z^Sb!NJTE`~bpm&&?UQLIrVgJnWdJGv-XU{-Fr-3hm z>lx7AEEawjR)Yf4te*3h;_1*OMrNy0#>V4AA=oo-RO}MsX6@XL`pZv@&p)^Rs9I`v zJlqYnuhY22ae6FZu0C{x1iwoGdbKb}?fEZDS)4i@m9aHz2$`X-fxZrHQ?l*Bs2QQ( zC?HLO$!|#Nl4L&KX#8?hlx8?_;YkZT#iXp~T?^`k0@HSQM+fZ6#|Q7dW*&!8#dhTx zG4CjxYiOPxAx6_&5tKe|A;(#b#d71JJ_?^DFSE^>##CDbpCq!Hhy-{uH(^lSr$nIH zGMBCgzSiJ@pwOkct+BX5gqmH$_k>|`e#zlHuN5OZOn=?wrzKDrQUCixZn~Fh;qJ4; zE}8kJXC|@Kdg|YjtnW8>4ZNNSd*Vt@Tj*o*F4gDY^Bh;(H;Y`tEU$O;^00#uz9C7J z03>hl2(LhShV)94oy5LMnlQZBptcP?fBIX-y3I@cI&SNsh<+dNEMZkMv-Ku7z-Dm!fuhnVgu zVqiaT6?iKy>u7#9c8*V^zo8Rpf(Es5$xMkKlxxXj@sGKpIGH_+4}@M+kU{F=!yc`y zpNRI{w<1-Ku!rt)_i)}2>UXBFlvf{#;#8r(8AQe>Ox}9XpjBf0jzm2Q5GjSA{yJ&b z#2srNo)Y`W$syG99JvRaawJ4Eytg{5<1+3xJqRF2++PYg5X4mE--V3$T&(e+o6v^UAnnC&fa|2>FhQVj$+lexhZ5I` znFx0s*pWGMN|()&$YFn`hqQ{NnmfgTHzN>XbI?#XA1O$Cf0KG8LYWE^K-q(qVD<&- zh&V2V-m?1{HjNtUNr#|S(pL?3xn#4o4+~4{p9umK({j@Vwmvw9r>v0JzaBOuT}J{e zf(rPo&2|?nx}k%*yXCD3eE_SIhVCnPC^2<1+{N7X%0Y?95&Y z_z_qnKB`Wui?VH5cO1By^Vr~oXiGhjwat}>h^?Tv5FIwVc_$*cny)d%>F(TW__c2A zl~~1Cw2KTYNl)k{k@sn664uV;w^p(%aCi0>%w6}YGu_TO`+Ecz|&8c!n{gHZElRHGzB1wrN+W80+QA zyT5%KB*w7Ca>{#iPLq;5evXyTN#SMTFo;;9>M&|3s+}f647myT--8`x2P<9<5?rS< zX9O>tABiydpHh)b6yiVFyDxB4vi?Q_lX-EmQD0R}d&a{btz{+mk%>1nzD2gORP&}d zKx>AdW0HAoOO{6DJQP;>hngt;K|17@w<~=HQ)|DKhPN5FZdY2>VZcFX*;yU?pJ9)E zvTn@XriwGoWekUefdwOYIKiQ`<@cJ3Zm*Ki@bCMM?k2U+>aM+Y<_|o=Px@J4_V-Re z-5T#stO=EV%2dHuV0H|zo5G&L6g^K$k$z>jD|mV|7WKB{KG)t!2`iAs(@ZR&RtdDX zsW;bi=`hRsp>}2;f-Mhjn68O|>m4zX$|v}5o7<34&@5IozToQJpqXhECNB@lZZam; zn?OpW2#*eB-1#-{a@P%guSlaAqwVag{b#EzT~GYzVMk{TjhuK*A(QJcJ}sPd(yUC_ zUYq|Dk9V#!*NTjQx=5*VS~=0$OjU{7xo&xbr-n}*ADu9({sBP0qoy17_9?z7^~IE? zYgzGUx{2BZGg@v$jW)}WGCO6>hManpHf^*r&D3*MzP37(PoU85y-MGUVnJ@buRb%D z4(j*K+_hGey7`}SNQcsN6(n!p?MB%Yo1&Iq!7KVaoaMy&W=Qncw1+!}42PhagrO8r z84c=6pHBkvMEyrGrOi8{zQ(joNXW(#oakmn+D|4=lK`_6L*|+fuCoesCy`j_w%_To zPE3MAxU1Ju>6{K<1Ox3TweH$xyP%yBMZFaC_TN4|gkAmaPU#an`?lyDA0$C&v&a0E zMga>d`PAXZ7hHM=2n6zIcRcBRr+9Y*3C*h*!-NRNnwkFCXWEa3lBr|)5Oq;<${i8% zJ5BFDeo5kM3k<~{)XOL)8*B$(I6Q7U3^1r6n=*@H5VUMEBBVkj%v4)1<@!7lwUOMg zw!$KNNSVW^CMyv8uz{ra)GJeC$!PCsg1{2z90N7d5- zjBWx-0yLJeKHDbqMv-%|mc3q?)r54#cE_;jvOsk7ZJx7hc9yJ1m6$i?(GHC0Y@+s= z=nVZc9n6W^O_Jc~4BMqU`qR7P3N*9vC3SkAhJcOa&w|2zOeQ&oY8tmGf@}+BJYRp< z>X6X?;s{@rka#Y*2$NtxVw$ioWl=Uxw(k3Vbb?ZPFKfu$+`&d=KUj6iyYA zR1+!rlXw| zk__U%yl=c^UnxH&7+U5^IXCFnCfI4{o?vHQhQFzCq$$#R`g*y`Kg`pa@x7W9I^)9) zG?4X@Ykgr5nQAprlg4e;WW#!HaGQ>;$U~-`=wTzNl!Q|i$gQ7}&;!DMnY9XvZBiZv zA)zN>x6Y3$N1Zq3H6|$xAJMyUEs7E_k?bXXe)2^k{^UCT1);K=m@FNuRXhg~fGgwi z30-NX)58dvuAx`k#+~tbr(2y5#^6JVo5;y>oEHxOu* zY8?7Q%N-&-nS4;SCD7*XXzmhku{@;+WF$>0O?M7a3*K^vE0)?BG%s|AuBt~k^*sWF zSSH)t?WW;(G}jOaE%i$I9Bgy9AH+7JA$w2DyMD+q66T=(I>Bd^)W|2rR*NHynfmSA zXG+WtdV96=R4Jbv7O~rXP`}CqAFrV#BVa9YSTLYjE)=nd+42d2l3`jjZsoeyHt(y6 zPg>H`c+pBs((jefQ@hU%M)MUV`~dH9&HCGpK;;AvGx3Q6tL?xqqr6{2g0`5qbS*Ga6Cd&=P&yw7nKeT7ze=XB=fx^2) zQH*U_0B9GGtaOTXpUpjkiLCdXB%p>P4i+4_w@;#-_XH&P|SViR~3AopBvS zxf!KzlkcLSmj)w%-D+BytPuDM6bO+#?_ei{eigN0euM$IX%!LGa_^FJBFBO$@;k zazyrT=gryPR*b*im2dPkeBo(hPU;(F$82ru9>u~af$C!Cz^Y%X>p+Bmd&pmrd1-E< zFz-Wlc$0NsgnyOt~c8qH#{iY_p%YA0CM z+YzLgkTCc?xNOy*F*t;s&MdH7E2V<_wNGW2|11r_20@MrkePz9z#cu+uaLZ}dSdPZ z^i=8Z6Tje+Kfgyp$L4r5I%>r|I9)lT*V1;tDHa5OHux~B*$F`7o~r~ zp?{@DGJSAKjsoT(CAr_rSqO3YhQ~kFWBA*R@^VA z?uW%CXtI68cy9kueizrs<#$;x{vBHXSGw)+SNiAN;q`+*${*tz*>_bT?~hE(=C9-u zcA@CyALUNCMn+$cQ2ir0HbIV)>99km;E(*zG7Bz?M0hui>aPL$&+mL@oJ^a+m70HK zmwIJzjr_0T|1VIybj->A8t3a0{SEPh%|y1uKMmr8^d3=BVkM&5etxdnc6v=(!Lx?wHdbMn=zR~F44LzF>fEAilVfqDo6is~6Y zn;6s3@&{ynV_1iDL2RDhGTZnq>#eU(e z_Sp|AUes^2PD`mczTR_wTh@{1Xw;A8%O?NeL{- z)S4s5icG$6D!o$6vVPhMI$r?vwK#8%6`<-1h85Jdy!`OqoW^1R-PPrNMJtu(&8+}? zm{P%h7|Imgt@Fw=ylEEX_dvv1zZWq53w?X^2c2)M&Z$DYbYYBIn(IFRP& zy)iFw0mSq!_aI6P2pUje2<*<;>S%34(g4t@mCh~BW@h=8*H!^}x}(~2k9Gs!Gk$}{ z*WgOS`9xLylf~~PIx&`Z7`w*$TB}GWubsNQ*_M?fcA4EZ(aXh|8r!WF$%FPUJs`-6 zq*3mUUNy$C)jX*0YI9HnvVrugvu>eiiQA0I)D&1p}*FLs|drP}Sf1P0=z2NHrU zf=w^)R1{5DbthmVW+Bd;q>?5njjsrZIQWxI&*58k$oO!S9wAifNXom)JH8c@g=N|Z zLRA@UZ$02Pjw^K1YIQHxYq6_8T`CZ5VAO>ay*OGeO-G-i4R^d6jM5ySMRiQ+2l-xI zGYgB=%7~IQ!Wm~9-$Lac(c_w1BoWtcr+steBz5MoholCC!MeqqgjoU3 z{+O8#${K{`Xi(qz60<|(^RFUGKJLdDq#JL|K>t=4Qq39Uj_t8qE)qqWNHA}92m*F{ zmlcqTN4rrPn&AX;9h&L8?z0ABwpQk#JgLgVovC5$u=Hm+~(guZg5JKdE&N z1_tWKlQy=+hTcpOZIFpic*USquLZiZaM{aAAYH$LDV<;L_LXcqoc)|JTW%nVncS{L zHtu)N$etyX1ao6%-+Ql(*q<~=8*15WgF||6qk@)7otuk&9??u21A_J5>R4^w#(UKW|OzdVtRVcG+*pM+8Ua7DHhG5{SCy^I%SQ9po$C-i=K zwqKh)##d3D1|a(Hx>c5+ynGkLYCQ%xY7@d8gf>44P%01pcq5C9aM^>C%?G!_!;+D5_#9eETSlo|vb5?szV~vv_+Z!K!I< zCeh^PzJ{AGqi!ukwiuzCI9fBhc~72rjk14(%^5INIcqEmM=@L2U#0~mQ_V|B6>_(> z)}d*ORCl&Hw3|;ldO;0(^7E_Ven7^;xV76`S`Ea^k(d>Mk-F_UFvM4?d-EU%5DsVY z(w=Reg_#*K7%-b2TFz8#T%^-|@7Vo#<0RSK)uNKS&4L7MrB!j_il;6VIUa^@xfnHrfYdZm%o8f-9$z?>#Zg|Ta|}qb{#gzk5TW;n zLt39?Jla_5v!mVGBGAd`0svEXn>f+1uV^Hcf8L(L?UV)_?n*L0=WZw%dN70#Y$?ql z|3Qb5nn;&P0SCEkpJC3!M4(;nTSljPmqYvbis)7aJ*d7llo#v?JA)Jt6=5njTYyux zgEk^B0v!+hJ6hK~_2v=d>0n6sdFl5w@>J4WkuNXf-br&T1(-h=Fh}!(l%M>Q)_h#{Z;nIBI;}u1WhjVLYj7&G5_x$-$^?W0;2rz5P=5y(F zX^5%5-nz;BMY7W#+CyEh3XPHfMz@u(T^ZHKPQX0t8`dzrGj8_5_ZV?9=gV7qq%Oj4 zc@#2@ir1(;A(YkvP>6M3KU(A0-x06fFz=D@1R<4=T6-IV0?vYmJ&tx;uw6#(a`{@p zhA0#U?Px@gwa8GD=kx_ELgv6=(2HH>l(PV@P5(UPio$vC{Mu}#!tC_}aOq35Dci(w zB16wDu$zMxlXIYN8NW{L6i+nsv@Au|w%Lmbv>=&DJTbghqGxV}KrdZT^}@!Bl% znQe?oaLd(~0rn_WX#GCs?0~lEi>i(%Uw0kk)UYJDo_Elw{u^>{&H%-qcQMMd!WF6| z=^MxGwZ(`z`U%rgxvH};gxuPu?l8|<2|nw%)?wAQiGMYX|5W3(os_M4`gG0GVD&OW zYItwWBl8S(2+~g4+0l^{*pq>Dje_<=Y=y3!zAt~T@dUU#3^MuVfI}8EE^YgA`Zqt? zkIUwvm51}h!&4NHo6HV)Z_UW}sx8IRD%Ymd0j{B9dWr4j{bBq8gkz;@b#s@ik|p|e zp(crf60%Lqr6q2oU&y?-e%NF8FBb1!?wH7Tx2Tk>{|{_ZpZn zdkV;%YF^tiqkTa@JL@m`%+*ky9X?9B<(nEFWb{J~BzpL`Rh~Pb%i(wtm@(fk_eP>| zjUmWrO}F|@oJ%?44M38pL}256%EV#mS^x0a_9&PfGMnh@;eVN@V1V-1?3qhE3<6D7 zcBrO*AAjBB`}jkxRAGKQCj}^12M>eZV~2 z>g{QB5xIFc1>2%%>G=?O{Akdz${DEqB2^~tUry-94QN}7(Lso$JmhW%9@~$Zgc8ve zFaOrs1FsB=^M3x#0wW!(^Sx?*gEdROORj0q631C(7Qb3eoB7qL1U*>uDLYTh>p?v% zy#>JnpZJdfl!MK96;!`oKyrlqLU5CYA<>)H!(+YGtL8GvmrOm#z}C{M;N}BO`Dg1| zuWhwau7m``4xgbDmQQo1jpxl?FsU8QUov==o*pWS9*ea=cXPr*+4obo$%|VPK1g#D zn+vHr%zuqdigrL}JnSY?*j$LwxoIgYM7;LaES7>cZGyfrZIvng_yc!NWHRMQ7j%BBwBmYA`IJ!f22_~f~y0Yo!^`UeiHZHYiHF2xm>IgUtUHVp9uS|{&Qt4w_ zO&7G_B}#+ibUiLUm{E6O$$~H?=ZoDhj5x19Jz`C$uN>?m&H=?B-m)Q2liQrn_u%#R z$(Q`yw}Az{x0oe2R!b7s>?BVxmM;w!?JCrAvo$jP1#ZbSB;0lQbb4Vj@5=n}Vnons z5Z1rY?f>b7Wanz2UpycGpnD%rp#ZjpUN?z4?7-$rtKQW5?f#?4$TJi9l_2^c{+rF; zoXzmk2$82E*Fu`?E7iDiMbpnDARp<&BvbbYRcUj-^?@qM2oHfHY2xcI`dGrEjLi0Y zaI!TzA01b5uc42f=>$caPdG94tQm)A+=Tj}4u{ILu|kMU-Kl((RLx#{PNeT_Z2m0x z$kNAC{W67+#G)^M_QXr?yn@gIeg|LJ^Xh^sy~~%=l|8s;j!Ox59jwzlriOP0i~VU` z$n%VqL>06Bx|qVZZuz?J4)gq3rKplaWxd;!uus5gAGaENob9#hY8@idDYcv8T}B8vqADrFX`&HeB(qZV;6?&pLBw* z*6^_!&?K`4nH*PU`E1@y8;Hb~GY3ZSy#$-FjcGA?1@bS=ryVeq!iLJG2U+~Vxf@Oc z`{YFz6$I<90P}n;4H;s@fV?`Vx8x|ZkNt%<+D7$)BFx-U|448J_@EPdVfZ}=MK40p zp8qB)Yw)JONXNWS?rvDRsCeqkrnB^#PYXE~^?BY6B(~@^mzftC!d5>s@`4$-Lp6Cd zK;+=X5*%UaQmj0sq%Ka6*DyA74ccX|dKSl=Z@eP|4xCoEJR7s{=dL-Zu9EG?^Uq3J z2@O{fgESVewRasnGjm7o+ML0Nc9t%P$+MrzrPa@oBBci3$mtl?d44*LD`qy|y=EeR zKgQVHG&Z$jOYs70U@ISW^&K$@Csrh?061>}SI-dqkSIuUj*+qKlv^2`w)f1+_RaGF z+7YnPsn-ur5%f(SC9&%?_!OY6?4|ZIL_RpxFkkT$`T3AFq7IYB&tGpz`@}FSgUu@Z zAXPBc!}6%cuY%euxO5_gLTcR#>Tki64g0UZ+b|3u^9~to`Z4tLYq;@G z1rBTTl{ z^DxtnA0Pu}GGZ9gwZ2u;Pb!Hk*xA|3UA9Eng}LYP3y5GhJjvu+gk#u~7gk@up-qHZ zv@Kaz!i2L#o{^{U5t{39h0zIA35TC$YXk(pnczia%UcL@^O5=slhp`ZDicl z68HSXJ!G)oO$bt9-J+5i;AS&EIM_SJQ4_+_adlJdI@`v3jbRQdm{Yk9p8vf|$T|eZ z(lCXll5Gu26+U)BFM488d8hMrVsb0)dM~<3S?q#{GGGsa#Tkl+7sNLo0Ok)!GAgR^ z_0<|kA1wS7|Be6xzFU#XZ93D5JuaCqZz)NuwmOuS`H(?>FI!<2H+>v`o*klN0oZ2w zvA{;;W`P@{M~-XFZKON|6I0Zzq&^R;N6+#*o6%w(AG=dEL2q3xVF^``W>x`xQ_0x;VpNuDT4E3mZDsdvtR{9OQe07P9DH! zQ%R-fjIbn~RFYRPD-vk+Noux4{74D(hT>)qW+Sw4fEaG4|DJsIgu*CqtYgo%?J&{x z@qxraFzK-c6?I_@L~0b|OP?)0c8V3A>_LhxM*7smCq1<6WxuDcbZvtKnZ(-`$1`hZ zkONaLsY_WC*9mc!eCarhJ^V25xfJkdU0Xnju31(P=RA3&BE#I6ElB#+fx+9_=ezev zedb->)-m91yy1HlP&(*VKb-Uhn^}L&g!)Iz59Z!UR;%b&TUuD1B#**X?58S*h$#;8RYP+HsvDPlE?~5FO zpB{DU;x87fic91V%|b*VEwD^gF}xu00GCTm(B-+KJScE>zfSf<^$)T%FeT1SMyXVQF(1niS20Ys`pLu*))hj?6&?H%N=g z7j@(xen?^yi>(F{!ll9zpSMe~+0QmKL*822zR@EET13B@HLCGRg3KD2Ue}X6)fFi= z)QjE_k639$KiQAwWsDe~q#w!jv7D*@+Hx8fQ7qoTJhOcd1-A7VETTe{T|%ZHHJe^K z9gZ7qMi>*F@x9gU+OuykIGDrdg9qDFi}3F^v%LmA3)bsx=ToL^ncKI`fy5RB!z@KA zr^WT=OE(~2i@PM-CHZhMFq|#QD{7OfC6D6oeQt>t;y+m|fpi3rj#?{($0)9%`(r%~ z!lNB3d6R`}hpIeB&BcPg3{QZvx=dsq*>KU_o}G@ps;}W*w~)f9kU0H#P`+Mu<`9oL zwfe4eQB2?co#z|h9OzBis)`zW*~1(bZ=L!zv-tW+XyYsr(XeTc4 zxlK*G@WW?DCY2vVnJ|sZMMRZ_bKDYmN~h*k=diZC9LC~{zD0PB2%s-awZQ=mE#^a5 zp`OA@%H#dO5{~#t^U8;HZ{w8&;{63kx*CXoYQsh34LV%`5iZp&0o88vV(Zaib_tG) zAAW$%`Ql)6!ymhmVDx~`A4QH#Yr0mMtPHU{yTJn zK2W^sWAd)#Pad(p)L;<>H`V<* zE7RS$FGg+QqPk=gX*o5yQEm5XGV+X!v_b{S|032`{;Q+(IP9esirkx?h}{CO24z+VY;Z_CU$qP#EMy z_;fC3^>Zu}KOZNcIIHuG@gtFAx4hsb(H9H0v)Hq$wZW~V3trdSdakAydy>3E*4f;gr0P#_)OY zjRCJ3g20Bl(V7RAG7lsGCPZ?9!2$qwI?k|ewMVtI7Zh%>9Z1#(Qn-L$Y^vN`s+Ad` zrN);VOeGO?Mlil6u^qWkuX5kuXCKyh_t{G4khvds#xP~fD&a%YK@Q#(@u5k&XWuCi zUoWte^Wghc{cdN9$Uqoj*`+q!z&4L7e^^7Xvm?kT5&MN<#tihraMlB#M8qVxqM@q1 z1GZD@$%@{px!AliA0*%j6!Zu7vAVw3nfC&3jlBRHPy%Qk&h!ZLZ;Kr$u9MC`)ZAn! z5veRXn|>b9;Fw?Eo=u|k(AD1u?O8|;`}y;Wq9r{DwCr3H<(_EZTYK8^fdQ!wAe*mf z2+6GbF0VZW?eT&%lukXQ!+69Vw#EYV!j>+C+vP`bQ}&u_Rq^t)hTscmH*cI|R`$;) zGhW+ix)aK7cwzmH=Mj77!a+1CAIs$5cEaGuz3ajDuUfO;75BF7dJdZyh)p>2 zW}cNanLBwXsV#}Tn41>f-8Az>&GMkKm$zzbtciyE*RgD2@z2k1l+?p-Udnk+c=%fJ z5T^UZUT?HKKip|Okpc9Bq2Z(Ouhu-Z+~s`+dx%$-Q?*r1MhiWH7r;&CIWfuMN#^o! z@i7De%Xr|Rx?L* z`XyIWm+`Upt_cz~?ZWnTAoK0gAMbE7idR88)Wm`EML8szA{_yGH@b<*gq?BmCE z;}8Nn$6xr|f6b2O&iq@(yICHzGp0X(&@5d4{u4yEFz>s>;OjE)wHa)9RaQplt&&C5 z6S_c~MW2ddAvW{vH*Wj+dV>iN{?>2evu{oWb8Qipp=0#LooW&Z-_B-__(FVVP&~1| z1FO6+{L)AxSfUT3jbI6*PdKxQ8D5NNQ`Qt2vjBqMP>p=p-h0x%V(|8qX9E4LnsRfu zobKxn#@XdSB9q>w^oLfAx8-dQx+1qXyJ6%ZxzVePBe zU~WFHm!Y+HJgl}h%f4kWb{lG+n+iRqPIKu9IDDvpcFN8$`ON#7?sFAjj4{Aq=R#_g zOw=o9P(9fRrp&LyLmA+;D8*JMTwMcPNvVlvNg)-?!3z|&EmWQ!?M^gU@#0uGc07-) zar?;$vAs025nk+zFKZQK|M1CRb5@iLdq2|E+U$4_@WF9^U9TzSPDufY&_CY-z(fyr zMd<{f8Lioi?cm{)meqG@N0{qkNhpbPI{7s?(|J(F0^^i*W_{LO6m3Etc~!uc z_PESxR&z*Pn$&EMLVf(r~{DuT4P4yesoh}|Ez^0(x!^V zQ{S6ZQxnisHYnA74?r=B>=u42|+*gx>ZvhqSj_^uH$dX}}C7^c%%Dt*Cw@AzJWs$G509$LHj7U}W-OE=hZ4v*A7-iy6X|I!CNL?uPp#-~r!gs1x9(%JB~-8{>-J0( zlExcl?LdEPdkLdatWhn_`S+9~6Bs?|sxL-Afp)VFi@^+w`B&TA#tEk+ z9;j9_R%)k)GFXVnJ+?Ef2sE?I%c(bzA0MU>nRT3@Z%nc1H%s+Q;5Bsf`*Jf-MW`Z> zq(_ltCA`Myt&HEYTzJw?`SbhyMfH81*-=fDS`DTfTdjxF)7U}%L;BnUm3o4a{9AQP z7G5>x1E9mSCYl&u@P7111{+jesjVy0xwyxN{lzQ`c~PKpsi;FHY;5aE)kE#;3TZz) z!-DOlju>0HJLc6cm4|*tbZfxSN&T6LdpvxU`S-8!tUiS7%+^A1C%F&6Wkmpvm1`Zn zj(i_&Vks0@<%t*eAo2^5Y?62tQbgsMnS!7L8V{f7pE!>zQHEeXld4l=1dHP&Ro~jdY|z zsf4~z?2u0n%hk2(Xe;b|N;Vp4e!;oN*>i zXoo10>LOY}8q|lWFY?8iHzsK2d211kvaCWU3nQL2ybYeT0~C{>ZWKo zt-j_TTwUG~e%lY!f%qI0&LWVQTEmQCJUwqB7+ z*blxXVlI3jKR1!a5$kbIJG~7pmuk5QFj!Rh<1hSJC+i5T$b62tJCqVsaVTgDYEEe8 z3`SPm$DzUw)iO02oW6rBbGZHu>HLKjqhOCh^}j;I8H~mr82kno!hsx3aUX}Ex)uBW z54c%u1P*RCR{je12i!~$hg$nctkm`gJW@#k2VmTodSLknC^HcU%Iw6;G5&)}&M(lK zi|y^oKQM96ao9K0_nHEKP#L4dAwS?A6u8pw~#ilg>pfvwFJMcjfC(?8E8-L>S#Bps@>Uk~r=XXQy;}D-5 zT=@US+y09j7bC8XIc9~4e|$IO|7x}St+FD5y0$vBpnpTO|K}4b(#=%3(>_w32l?=T zxIg=4iCw^~J1jOOfk*2G**_;V{!u#DFLdxqX33*J6s3vlOvSd(%zs$W3JzeKeRm=* z_m956fuq7Lb|Cw^rDXmB2gmw1jQtIe|A*~sTsr2G^rYwOtD%5wetiPL~`Y&8_zl?$PAG*u_g)n|E3;JVZ z_5XqfKhEb-`GYAnj*6zkdhj3e|AIAh6T0Sb|IRe(369EtmHuC)|JTxg|9;c|5BEZO zmqFCdrL^g1h+es=-13_hZ$?qO)D%e%r%|DU8Jp62d=eUJ-WF_F{@B1*piV5HI1-5M zh3>Wy>QqJ*MmQo*(XAPKGt-q;jkR;0JWKW9l^^|aJW$^XpL1-H4xd}fP_jCkIAyRG z@NSlTxYGpqUsL}F>2s<#4nch{)TCB`r_;j?xaj%}^nA+*5-D}0ZTlsZhS#Yhm>go( z6A=zoffAhUMfz_0;GSElI4$>nLcsvTE({{Jy>~b~7qeqjorWd%pC72tp*zo0=Fhs* zoQEExrpzJ_!#Gt_6EO{@g!u;*O0Dyy&>b68x)(|j)HHb6vOgq&R1rnS9s*T?C(A{y z+nCnN=F>S$%UY>HgG+(LPSrRffcVxKx)I$n3ta_d^xZ+%IGB!QE4F}=K)ybc+lD?T zE01SgCP`fH@m$4bEk%OnRuQUWlY^J(k0S8l8Q?TmPwWG9-bnYd)GOoU>%tt$w>A?zX+2EW)c& zUZPvw&**c!fXcW$%lrR`d&{@BnrMBvrBJN6Lkq>VxE2VM;_mKR+=^RqcejM%?(W64 zxVyV+fP`Oq&UrsPf5Dq8pK|T&*|TP?HM8fw=UyxJU69oxz#V<)wacbIVrx1~n+D!9pwZ$*64DAHE^)D@d|YVp_$9_y57xcwAuTd=;&XC@7vE5$}v|`B(a?C zk7s@wQB$3-&^aiSP2X;AT&y)4#kc>(X*o?r#5K^<1-+}X9iHAm_ zo%5`g&t&ip9#X(Ng8A>%K%$!10% zcsfd7W_4+rMwjOA)X7evnBW+dOSF(di@7w%N=@?vb_ejUWXhW)foPBULKd@*>Ww)(CfZAMmJwt3{S$2u9;8^tp`;awxHtuuJ=XhQ25(;ibcL7<-}4LgC@G zZh|JZAXKZ(wc>e1qjUSK+xe;MiY<@5dvG^~z~!%#sXU3tBeKm6@LxCGS14pnp8qUq z>da~&ifEl0wf{1VGR6URSXc7;>6XQ9)iD(0k0LI```Xk68Al@(SY*8V7&w8ap}Tb> z(Z2c`hD9mj@EU&dm!R_!!LKX(tIM^W0HNSF!^asAbe2T8TIluVW-Ybzmii&u-kTDB z>G)>d>%s-`)6Y1Kqz72&;l>>KE2)-{Toy8Wzdmock@>wivM*lmjY2wlaOPPp-lKze z$X*Z80gr|cAK z^EE-*W2!weDua&aQ3L3$>^&TB&^25FJwhahO z^lQ}_!uB36Em_nsB$CV{H%8Gd&$b_N{p~BcHixY!4Gs>M%eF#MGRLb(*$<~Y|pns z$N$@YCZ z0*=Bw>~NHO_R}&6?KQ4$04p2 z2|+BYf~pk>`Vm2n-seQ*7!jke44*N@`mM#|s37$tv+@v*g20w0|JCGo4C=Z7ih=K3 zNC&QKE*cN}nf9J$L}IkfN^Iix6;&(R!h!k{N z_pq2?&c}n8s$!AC(zMrY^=sz@;FJzWN_f@|y7Uuw(v??q5G>1Q%gk}=rJW@QVCHx+_pg;uL z2x|znM@|%-P>`3{)&2`C*`I4lTs@ss@t>pqc|*!!9>u~Km5>+nb);zU;WM2>(iib} z0dNsY;g?b!xdMvKj?v%4`@@8<=lF5O%u6>%w=I+QCVbAFi5A3-R1;%iX%F1IC8J#} zew~bm+BAbFJo0%AaC^40z^L0N#{b<2(n|*2gv~f+8}I2)atyI)GAE(MZPf|{$E>!Q zjRaBU&1ZzE^2;da(Yj>wV8zPvXQMB~=V8rW(92Mvv9CLlg1_zbT$jwCokJKef$XRn zBN;!7WoFX}^xgk#NH_aE(U^Z?Y1vIM%|>?-f&lC8$iO3v#2D`g2s;T+zYUT2Q2R)K ze1Bw?pf5lB?n&i?{dQiL96=Pp2ghT0aqO{5*py|;y4?)(V~8+1gwFORgv8F_L(u1X zo+m5bYbieEBFlG6LDj1#ey`64_L}kb^BZix`uUzj|JIma%xM_hap=~AWhdT_+`}@R z{JqAkW6#u}LyT9EPa;ncGz}Wi7#&9nF4&MKBU3G9^5cn=me=D zvR4lEsZkay0=bd2Y!4~=@H2ZbgHecNkN9T7AgmX+5w#?NO>3TZW46PdLc z)uBbPGo+IEFpzfZq&r6(WHSOdN^d2O$eJ;^Yg7_Z<7AR=7b;A8P-Hm z`0wwbG&c3KWE^gZL0^RBfjm2-2KIS(!zSci_tkd?xdL)im)?8>AbLXR1TH9OoRn&3 zQ{QHn%P1mS$b29rcGO%c!ASPc{h&?I3K_?{p;QA&kb;g4h_#>}q`<<+fsSn+MzvE% zR2vjsP9wV|ON#0kPnJ0>rP#Se=uy*O3FX;S$PRO2MWC5#bvc0_3!f3U!^y|0_{gCt&|(4tNmP~Orh)%>m9nJqQuP{|FsCTge+eHFxD;G&ALnL ztvqP6rW9b!EBGba9 zd!m0bIuAAJGa8VQ{>Xik#7dy#7j_&(>qJ^R)M(*}zK>892CMnN{o_LYS4-iQj^asa%c^oR=Bg7%^d zmq%BJhPi1(wDPcySVqKyVq%pIQ-YkMHWB_HkVhTY@+Q+i7jOFFYNS>C5&MISd4ci` zcxH60_mhy%RP<95f>$whUQ|qTd=s-?Yko8AeZH@^n3UfF!RVHAP3`?d}Qn z>s*W<4-)%VF3su%knGr5SqlbZhZI17HNPIjg|N@}ZyqSunrX>bNg{9a9=Lu?eipjn z^nGy$+4Jtu;3nJnKCjY(yM039$3H)os#G3{_*S+aGYIkbMd2=NE(ejI_s})cGoK#_ zy?R_vn~kRMnPa4hebXHJI|P&Hnj_@vFR+>re7LRCkHWRUz8?8NO1bG-vSmPoM z!Eo@i?qr&Wk@+FqiWpr62$RJn>Si}m>x*kip8O_uAiqLqEy~sIvng&?{8n)p?p^R# zl#68~%A+y!ZJJ)DA93DiggkA!J;i(+`eUu4!AsQU1Zhf9ji^0}ol&bCJAY1*Io>pX ziI)hfh;`Ii^}6VQ*h5kG{y^$d!oEVNGcChWjJB`ICxTN5ddjWwIRp`NIc7z>KS&iqBfk1SlkQ2Zn1#@e%}$cqP7Y5jZ=w$}F+&PO z|7XSinaBUVNm>qP4%H@T?E8mQ45*^7<5agC;vTk9jqB{*n;nW$MR?O7+RoyuKW?PF zNEqt4U9CtSrX6oEBnzLe!U1=)Djjg)*T34{jOhIqS&wVoXUQKGtc#&)u5@^5T(P?; zQaWEc#{2y-?xz{T4mq769Ri`|(TF$_PEWz$7UkbdP_(xD4iW-&X_B%!-9F9X{gS76qWkb@OL}ZNj`VWujEHtl=|M0145{9C=wgUw z$OuG%?+7T5(JFrtmL6SetpG^GFsRYpGOO`vakDiv&5Uf3XEy zdLH1R?SSghw<2D$LJGu zE)=$F5)3}kW=`FTdm1=*e81XM zc;Adm?U4qjV;SRSUjjpU9mRU%c!FMn`-kbcZQy^wMN{Y$cVink;P%6{M#Y)jkCZ2dhFQ7Xi$rC}$ z!A?l`QuFw!%Nc*)34@S!wn!ui*<4?fFvjnt^ZEP)ZCn;yVAH&jz8@Kr8&h-p5K-V+tIv+K!tS=^v~Q28K8#r$pr zL^S(3csJEr5{EK-DV&vZsKz^BD!VM!SP$uC{EpdL)yN^_4dM5f!Vkqlw@ORL3iW@n zW3I<$4W@jxo7DY#kH1J7LaluJ`Ys zwKyLzL{}Xhbd2`l_dYb?>k=*21d9z3VhiXxut*Z%s&5-LB8Xx4A|N35gc~1qBZg76j1(beYnwg#SnptWHbDMx)R%e!%+> z$QmgQRdf$aWH;LdF2yPWj;?|?PV0lN#1;>Kc=D0~(mjk)Iitw0!$~k*kQW$m7h%yF zh@OYC7d53znENyMCG=+x?Fb(D&*e8QlnA%1+HK#>a1s{~gBwkzb2_)A33aj99!m@ekCRx$kvTZh-!nCn28Px4 zRCoU>{4xdT9e7jEwT$ON>_&f#bBBujFtPvs!_V%pPn*RveFT4>yW?M{pJRFV@LB}G z$xpKUR9{x#1ojyTgH4jyR7M2xzAE-aq1hr6@O{8uX5~PYG#qrpFXgZvV_TO9=BM_t z#C+0vVjhWo3auFt7H%YhE#s8ldJMQE0W#VryA=I?1SWlVN1v2nr%O2Edn5FL`2D9J z*3FCCD8#UrDB1x;mk21LYsVV7p>=7C!O_LK zWH-kG~x!;Ec5z+fGV^0h(Iz_Ole?%VK0F3DEs{#qX%nc&~UDDQf$Z&FI`JyqY)jhRL@nJ;Rik$#5TfMxHHz ze@zG&m*6+@eMKg*y)_!=>SuZ3MELB1wr5z!34q2iM^=9S=)FAT)MIX#pnLWfsEnai zZcRA~xY!*QAH`{W)^Liq@zhEWI46)yBpV4p*eIkbOcLYtS@}l$2hQu-VnnVdDLjZM zZdjnUIk~^7&ul=X$F)-$Xu(!V&of*-1w6D zpcXW+15!w9@rsWw>t!_VFlR5{YA)SDJlY65F7b z16c>n(^^z2ylwiESTp(8{bz9anMM0|^6c=P zY`aY>TnKF^X>e|Awb5T8lf04IPu_7PoTM2;o7~`lfW{@Cyx1uR2a`(_P%J|fIKq7N zLJ{u#pZeTLBqay_hMWMT3x60oEU zD)K|i^u_%9p|^bEZF7E;2FWj}qbj{2A9z`q+gWvzletzdtbiKV@oTbqnVS>MbStQAs0QM~i^__JjlD^KEX zsoU--?p)M~^z_cQAp6)O>&YObP^PoCCmLOS$=odWDxOxnwvH`2q~hd3WSPxO3X;Q& zu*DPQe1}KQ1ez7ooCMY(p9S~^duB`hh`istt&2+kTSPWG>$l5Tb<67jJ1-TV4*VJ3 z`-{B*jWtqD$EY##DRG_IBNgW?nTTro_ZQKXcPEh!E@t!ZUCntPAF}&~5p9F6$GK&6 zB_ZS;-Vn7c0VO|}prJhR|5jL7L3!Jb>E4-RaN}JJQ7P=X;05LWvEy}&#ml!rl&XWX=m>RicjH_}24`SlI>jtjgb9_YX*!$Yzl56e0FD zw%Je6Mfp*AvJLD-U`~Zug|72)_yA|s&;j&kLr_O>NJE`Y+401&lYJs}L*y^PbPPu_ z^&Pdwirj<@x9^n0Qqm^o`_#e17^N+Dn5O6IO|nK9DmC!obyMG*qj$?;#Ny-oe!3Z6 z7cPUZ!L@nOy9}`+#~72fcN+AFua%33Jz_a)pE9A`HdavJ9xjJ_^TYs z6Y{F}q!GI*ooJi*Cwusc;%t(O;pjqMQacpg;yCqW^WIY-|KRz5U&Uc~;&Mg}>hBus z+c@3h@NTsDDKaRu-R}{aYhn8qO_z}_{oD$_;pmvyrL7FUmfsCEIxC%-%q7DH!8Nh;=dcAQ?2n-T zT>KJP?-||0}V@ZdKA_FgFWWdz^DP!nlkzi|E<`8Ckn$75%5B4 z|0@R-oeYCJ2ehwS?f-*R7Jr5Tl?=tKN&nSr`cV$UQaR@n7JUALqYESagZjS(|1SRz zP$g{gui`~bO8dFae;%D74Av$J!w0kfN=*?n!cgGohFzD9|Fir5S^pcXO;trBI>!I} zJgEueG+35XS3UoS0pO290c$e=<-68@#G3pE{?+O*`QowG^dIO|6%*Dbo+{zUe`TyV z)nVNywjMs|{12}E|C7lxc;-p$haR#eshrmJ6KUj}fD2MENv&;c#Y`q~>KmhaTkQX679=kT*MCw~>$!i1@D6iKRf zr6dKHBf-@!CT0`$vVR#1MuVwdsf_U~tVVHL> z4WO{o0UVP-x=j)iZN3ms``LUFIzoEb`osSP)|DF$WhAV{6y)M)`_Y1;c6)1>r`S+Z zq5F&i^>w z9#xLfmD6-=I(IfDB{v~eIhj_6r^{4S!Vi4O&}ON?ddWnSe+{d`StXVTz-r|X6TfY^ z3Q^B(1=;@N44|--O!661ZMrtVN^K+@q;X0z${LLF((^e{SEFGmX0C>y$Y|mDYh%I; zkHD!%0Vnp)Qzbvk;K?0+)>{2*;3FleP)Bnorh8<=2XM^3^*RK6MQ7N;i6wbWJ&Abf`{hUCG$!=s=&o1HS&$vAQ^{f*G zNjM$($3XrVLfjWHt8t)FfVCQ*et={~e#ITllC;zy3C`Pw;Q`g<)`bB{m>aRBw4S$2 z|4S|P*d@aXutz&lvO_+R8%h*~heastQdqLM7!ZM7T9Z_NUY7v#xRUN^VGwJ{0l^Ahd+q1x&CQ&|7$g9pcmX8M|(|!vqiO4;rq=U`$2RzR zG@-TXlS-zIO@rctjx=1q)lOCU`tHi3^}Uvc5=j-~H@&Ve*pse*@YJo0%0$d*Bgi?p z?dZih0qEC#=z2d>VD81J-5wzc&yX(6wz7-QaY}2uxQ%baAm65%S-zW**KW%QAF(u` z0aM{Ow#}L_4qJ9-qhpA%4gX~>%TQh4bKjnv(lF_vq1~B8hDFB(GnX=s`U{1kK5X3f z_Nr#ZK4VTsNqxq;ac=N1^sb*37nw%PR@^07^-~wK=ztVDn1fK&Ws>#cieUuP6Q1T# zg-U_mpjD1i)o>JTE-lDL4w8-Leg+fBG{i?vMoRncB_{28I3&sS;VAIU*3Z>T{Fqk# zhNa_|jE27rYvV2EXCh2^HznL!Y+}EoZ1UiL9MtDY<277Ke<9i{!-e@sU;a}QLFuYj zo$R*~WYET8F}f7*ZOQHBmRnftkFw+(hNj^cmFJ(fL>v|%c$4_&pKaU>9NcO;N=(hs z(p~D~tK%KZ;uw37zpdD-Eiji8D|q8VHTiR-OSkT!(p7!S$~dACmmil{u~sYu-nz$j z?(+KM!{8{NB6^j+@Cy zNjYgtF5EX@7(QL&u7P>@>M!WRO zN?W@2Htf6_v|KSE&X0)`1_moomg8sTRs_&gpCRpQb7;aZ=aMQ&xy; z|EQ$2)qSo1*>%|IQ#on^6ReF2mhu<<%<|S;?uWv7=AcGoOzl!^-f|&82c+3BrN{2o z(AMfj;-=izBS<#QQOXUJ7wsbX>faNJNc=Uv{@Kg$7Qd;-+$xX_8!!_927R;GM&zJ@ za`^Pkl2yb^fMQ?dk40Q<&O&nB=irNfVSKfNtrHY6(RfkiQlek`=%iXEGD2{PKZEpp zXoY@o#5+K}A6X`@WMTJEt}Ls32$w6d(<0w@@-3B1N$i}qlZ1C~oB}e)%?>bDh$exQ zal(W+6_2x24PQ{@Fg)zM8%~rDt9mRvU0=I89^S<5(oH}&mX>~ceRC_~&(2RgPf|>I zgB%V!`#S{xj%I1`GIXNbg4M9+;Fs-(0lyVP5|Sv$lA+VUuVETWEKyDo5k6r4O!o9% zyJP1=$+=sjo1LqhtJ}Vv#l41G9hV;L134)Y-79Pry5^O8%pYu{o9aqf zc=x@Hvc_Xih2~)H>@!Dbe7D}pm|gSA24$_s823f-;-+N(Jw~d{B1CN6W9kBg_fF4s zgt*Q*=A?EeW|)|1--{^Y0?Z%Pl%?YK`EAfJF3%k#6^x2NlBN9n{c3fvF=1)~bI4!` zE=y0{{o>V`sVG`xxfa|LCZjMIL!E5KkgsP+6d+B)bPQRq^Bgkbk*}`%TDKe{Usd!x-J`u2hJj0Wf}`V7T($pd#2Mzwvf!@F?pmAk*g;%|4@AQRHd!VJZY8nl@Ye-jp$9bgjXoaf z5A5;uDh*_Qi|1Spf74@{(01p45v@wwu7FLw1Ss{&t(7TrXsJnh5plnI48IzbD>HU4 zDO+hgXI?scKwn0--k-Ntwioec6N>gFBPN#46~%c+E$e{EYYMO09f3fVt=aX5l?PXG z5s2A^3Csn%GE`&fpD-?MgKHscm6WabYi7MVl}$jkXoX)3^pTb8L66(ebnhbBzd`tp z{Nddee&+$(5lST2_iZJ>HYHnCnHE2({;oIQR}j4qZwnSOA&1LKUMn}DHsFsm6$_b| z2E1!goyr3iL6JkBM1BolxY*^VAg;Fyu3#l=PAxoaHyW#ZNjsU)-!IURZ5b)6K^~Ql zuc=Wx7+Y3NHkz%ri4PkrKaJR`#bHw)?~A8>l)gqi)AjgPjGvToR!SHSr?PX>TrG~> zx(ITP`bjHO^!KW>Ipxk>u0%d&>jc1QZ-->&w7!bM?i7Y(vt)9wVeqlx^$A>zcEEx# z{jvJ^#w}r+^v~S3!H~U`#VDxFOQQ8m$nWFLDoQ;1jK;{L5!{3&2IJcxDKy_N7%v80 zVGB8C{CVuCUHfsW^rcQ8cr4pj&6V4)7I!FUV;*XB)z8msF7$+qA1*#tz9*|>>Fw=h z?qir=Sl}shS;x@mM5|GvyP3yfh*;=~&>4eoQi?%lhh;nT0; zIXt`Gv475rK3&E|{KO4n_gI{C-tHCMy#Ipdb#fqa+A0T4*bu-_%Gv>wti<;(#%Oe@C&xVT~>?m88-%hI!x$#+*mL&g%F@W zG8Td**l7J?)ylOsmw$a3rh%l9&eUc$v!GM!doi~99Oq{P&e~(sURQ8k zN4es3^>f7e_N9yF>4KY@-5rDAS>lW@-<<#z){bu@zylw!RV8tLos#L~27+u3u&p>u zY>`a6Z2od1Z#lWRupnFr%Ip)DLCSZc;1Dsef-G|kKm~LWSW%XPc9M1V-;_z=HlZHL zVpr|%w0L^EFe4{cqJiq(J?Lr39Vz<#mL;{?&bn~GUKIRse_s{#*ghKQjMd-3CrD$3 zI|gh^y;&6`bPH`DG3w~v4hK20--mhyQn67t^)3_|9GNuy zGZkF-3(0#oG;fX%)R6kAe;Jf(sbM40zF0X=aYaqhY=Fn(d7e^tP0@CQH1QN?k^JF*g2mPh5KrCg_U~9V?P0 zWuMLZL5lep-<2uaL2#$*DgT5Xo=|w3=B}-kmm}o%{N5%~$nEtyPr&V@hV}zo1y#4x zAHKEN*B{2Qq7BodwmHL%v~7GQ%wJ8X1zrQN+8(oNn`)mJEl|&!NV&{6TCMsPj2?u? z%aap@r<4GuqUwsNP3uu=PvvcX;kK)MKQ5r#+4sj5e4%*Zu*lph!eBW10!1BG6TipA^VmAM1pSX>okf&+1#PF1!aq}Ojwt-fZh2E|98;F`&g($pG*!gA4ji2^I*@pmJ~-Ybg%U4W}8%s zhFrN=ymVr%=Cs9YkQvy9GhBz@KaZ0$*hl2IZ$SwiSS+sDM;8O+W zs4sG`oHl3(O{ISQc;)d08Uc==d67<{V=R@@tNxknRZ(Wq{e)jtO}0L3R`vXFVtWCd zub3_PO#x%5$z<$ydV{a2LcZb^z21vll@8@vwm-DHcIiZL&z;$gr3VkPZ$nwb0 z?>xn)UgSdfe$_{CVl4{IkK6$X>7xxBSwQ07B9$K=n^llfMZRJ6^x#NowwFln=6Onm z%+Bw}Qx><2-{;R2aJFSisphP=xAQZi+Y?TYwQSZRHI@tYWOTDuO`B{hIdB~C!OWz& z$-Z`-;C)VS>%EcW;Z!=MGHi6X&=ldMU#qbJT3`ql8K(?4r7 zFi*=c%X8+B+JJ@o@y|Nu?H;c)Z6EALOecFoyKRtd)~xS4NEo5I>Lz;MByeF$9OPxb z`no$=OCROyQUzVd{_>a5`siO*eUsq?^W!+W`-HaWx=&z(9GHwu9$WiYKa4>e;G6BTu`1px}KJ!0S){ z$!RfOB(Z=BFMUz}6clvsCwdbAHKPI7P1k94o1t2#iEYWzo>_{+@JbORHT>q1)w0 zw%#!AnZop-gw&xv#Vq(^@V0+O`OkdQ?OfM$E##Q*=v?o(0&~gvf$L()(B6B1g8!j@ zhi)ev-|zFJHyo;V+N!HxKXb==rtGREomDBYwv|~;-k;wlQCsL9RxmKd`?bzos(+qr zu9=nZ>=AI%^v=~VHrB|Xc8p)Pb?mk6W`u`9ssewzgLVxVuDmpJk8*>^W8ZY4>(U^2 zzG`+KB|&OUTcuYRNbG90)o}pyk`<)JrnH_fuYs{rVVNw;HZcRvOgh>`tk^i%E(8Va`(cCOwylR{q>)v6v7FO-$BXeYm~N zS3CX3e&OE^qdbLiV&ys$EN7KyNT|iyo*x$9`?FDT^WGaU^v*{slQ<9Jya(d{`u?tbBBO>42`L_9^+qaUqzy zh`Bc2p57eTErHswzvy|MKe455w9j}l^5hS+!HAb%$9v1iH&j=Wu1XH8G2rya@Y#bD zV8XKS;expoAM z5_BFb4c4iaW6% z{wUQ_=9u%NxSm$d!;`X-cbxJflwg^-*PBwF04?_hUo!7JTa>}79?D=Pt>qTyB0WFI z9WW@?`N8&1)T-s|dec|O_tf#oCTW=AXD5>|oW?4^{MB(O4JHc6h5kN(&b3A`y~@~O+S8}|$gs5#Sww}~dGbqt`jAB+&3~oFVn|GGcq4jqJHLKm zu)*`e@sq~2bnU5iih6qhlV!mA&@VR`mIkL+(iJZ6?oPiM{kGF(IcDLIa`vxT`{e=` zMrQoZ6xV&Jz zC($;HVQ;fD5Z!o^32LllWU0HZ(>KyPksl30F=Ounxub@67x}Uq8?+mb)t^V&ylSTs z9N>PmMci5#m}?x_%Ahv6A1HELN`M}bASm!PF09{X)k3ZY(HB!X(uq`+7!9GnV&mcB zF`|{}yoeT@-5%0n)tgQF=BqS~%VM?c3Z@_>QP#JAHa88eUQ{S^bgiOtqG<77{Dt%2 z@yl7khkJJQZNIUS^=h1$GFTf5r%YGGHc6V2Z5KMRboM)lqnj)ELt#3;`rn^d);rE` zkUbG?@=rrzSa5VtYP~%#!b!fV)58w2#`-NxheX=im=1}DBKjm(kyjb`r1wV@9VH(5 z`GS^a$Yu<#_o+M4zS@JLe8>!-})F-c; zK2h@s0fg)X8cH5C+NXq%FudZ4^>Rc5 zt2e$r?G>~9+PdJUzgsGiKwIfm_*lcSfKi}?YyurqV~NnMnF?SB#$6)9&0zl+a{_Xw z-$&%^`Cr@*yE-W?4P)qt`8G_C}-fKN{Z{s$lb;7A?6sdoT_P@hVXESi?C=)nVQD`UlVKdt#vBo=7 zN`rUP5_F%}Hgf;b0I2C02`az7Lml{L2*8}g;BR?Mc($ZJtHyQ`GWJYj+Ys_z9<_ap z($E4=6KHv?Bm?;LCxL4sWD733B^b zWGA><+&j&5I3PN;s0$b?M1yl=om^^G7y`d1{_1#j>D3HNkh*)6N4a=_RSIj_X6Ih^ z!cDBfpXmIiIZd$**{uTb!5Ozi$9v%SFSDB|{GMKi0E%tKju;eqwp z4fklxh|SUo!8o}5(fMKC7VmlRBIz`DrtMTsLBO4t$V}jz698XG6UT)r`>81J-goy} z$$-@TTBelvM#+QwP(wxb&Sdy~hwW_zh@_r`yA?a5Pj4r8S7F1g2u2}MO=l`aP?3p@ z`~WV+l?Z(g*|UB2=9i&jxbdzd))x>{e_N`22meCpcK}WBISgHo%w_!uzt8a&vKUFW z*P#6-_p|8*FQH4G>19&t(&al2r3B_Ow{$hq2P_hOUm#kvdICAFvjVy_ZMwt}{L$pL zZ??7UYiI+VWLxjz$?{NkO|O?*Vf_0M)yCsg zPno(M=c?9ECHN0zvSgPF`QA4fY+frG5;M*nntyi)y^(|st>92g2dTbbc&|MMJ(Nt1 z8C8*x5!ZZG);G0(nFa7)9NM}!veZ2!m2|#4qb&EbnJ+%)B z?p~z|m5Gw{Z3rCumOsKbr;Ie13m^d5Q7?G`oqlQMuapdfLynGZgs&vfp3)*fu`z9h zIvqOPnM}@dqT^GU&F-p@z@dmVHm$;AHJZV_a$SYcu&4ZL7`+scDr%Ut^6wxz0T#ul zjQylXe)Q?fiuYd96qH^7u>48KZ6dSun3pssYhS-4LrYSJVNjO?l6OCCt37>rC*DNG zE`JDJaR0OtU5pY_nQwd+fwiB(@ac*s*8)}c0zo9vTGvXbuBUw=MoBqPNJz^?XHNXQ zbYW`+OW;_qS*ZD&f_) zM~2iX1x0LSYd(>uBhOx^7ELxyBa<<=)5XjNS~9e-e0f0JIk$(i#`ROCx6zwpkFn#; zx{lUe0$n;M@jUgy-nOVb_{-DMyt}&#|7-5!*IgNnsAX$Vdybt~PPaWH+*3ngf@fUS zMr~C5pBdk-O1kh-rn|?4?AYfVG=nGXx-UYmj@x?@+oHqj<4D;OnLEBIzJMvgiq5&k z%L*oPj_?HFg=CVdlTt3@@J!Vc76}<#ww!R+OOvV_FK_!)Gih{C|?Vg`Je%M&wgaT6c z%LctnHs4vWWYAD0!d$D*dt-wsbAjXNzEFDnT?AD3+>7gzf@rR&Ee$o=#w2_0 zsD`%Xl<~>Y-CRvQQ&nhkdr|)E4#hVdeQNc3{Z{XWD(U>kt7A5$=!&1S&bhz!9D$x5 z<58713aabN5tpEKbw6LZj(ViP?k(~hgG%Y+Kb^kMu+WYzoY04KCxL!ro@cX z6yjS2i1?38yD4o8Quhu{ct5JEB|TmyTmch?%ykuPcE0D_AnQ77^t;M&cz*>dh!HDk zAA|edwe;B7Obc}~E`W2WfLrG=P#xm^lk5D+@A~6?1)@>CS(<+LQfq+wQnBrdN*E#H z=Jz*niP)NoJ*MuO5RCK|9JOEu3_c>N@oTP1)%`BduLHWKQ7y%jUk?RG)iwLY!f8s1 zxMt?`PQS}gi445tQBG^Rhf}{6*Q&_GWQ8Q>pBecHg{Q#Bph|k3>pR`L8&(b9HwYll(r9!a(+X}eFs`mk1?Q}+HC!Ie}=i4rVg5fvhM8qnR zt_}8UGm0RgPK)+yRq8zaIM2>)32I#5{CLqIhArGUWRwcD{Po!Ng3%7d0v=>MWNbg3 z@WE>!_G{`j<~Z>Ze>$Qivv;Y0g%N%qt=7TLiT+`eK`(jJv*OKW6{4yANhU98*A}`X zXpF+o2lNTps9)WlEO4HANeuD96O(UJcUN}l_;F}>%Zq7NRMiq*72a6KW{)-s=|S3w zkJA^B^C-Dp4Hc}I#sW)+37U3}BPN!@iroz!$alRU9mBjx!Z~bks8+RqW=L0UH6BTH zxQZxk608cg+f_eVwjCC^ld7LA49vJ5qsSwBmX+HJJuWKgbd(!25@>ik=?}~EO6TU- zG_AMIHrlP&^WUq#_%P(Tt`$aD_UNXDp74y&$|>0|?1%?;=)lwjE@q|5E(pT6AmC_B1aao?w4~vnKc@`TA532}+G(-U{4q z^c(zU_!e`qRmTSl?99bzSE4!eL*t5$80=3OG5*uH4^(C_4(ba(;2uo{Hg&dNO_DO+ zF_)m=XP0GEz4X=SWnu)E>4OU%hy{<|a-z&%8Au-W0-n}HYp51cwy6!-<%+k~V zJDLNGMeW#kdSdbHOHeAB`WeQ0+H5YXg9^r_BkR$|<}N5I=r8ZzQ0Jw`XF1mkl7=$- zhvZf};#!%io2CKJuh`VYJEgz`&J4zi)N=^4c7+VZz)3TkU)!nXFhWEZ8$fqgW5v-& z$r9*zn-=~S9quMmm_ZiUe@K57e(sD(EnRe+!0Qo<=5ygk>$qJ-ASLfCZC(d6ivf1? ziyi?rbpMc)#hbw|{WsTdDu!7hV63OQ=Ez&vRz^DfJ-Ydxf}a{n4<1OtnI1oQ`jgbe zq6Ul92y9%&7ENwIVD~LNepb+H zV9~8sKiZR3LHvSMO*T(XAu0COsN2HboY!w)Oo5=uy$%8TN~peeZK`19LhAc-N2O`r z%q~EF&*^)8PXUJ+#Hz`v-FD_z)Q&~+dxn5+vJ@qSaD>qb1-B9F#bMN z(C0O3%vfFuo4TZ^kG8cfJeS(P&Oh~Q_<@1`6Ulxg_YT~QJXAPm2l>ag*URbMNo*{0 zJ28+Ta`|j{lMV>%dSW^n#sD&1|J;HWlU`z>IhD*>O}8b;8dE;!9$YTQP4Eq)1@W59 z#j?;R_qgn>xY?G3$A#{Edjp4v^JCQ$@VMCcfzMSeRq!e+TuXzR;0tL3v@dN*y+QeB z^kq&%@BRHj>M0NNX=XfONor-!eEDG`fq-3l$Fte!>1jhLNk{*{0@DRLz}i7COmZ|1G8umv8MziIENfZ{|>WJujQ>&cc5PGw!AFqPxAK8g18 zPZDjOo4F=ecLgbp43&g%Y%~73Pe%e;QezQ@tvO7LN>j2!gd~`UHgKbeoNgwonhSII z(qebpdG5GAXS1#qWJh1lDi%RP9E_G)<>{|;DpytdPUT z8L3u3Q9j#!hENiKM;mLq;^lX3264+0@M3rP;XlWrh3Y$e)PEcTka=#c)gcfh%Lp16 z^~a*mT$T=kxJ~__<@!24K`D>6mHZ^6 zm=;HK%b6*UHwfe=kU#x9Au*YB{BA^2w7ukoy2Iq2#z5dAC~qGi0KRSTxt}K>JKOF9 zRYG;oro(4$)TVoc0QuT2vzNysL!GDKvbZ7ll(XXvq}a8GiwOHUI&c3s@HFJrpED<8 zHCN3hIt=fV(;2b{K>(X7Z{?Fv@s2GX^~IgPNtajZ#B;X3gS(au%xY;zKJ=t<14CBL zsSNUBbj=&ynoUO;j+j3X;n?Nhlikvg2(HnV@EnFboYw0=pYU7{2w0k;y;#)!hsr~K zv}RFdM?7Rn=5QW2`fcl(Z#-&d@NVo-v!QJyoKftEg~(*FfP;Th3Pl6M+%XR^;TRE7 z_PVR2`YZGu70b(U%?JQj#g2q18tEN<2hQBzlSD^g>tH^=Zctr1uaf()K|+Ri@)?z) zu7G7w&t+#)DBU@|GL*J7v6&Qs#j>MBaSU#Qd~zP%+&;VM&MZ^#z^LPXj`4n}@mt4X z^;M)&a4{b>i|6cP(9J+BP;V?%(6R(_I`FA+!AoYgquedGukUfTXO|$3!K-3<&smB} zpL15m&TOMv@L~&^!1ob;`PZ+Jg-x)1(^R6tq=Ox`wB2i_hSpIhzmHwY5+rrqR4>*m zpyJb`t2shJ5)FqlF(BGjp||Opr`0QaDmmruZ%nLOvvRCdZRLx1zh{9}#h4&j^g&u0 zCT}~uDmoCdvaa(b=~^>0q^g9f6wg)Kb#DkbMIMut+kJ1 z?PFEaUnOfqPDR3|mQjoc#KuT1&eZ03plOk#js@cUse?5mM=AqdPE?pZ^V&E)M|*^$ zjzbn_?BtO!kw$RembQqR>p4ro z;D{$l$qPGaOU^x`qm3nyiPE>}VOGO{8Q8|#_r0aKqpjCCTuO{XiSBqNr9MQuDjI$9AC{80mTd8{Cj^X^9I z9VJ%npvK3mWd(6s!u|HG2t%bUf~C>RCZpN`m$2f)n##)%&7_nPF>7U+RKM=T)P^~N zdZ~664`S)sykp%eNVS=+~z zN2CHZEbh6j7Rg-0^lmKuq-Qd-!}AvF$38NjA?PN?iPq=+7y_$@T`scvK{1mn%9(8- z>Bbq0`*vTLh!>*zaU5k@FdefkQ( zhhzH6Q)ifMe{_L)So&C6FbD^AOEgW$jdgQsXVw@>F!vQyF0vQjcpp2!e)5a3fH{<+ z)nW>sgJ%T0^IrGy4&|zEUbI5bpRCwnnNuSXcg+UH(ARD4z{-YaYwGC_^w42lkXgbF z7m=)K>xXjEd#=)(?=Ok2!r zP#7I*r*=>~0) z&!hI}dzWfM7|!i=XITsz#YD(SM^;+1@k`Vr-k+(fC#igi9990(zv+9dMv$Erb5(E2 z3hUU)2~5|@L!lxCkc12t--okCR8(5Rr(J6oZevzYUNr?4Iw+|{2V`2lhFK3^Im`Q@O{px_shgbh`w%?tc|d;H(1wP2|9)_^oUKpQq%OB+y5KRF zXCZKEDd#0;dD?i-TrHK8xV63O#8%(7Rl%)@Io)8cdQ}GLQW$*hA+1X1w)DZ)tkAa0 zyz6l;F?ywua4nU1yVBMG8>?ub&}&?`lh(@}?Fq8d;>(vYBJGqRfmdJZD}RP|>#@i) zvPjqK0O!`rMobKo6I`7t_tBf>2dVZ(ULKEoi3;|Kx1+z9j_*GcpZF?NICS`6K~Jeb;$lDB7B? z8?v~Al5+i)=@Is_z*<%;MEck}oy|^|UlQn-n1^tW>`vSB9@xEJe@*;|R!RAy8Y10z zDwfmV6DRPc$0}&EI&kyKlC)Eo<2^?Y&6D6>F=S8F7ZgZvJuLlwdW;puSnS&ZL+m#T z+#xi{r6p_S#7n9-9z`=tg_h0${~;m!AaR_gd`i?kHsU#49e6P8E7POBKc;JjS zo~%mGeSee7^~fVK9JP4f2FQ)G>vjd{YhBvq*D5r*dj&N!tm@U$v^x_7t_44$gXr4^ zEbI8$BUQp+MwMRE;MN;Cd??b4hEp*9Y0s`%Tm_29li{B0oue0++n#pTl0t&}7dFPX zO`|HxQ+a98?=wAUn@tjp#ag&LEJfv-2yhXZ=8bi-L0@GAt+X4(9LJtC)|fn|Q!<=) zP+H8QLnvE>KgCqa9IJ_SSyl#vG^u@)F!*OqEzFLyL4{Vr{u!t|s4w`D2-0V*nrlrW zb(<)+)D($^k7T@qqW8t_=qv1+941 zGBpL_!g1BZf2#Cbc_P`nr~%X#KjmOUfsHswdiSP5W4e~UYc-1AfflJz)vYerK!;JP z%XmLCQ*ApsW51Mg@8RU)jq#%KR)=nEHg~;MzjVB~y5V(3QCmH1)LHNPpt+7K2gbmu zMsl%RQYwhq$$umK?mmv&^$5YVF8Pd!>$V=ALc^!4Z_xyW^m-`gV{SJz-I<^dn;(>6 znDfMk2D;Jc?38n^(nag%`Dw;hFczMP~cv$c@@_c8~g@7QxM z#2B_Hc*jJHs87Bv$(&3_zFQW4Dy+`+(-s@VGll&m=~*eHyA!%b0x`y ziGKEZSdZxx;m#zN?#y~<@}PCEtGc0bzIEir`xISS4cc9wxJ<&`_~&DHh!kxkQ`xg&Fk)Iucmm z_>eWNW;9~slnjHFY0NN2ze!ro6E8L)v)&u-7NsW@GwtDZK!AqD3daY(gmXr!Rodul zT;ydEs;vAHspsqveaO9~t#-d(G$^h3q9m?qxqPjtrTkHgl1U49oHw8N^WAauu%GDy zt?5S_XLxPoKuCClq-kNr<^Yu#IsCpxnvNC&nMh*%0=n0Dco353+Qq?CCpq*4v!PxW zE7rqP4HNAF!lo8hRw&?Q8ETATCoiZ%RNU%;^M0yi8WbuxS4@4JHv;d zVU92QK}k)Fsq`*~H1hSsDY$)12RJ(q>z7+3=T(f-E;kvJ&?Y1XMz(7uH5VL!NC*O7 z8og%f3yI?L&we{)0VUxz-19sz)NXoPh58f;E0N)TfWsJ;$2soBwvUfpC)bCmw_CNU zxF*a@n@@N3wpsnA8#+9+u2ur`)q5E8LNtsmZPjuLf}NvZkD+ZAAcIL^yUIK9&P;35 zY2w}?mHP7)2D)UsYbsj`<3^cf72dUsDyI_SKeq7+j{2kdT*ES4s1!?;#ZULDJmwCx zm}cEmF+gvWq`@F}sjd>~R!(K9gXs7<@Glx>BEpCBMzq*p%ehv`Nf#bkEf@6UEtN9^`~MBj z`ccct_`IG$dV?nbVn99K59HAno8`!xRHz%vR_P+YWsY}em+3*dEG_8{VqGgN>rboh zw!-UDO^2&f2aCgJ;hUwS#PSFWMwAR5vN80I?{ zpg@poCPG{71i!dfz(=ev!t-TS<#O)lkIL<9V7j>Ln-fj)NAaSfqb^N?wDpB%)M_OQ z9>wajCpT-O(J|x+?(Pr2EV>72EGIbv`qhZoyh9g}K19ss^qOF=tb50s3|!POvY%$! za|e7(vo6jj;;yVHn>&(J-@Lkfd!@v)ahCkqlXGa;zkbHTpWIb_r+hx@A>X*b$xO_C zv2vQT`oLMbfJ4=?%kE%rDIla5Yrg-nDGsmZ1p}uw6xCt`mqkm7A>I8Z7F+Wr06kJ* zyPZ%IOpmaTlq%c;@Xt;+NS`ZWCxE>VZ5rL zZkBp@FMS&6KuOf9dKDbW_!C9Fxpkm?n=Z?s7o^1>EnE)1&|DTvFqdUT1aane;WYq< z11TW*Y-YHhJoGx5*VwK3UY3Ryx8Syt_(hmcHO>U`RpnOs`RmdNv5(E}Q`DvlON%0l zl)<>C6=YcF-i@MCA$xJDo(eD35^rc088R6ag0a;iOlk@;p~j;%D3HJ%UV=l8cD|bE zj8~uxvap@oeH5S`;n`&f->e=>ca9P_ou_2LsBd@5t&|DPsq+^OyaF(F9X@Vr@iO!* zzcGIX^4=D-uFmg@!^r5x!D}3_&R@s7IDhT=<<&vy3-57)%>&LnFllnMQp;pQCGuzG z&YIT9Yj-Dp)E7=jUIOP^Vv+ibRSZ71*7;f=_eLxoj-%bU)Az-^*EBmfIq=|nTGJVPmNwvK?-E9l^S|GJjhm9!QNMz zV3(oEoBI25@9xq-Im!=g`Ja?zc5YxDF4MQyyUTI!)EUGF{GYQV#R`Poo&*OD|$g??eVcdwl%>W^j!QPdhb$=K_=Fi%B<1BJAW;1 z#dm8)^5ay*2k%plIfT~MoShtGx_(Y1lbg=Wi2P_=o|WUVGMXc7(?c~f_b@v(E&8%d zpQ2JwEIt9VL)pnI+A%8qMolaj9e+N(=xZz_B)%8k*V7&%IftsYaUg&T=t zW?iq)nf0MfavQulIL9is@l0m|7yk5ymJdLx2C}FIc9DFhQ-v%}Uv0t96Phl@^9D}$6X;CaX)$`D&*$S-o$|P; z@$ur2ZY7;+_xx$$2jKQlyEy1}7OUpf3%$n!VhX6F7`Mu`NvhY!QnAJ@)K4aORd0l2 z&nA{*Z5+mOe|k0$lU-8thxY5E3f)7(`fv~V2Vn6(G)azkfF{s%KkAiHRWj398$=ft z3Olk2Z7GT?<1m_W47rVsS2`79L>%U83c;WzeM8V{=GoK8^zcs!xm~NVZjZ@|+$>^0W$-|IC1WDgyOlxdxxC{*~fj@(j>~;l@i=qz&B(HaA9)q5GN-(s25)DatEOrnR zNW)I`{p->p{W%M(?B?{b->iS9WTxm^usRCqvV4cx!@(_NOqIEET+-0l5gx& znwBW;-T!L>iLtTTWj)9skf~&NHsl|u^5KEpt|+>j`jkRzkSC@<2BCPGTP+C-DaoY6VB6C zpDlK%2r=mTs=`p!%T{V!1qV!77(Ny(6%E}dvA6YIv%zvwY@?2YGN zhYIr{w+GqjV1kMyiVv?z$ct!Inl^nXfl=j8%C0mm?9L&E1*Z zU&vwC4qZo*IHVydJEw{}lGB<3%J=&|9%fO^aH|+wuLU#GGa`Ep=t3x`hqjDx$^Wtw zATvkubqgT)c%}u)pm9rI>OtxGk+_|8Hl?uzUC?ei{u+nN!_#Swm( zhF4sjv!votq^&rlviPP8eEanUW=hmATM6v_gz%Hb!#z*@A}mzKw|b8oKdeJxj|fReD4I&P#@*?+u5^nGG?6v2?X2kH-2r`zGxy} zWeMg|I_Gh(z<(!Pw_4hBM<*uVihG{J>d_^a?zvPE@{WfwxI&dPfScGUIBl zfli(82u^QkL_hk-0sG#B3L@~s3!gBq%3g4BgU4&wmxW4ocbJVim3n&VHH{v~)TuGk z)caM6Y?<<7|K`aXeuwx0`XYuwf-T4IFRy&&tX5FKw3y#N{cRaS8Sz3JyA69K+f!9N z^85#FQ(o^0P-m)4MsE%)Jgk@GeeRDM+xoM%!LE}avR6C%MjQb%=23mrf{qqg!I97b zhX75tI0av}>PnMgEPfsVOm7&Ji zzryfpa9R4?jBMHIvX`uj*_{^}YOE|}QJaJBD05|VcFyGqO4p8lu5WFX8~X3K#%oDQ&Uspwyf6M&wHItf=_2&P8jo$Aq9qg0}5Mb z9eS8)n~7|ySDXRiPgcn9A@JH$XS;H5~dBi0$>p}4Uz&gpIKR1oSz|U=O8E*A(FLRMnkcqe#|+b z20ICentD$IRj;Iuz3eAl3f{xxFnwEAkI9}Q9hQkUo84T-)~{c`644YqJ^|!v-S|ua z19aIcu9+H1JK^+L#7$2`4nBb|;=?2-II{epL7spn>(sAb8Sr&6)+DND4HRrXsCiLu zRxVaped*igatE9_IA{G>d5s4qFJCN*UZKuu&@?_`*C_m|V_R z5};=J#Mku=4Le*g_wZt!Iu5iC(>4vo8wq8udwLB^5wD+0yS{(ld$Tit!wep{-GtpR zuH+DI09wA~fby|mIUo%^U-Pn`C#!a=)H}g?5Lf^MIKBK+-)GqC^ah9ite)Q?5XiQi zEkvcDcC_WZnPsWZu9NO@VCVq&qdn}h_{jNqk_@ndI zc+RY4`1#eEV0wVB)ToZ#_lNl?)DUg&i;?sxpW9O(Xc~4^rk)pKET7wStUxWwlPi_g z`ykY%9be*qOh4}(&BV8uI8rOS-8K`HIk;K#xuH97 z>sCoK#B}@iU{egZz!RAAErRs5Y^%i0vcgT<+(~uK7l>F^uk7h%T*f)@omdkGWR9yK z#Jg)5`Kk;HR!%3pcP5le(UZw<&pKR|qa>0blB%%A^FCYo^d6RmUO-^OaKK~kNO=a> zll@Hx;kG}oPv>pdQXJ(sH&k^q77`d^HaCa}2_;RA?IS&O4k|qZg|x90-4#VNW0RHh zW4+h(FQ+CppB9gr`wsxp(fPeBn&oY2SIczJ`DT_A(ml7p>kHT|1aY3}#-v`vhUN`! zKJFcT=`xfl=CYX&mG4^f#q@lKBP(W**;w!f<|0|yUEvqI8G!;`eq{vNmVpz(TlX8k2M4O0CDDx&BVz-f#a`ZU$yIV z2{mAjg=1%cj&~M#nG#dV{k7dMA!%j&vU(WJhgfdiNXCJUl==jdnPSZfT2eY++6Dhl z-#jTP7GAVUVmcyNEML#4HtWY3AtWt37t^mN({mO=IXEp-H$x3IqwF19(CD%sJ;BHa z;xg{Yf#r+O-_Wuo;K}4yzfg7-Fn!z@Ut40wu~R~iN2d=1xEsIg?SCZ5=E%9YhvMr( zm9duZ-BBfy35Z?S*0*LMiiX(=o0^)8MFlsc6r@cQ#hZqQUzYOBXg+f9eHgV+Tn-Ho z1#?%~GSZ3MoJ`xM53Zj9vdM#FfM-!ie2}%4oMzE{p4@B!^SRzqd63?+JnBYqkR5;m zRuQ}yip(`K`Z?B0cEWZU+I$uYdJ0Nf&MnYT<(4&}ZadPUl6~O>FMkPA2MHTWra&yl z^789NUZ}cC?k`Z3Dxv~gJZgvn8jn`D1(Z>!;S|ufyi@egenuP|N*%#NRh4madJ2^m z!iR>D5mDpZgQhr0a~!KpcIB&yJ!;fai)YbI(o!6bND`EmD5k|hvt(9#5}~D|IyuUx zR&wWCW6H9|fB9TMeWdaAt@+iYlV4evoAECZZCs3M;lcT_H5O%xWi2O_3kUC-8ZZj3 z=##5CA!f=t$gCnEqglgT`BdtW%HT4!y|*nCgO*4fhhv8Hbj|csc&{e+G%#>{PF;Nx zx`Q_ZV&wT4s`xe&GgUOB-%vh~eH6TjQPpBe0@q?46V|ac4}yq{w&rtCFNwq1Ier?a zSkE_sb8>#5`%4k#qdWq>HR=p;7VyjG_7L&>G8V`dLYD7xyJFAC-jJcSqo zf$q_3MD}upk})O(_K24^P9IFCmKHj|3La6j&8rbvQFR}dMBxp7fJTi7VZ3sNdFVdY zAc|*GhG+2o(j0)OUzo3{B0|#Y#Gb#YZc~-N#MgIDB$jk))F~YdLM_YVo-!7ivA4^m%RB;x*zRMqLYH;XzO)f z=P$bG()q1Vjy=@|Ob>W-IFzRo6X;cfbeZA@k~+YTpzH({b-_*Ln`37=8RT5+aqkr5;yQ?-MGIp8(-( zv75jO$HJb1O3R7|YDs6FX1jUroaV*enU-sJw+=H0u_bV2nJ-WPM}gz>sDm;dEuU*; z%eWQ1xKHH$7UjY7=7Z;D!I-|)R2gLpn?&gL#l2SA3t~!&dzqurj7D?;x&?ttj_H>= z@Vxvg)mDZv)UTAJ;XH8~Rak*BSkd>P&lI_2`4RaFa^MuL>#YamXCLy-)Zt7#sFhFd z6ZJy^EGvcV4+t?DhS})3GVoK=k}ZF!e0s|dFtimvcpJC1s57|O1esTx zQ$<;?V;=gtX1YUyj?t{s=w?rBLlpifN}W?#GKF4&SUtzUT#HA-MBDvNLo^j42T~mE z%;2R00zvo`YE)pCXUxUoQ#CUKO{|C10DM-elSHeGOycc2W= zT|OU+^s5fTA`(>LMY|uz&>o|x2xt4ElwDrz#vvaPV_`CC&Z7>7Lf*7Uw1~(*3PpcT zHrfXTXZc!TS_9xuT$f=3Y7=nGQNbIWdsgObn{#?3K=xMo7USViVNRucN@0M|8bUftWj8Lw+!& zSIC*YT3aPV?L|Q%9WkOxB&K70umt3Sl9t!1U&l!>`<6bB%wWsWkAS$#5M!?#;=r1`r{iZfrn&@zup(!J1G z>xrItn3ka`r6oyG7@L}1xBgHU#U-GwpQ8Ra%1+69Gqu4D9jLr1K?X^y3RroFb7qVF z7>Lu*<6YU)M-qX9v;c}J79Ef4p5(r$l}+i8cYA`8Qpyvm2Mb&Jw-C$VF}ui2l_t(L zrn&r##!WC2V+@W8`Nd%1urPiBlWJP%M`+^Hc}li)wDp?8wJ+WSkm^m>l5*AUH^FP4 ziC0t~9bc(ENbml#s%6QNlR}&8v#F9Uy&`4u7L2=4S&$lba2NWdV*18vCxTS!hDnss zVj=Qt8b6W{%~H*v{b-R3&Y=rCMQ)O9feUA#A48oFOO=sxA9B^R&^ z)u{yzYAZ*Q80?4(t-LEYGu^48FCkvpBpOx8$yzHc;`J6WOu z>jmc17h3JChuGbuen!mjRSAcfEaH<89ggB&0WtX4LnD=a=x{fKDXjo$%wM5OpINX< zp2_KIN$|!JQEkmFRSj8MX*}10dgFS>iL_8_)Lt_r74S=|Be2>`{>d2b(<+Mr zQ*B|h@=Cg%0ok6D_wW566Pa=Mxi<9RV68Ke>VP@hfKT6qDF@5Iw8gc)#7FrnC}Ra# zEV|)fwH0Uj6x!9BUnqi-g?JYHB?8I`04?zD1ew!Qw6&#@Dl$N4@eT&)jTicfs%BzojW(A?rxAmTb~pVt2p)q7NU00k+A)=NWI z9R7q8PAERGSwvonvQYj9aJ)kq28RIXfz->R4tR;bLDainszd=~J3MCS9MJxTCjZ7G zA^^FVjrHlCb^sXv7u3iA11QDRl0cNq?*lk-0s~0Q>#+cY*neC7 zz`8jwKtvN<=U?dT?x$0q?zLotcX8|fSTqShI>YIBXXUSj|7RHn$$*vFu}|-$`3HNu z8-Onf7$D1*l>p`UmHFS&{%>jT?B;(~3zQQ4&mr9N{hvel|FT0EoMq5(T}yR!>CUku zz4Pi?;_ra|cg!-$e*cM$j+8=?T{`RbFMjv^6oYs`Ov!x*!u~zf3B6+h0)^w(jaByVl7uoE&@5i$ zfljt3jb6L%R$gD8LbvoP&7(-2N0r7$MpRbV`1#*!*Vt6SJx&o0 zMXU}nu3b1iJG)e)VG$k{_7iBCXWpG2ai=!&9K|$N0b5P zNcZj$HAsoRQI)kA!^M&ybI;y@v|v1a`YKkVeS+6zZ_b)eyw{1eP`x-Ld;hoe?HRqV zeUGy*Qeu~hjN**r09Z;8|?E^0_k_Z_!I&b=6) z-?5AP_x)8#;CqmJa?*WDIZzCtG}h@EOkgLK|4|j7nolPx52v5f$3y1W9cyLh+kkuBmPy|3OFBO^F6qFqvdo^JhL_vG6Tu=5uCO#yGn3hmnsIP&mw-Dw<% z%kkk4uqB!xG9c-YLRSVIgCxoMusMtz4JRD1v`;yuZk1t%i?#(rb5b5z`o?N9-hloU z8Cb6B>ZA5PGZ`R{_fL|1&(~iBNXdV}$B}Ij??;KpwbWz^9omP#aeNag5*^+|8&WK0 z>!;@Tl#8D5#4X+*lZ9SME9P}%^QcN2ihRsD(GphNs5Nbi+^TLRWrX=qfIhi^Ig{ z%>i|FU#~TNx;9)FtALiKg`Mfnj`MI+E{ZMs9qIv|4EB~A;&}8iZE(<+$7pD;%Z5@C zc%Xit&w_P#W^hxV|CZR7+5tY?)DC9SYo%Q07l0fBAsxk~_)giXE#DO1I(FEkMW*pl z^ynqtt2lOY_;ZdaI!C_w_bCA(8xKRsxZ=uzRmE)`*xcDf(FZ*}1xP4VB516)P@wtVXDVbw|a--q{*pFIV3Z%f^T z4#V$HSDAsQjc_hw^xp%~lR%(|Wnspu1n>8!NAbYZxjABvNB`~|pa$d4bjs~^xilXC z{?uIthXq{Jyrwad3h0=FdyFJAUS3{W0~C`=6PkBC zbg@)K@)uxUue_XWSAZegLkXrQ&C+MtPfuIWh^fOKLv?!fIw>(%If*@#profX&eGj^z`{b)I}5*3|b6Z8Y0 z53Njv{HW$bx%eC71(j6MQ=JxfKJJl9GaMh5BDx;etThe(I!N<%*KnFlEisFeJepWr zmyV>v-#Oh2WMFxSW=t>yqwWo{g#+Y@#Yg)rJwJen&ZX2#;w+BTg0@PH0;>K^ULKnU zcLb*hI7B3~+Il*EF^|ThJp|u^Fle=O-4jO`2-wCT4a9RPjWwVfu36H9tTdAF9SzoR z8_@K$;i!ddsd|r-ZK?Bk%95ik>Id=x**|)iSRE{_@4CyzeD~fi>&Ruhwg9n?b#m#) zqO2&jE{`5%^XHl9Pv}~SZjuG%ELyPyxfN?wG3x5GYtFLjLWc)SUl0Xep6tk2kb4~u zjgdXTs2QpX1S%w~r1g=+I_|>1#RPi?$x8#&e{cIBYCa(MgHY9op4hh_)y6 zJgmn`C%lQWIo^@)e?U=H1WgayatBXb*$^Tc?ZS4Q`;l`PwLRPkU|O8QG$rfo@-h6!Bl1aWEg)3omOc zDDhen3ti3OUL03hVj2OBqT%TDM6DbpcQiDbRM&d^eUHUpI$9AO0FKr^r$l!8COZ;` z%}o9FqX_eb1IJI0G+v22{?H=Kj>tBIDQokN7`L=nuZ@UP(tmHAW}!FSbtK5a;>?m$ zV>4Snx=3m$(xf#>!!uf#c@z|h{J}5iF!P#E56*)lbAgvyq5vngluIBSDH;FmhQqj|3Jt@>B+sIvS+UcuhYVDxe+COZTTtr z1{B0diCBWTkT(Cj6OXSv9Z*B~o%AWS+7GcIi!-I-7z3vJR3bcDOD3`HY`8nkiy=(W z_Sx#jM12d!ie2v_C}lZ5fZjQIdzmKNpgztamw(iR{%S=6jO;KK?+bOzf2c2>4wTVo zPcN7{hT9ii5o&=Rs2~Z;FA4`_g~rcJ^TLLwc=0wjc)n}M z#Kd$e^XEK=vq(#XwMrS|!B|^bHJY3TmSao8ba``_zf*tZ)R-vnP-E3EUewytxmyJc z|A$7`dYNX@SI*4!Fq|8l6Z=RS2n|x3TC-zt7uIr2s!_ciLSUnYR~vd%I5YNmV=}kn zKY%Adh61y1Cw)O&Mm+9xjhG;h4Wa!}IHoS%kP-%I$B4>gBeK}^M_ZCIaNtN2jy2c* zA;Uw|L@A5+D#i)FhF;pK5hCgYwrr0pW7alGJVw`gn#}?b-D8+1R&An!~nQU_%_bi(<*5%^E=h=v?{K{I=7^#wn2q zLmZ}Pms8tM%)f&AlVBmoqP&N~vPf^l6$yvy-xKw5q^%gQ7tl1Vx0oleI{=Of-&L)d zV5IPo{85hPM)$Xo(r1VZyoVE<(DYId7I(A<%4p+{QHjpQTABN)4b-=cKNQ62!1?QQ z^O1#>j>mFGI$dU1iE=MU7$?GjF9mkwZv}50d%_el;6^87-N<%>(B?hreYpcPuudCX z%1x7ro7OVWOzu~mz95zQ#kn~uf&+emLo+lozJAd5pQHoeG=KxkZfTe?8gA9kXQ=^U zon3?l__PMdg(j}$2g_nh4T-y|^T}}~=&y-ny7hbaJ_`*FcZfYGRdZ)}9JB#pqq0%z z6>S=&VuA8tvz~BGM;<%(Z-^?s1jJW?mlU)I2PXgZnxXSeCl-Vn$9ecm&)N$`3s>#) zw=Ly^y!UX>F7md;TZIqKOnoNm3^N5XvnQRTF#k%c_y7z5@U$GOfs%=xol(B*si6iU zILz&8sf#=aWju^x)bxH^@p`_R5)t{B&CufJmmA$A70Zq831?uMcIrV4NzE6yF2+;v7_U#|I?#{@`NLT@jNnUWsDu;|d-> z`U&G04^xYCI zgDS1~)sQ@Yy+@zJoH6{PC_z~&@{fW7B0Ib2$2{BUx z(&*X8!5TWVTV0FeWY4Gj>NTSDhSC*uLeG;n8}#gm_bSfEVBT@hI6uF8W^^r%xE!+8 z23zA4f7e@4USWa!wDi!<wSxKp2Bq&7&qbpZsO83&2{HT>sXhW|Uj&-W?D+|-p4Mh$P<6F^Z zzTj97p%S|^{#=+K6p&WJJEK#gG~u&bw>AY-<_-^X5M4@ZGm&-OV?K=9|7^f|)153} z$TXBq^A0mE)WCM=39VlDC%@?0U<;mEvp#>t$j@PBXlz8CIHmOw;<^>PYVe~zf)d1` zI;-rW-rl$pEU7ytar2a+iMnwZs`gZr(m>g<`b0w& z&V7v2Ct^bY8?NCP#i@D*?Z%PIiY;^=10-)IB?5kJ$^qF(nS?j&W3Y zrm@BsyO#Wd+z$}Ty31vz?%+q=UA*%Y4P;JNiq!;jj_Or{e19GJ=|Ibpp2m;DrvKt2 z-$;P-^Xk1w5dxO`7+#|@&x&ia=WsE$hV5A7zD+28fr!jJV__~K`S++Os{ow+z|@Ao z74`eY&vGMIJdz4vfz?xw zqS5_x1Own{fD$(Lzqaxh--ZvYe_>}d%bz2#0Z&`=f>8hX1}j4V!&NhuBKUKJMBu4` zs_36Kpd|*_0AqRf|AD;A0#Df(ss6RZzs4`70uVNQ&EdZ?*?<2cF~F5u5aMJ1X@}~7 z9ae_C*!Xh<41j*-3=0YRb8!lRy`v=-@AT&g0f4#uZ+Vgbx4eJt4)gz)t#_R9zzV1({#G4wN2)*e_4U24UFVQftOuV0dV3fSQw>=~ z`$^f_!kD!xJJpM|Os=o5UvY2@$KuAI{^1Jl`BG#&#YV%iz_j>`MKhJ|C#9gE5W?hh zu-N|U)vIS6S~<%3-fK_(kKdWZ`ivTE0m7jlCPP8PeRzyO(2Q{;$JqVp=I`Vk@E%H$ c9Npd{>N`nOO!+x?5BMh~CNEkd{O;rb1L@FQ%m4rY diff --git a/docs/developer-guide/img/google-signin-ios-create-or-choose-app.png b/docs/developer-guide/img/google-signin-ios-create-or-choose-app.png deleted file mode 100644 index 3bb2e05a835f9c38e84bfc11dbee1435c1d27887..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26064 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 Xw{^d>1>W*EWM4u=R=7$~Kj8lWs$?_$ diff --git a/docs/developer-guide/img/google-signin-ios-enable-google-signin-btn.png b/docs/developer-guide/img/google-signin-ios-enable-google-signin-btn.png deleted file mode 100644 index 5202a89753547e17bbd4100df30586f720428666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21074 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 diff --git a/docs/developer-guide/img/google-signin-ios-generate-configuration-files-button.png b/docs/developer-guide/img/google-signin-ios-generate-configuration-files-button.png deleted file mode 100644 index d3189196e61318bca0caf95e951216ca57f9e1e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7075 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 diff --git a/docs/developer-guide/img/google-signin-ios-getting-started-button.png b/docs/developer-guide/img/google-signin-ios-getting-started-button.png deleted file mode 100644 index 33b912057f67d8bf1c3634d42bfc7fe6325e0428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5942 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 diff --git a/docs/developer-guide/img/google-signin-ios-pick-a-platform.png b/docs/developer-guide/img/google-signin-ios-pick-a-platform.png deleted file mode 100644 index 33bbe4e76242232fc0976e2fa9d82f13d6591c0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26801 zcmeFZS5%W<_$~+tq9B4wQ93BnL6IUI1f_}8P!fuW)KH}NE}|g4DUsewK!Fel9hKfo zsG%c0bOMAjQGY7`HRtB6Su<-cju#rg?DFn+zimJJ`SMQvnF1LJEeReT9+{G&ye1yr z1!g=v{Par~aZf&8=#{|zgYTrN@CdKCn|>MhIoV2E&sk6PshFv~EuYCt`xj<>?zXRR zt?=+9+{JJoZOxobnB8q{?3~2hC0T#95W{```Iw)T`BxKXuq3OVsyefry`vek5T795 zJyt0aW@csy$Cu_}n(|Nn>yG=MB&(&f^D8laem6HaKDP&a_Kp_(_eDiT`R@tv3kdMy zTJSn~*g2cH^V&Jx{yoT_apcXMOdYLWIa}G=G5;Lb&v%di@7TDm55_(^79x}-=X`2VV2ii9F?4TFa#gQp}ftL=`z zjv{u~9!@?x3!)$(RAd(WV11=oxDrD_W zQO`1eJUZ8#Sq87k;(v%Frs|KEHIP?DaefjC|IJ(f)+2)#@azUN-m;)I-|IhO{1k|g z+56&o8PWy_FUg37Cy}!Jl@`|w|5EDt#Zvqqv3_gz|L@v@vG-P6#M6nsjG|K?fY-{6 zM*iJ<^$db|HXvH~JKBtDIIG+i>k2n*>CQ6b9oJr72N|yG2p3z8CiFmhe5VcVHvNH^ zTydsXC0!p=)u{6yS|}R&VLoDv*If0jPS-7lU6emkzA|ubZnJAzy2d+<-9I~SvmGmi zEx1kov--FYnKoi(Diors#Bc57otj+yk_(+MBAyJ4G955>c(BN8?ewV|Fx?ABz_F-x z%;;&b?f#C+7SZk%saL0?b|Y!{cEiPncHJ4-c4b72pbBBCvsr_GUYIsOq%4JZ`MZu_ zkpl=)0kc`r7)6nl>bx84^U1IuHuiB!sh%nJdoqPyWd^vrc)OGsJ%h4kHIaUDKWIcx zpR|aLN^i}Ay$qhuj%ZW|k&o{TNS|~q--`L?AMLtnMFdgxQk!|8&(4n_xkFubCelBm zl+f$BjEh%4-a{sP4yL1L7L7t9G)UVb&)f@F0f5JDslwL5STprAporc4J-7`(?nTbZ zc6PbtsB&PWJc}^vA6HvoQ{NBj9ctg&<+iWHrnpOaI_5G;!n$ruR5{T!D$qrDpJc0T zr1TMCT(3M^Oh_vH=cM!8>N>p4qZCFdlEcYv+xIoVAr~b@ipMD!PSIs*4w8kQ^7zU% zST#T-quuO>XblY1;dY1u3YJi8zyM1-*eNsA!Xk9F<)Qp1N4pg|{!cIsTKwg1%H@9F zrUTHuO4#a?H`Y3NzB-e8#lBktBI}2`1_KpHJM&Qial4iIyfwAjT?AOKdNSF2KF%_M z6Sa}Cz>O*^>2loR>50gas`aWe&84?opj~@2Rv8`+si?dY8`k}>4FGy|e*!IM72^U! z9Ip={hipTt4^u)=*J8vgEuYe8URLCSs43d zX0g*=g1Z0p9_I>~#LF^GvR#tUj(D|#n}wPu9{}=Sv$k$C)g4UaWkA;`a`jMJx%Q@7FaqkA))UNyRy5=;s{`$eQ_j4-{pS*iFG;=Rj;(TwZb z#4RHF0>RbAyr8>?v$`!|xWi6Dme#n97DeV34T>9~KxNZ)kgeYsSAvjY5Vi`eK1pvu zJt*n6aWcv=)>iVH^2n{GEqu#u`*}LkPOrXo{%z3JSHovhk{VH2K91|d@G+MG{)824 zY!&|gz@Wqvi=_s9YXA4Pqf_<9#=2l>W&XN8;k<{3Z{>L0C4|S|J}p;CWn6*G0u2nV z)2Ha?t2%D0Cj(>ePqr|qvKI7Ww!ca~vi(Nw{_2gYD@D-oz?zw$m5j8Uj0^~!9>^5i zEH69tzG}zT|5*Q-9m38GgVu-=uv+s)r?jNHL`q;BoUNeFyjs5W2m^w-O zlIlpVE)x1(-g+PdrA^*>?Zx_!4~mr_v83&3D0h1sXg$cVnm*gZOts?}3h zIH=yrsY%0DB%D$Bo1y#Ba^A6`s$UM~`+ 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 VVRM4+5j`&8rKe+f8LxFS=szoQEaw0K diff --git a/docs/developer-guide/img/google-signin-ios-setup.png b/docs/developer-guide/img/google-signin-ios-setup.png deleted file mode 100644 index 21390430cea5435e10a1a756fe084046ebcdb36c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56664 zcmeFZg=sWLlZkAQ)V|Cd*G>O&jj4~fS)#|&W3N@ zY^-ga_}m03{`CYO@cXHlh2rhM9&xr3r1&7O^j6f)(ey1RGY2z>LI~yU+qVLaCT4sp zViNyU2mU8WVd3m-&&R?7fk2oc?96tK<}9qdyu2(RHWoIvcfb?xoZM}l4c*?^I#K?+ zk^gE(%+$%)(bC@8($4nnQ@e&nb}r6>6ckS#{r8`LkJHr6@_%}=b^1pvKtPtKJ1nfs zAeR4b8>lMqRLZAh>1JyELCn&|)Yb{;Lx=~&EAX%9|37#Br^o+QQ|o_fa!1CX!7eWce`Catvnea1dvG;0j&ks^xe%9@o>NBTC zcKAYtLyv6Rky$TGuU)K^{d@hlh#!W91AR;!9-UG~PwKjY1LTzoQ@y8@i1SwR$|B@w zx#iY*#k0u{@`$KcIy{tmn|!;R#=boyw-nU2m^CFWCJg`Al_7yNIU^;ghV~ls`Ck_j zyh-+s_==^>6`D?m(;nbp{tnlN= zmB`wD75^Vt1au{~!?7Cn{B|u3$#zE#QI^##FDTyrb>UJTkL9H|4cavi3tk?ab-a(_ zQd_rYX{H4#C8EZJW@^6wj~a7Gt2iB(U;P_YLf9liF-|^NULp)cs>Hj{{nao~E0z|t z68Q&(>#Gwb1mGcGAEJDFtK9CZm9bXUH2e>bJ{@oJI-gzOC2af2fdxxA6X+y?oGf0(xA8!u7uENqyAo4G%0+13e z?SH6_6d2^ziK^{?r~m~UkjXHELE%4o6#xb~u#va;A1c750c7eFR!{klUfqE~#`GyR zi2uFh|4;E0O8=*LrT<&;|Nk;Ie!ZuajQ`6pIa7h$lbp!B76^5JS%1{+b6%6<(=wkh z9Z2-OA;Ickho zTFhp&HftQ%y`*IgTbFzZZIp|5kLLCB*E?E(l|3)MRI&NT%x2IaFCKraO6IAtu|`G^ z;fh3ztvhp5ib4oYtwWR}HO{~}&F;Qt#4SgY((QbRd*bukSBxGnGfarPeLKyP;$^ z_UxP}hzNYzdBvn={(HYT#j0QJNYrx}N~UVH2!f{_ivH3^>AsA$;I1~By=J&QvCE@C z$PpLOm zAxv8ON`7G*`*OeKy*AX03`=*WO)&m*Yl&dpp_4P$h%E$Ja#oMxPC`f-{@@RPJ|Dj|k+#-y

      3pdB`IT4oXg>312BF6nVClRV8wZg){hs$KaNP* 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

        ``X-m^n$l1zIpRcVZ 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 diff --git a/docs/developer-guide/security.asciidoc b/docs/developer-guide/security.asciidoc index 67015d77eb..20c8aedf20 100644 --- a/docs/developer-guide/security.asciidoc +++ b/docs/developer-guide/security.asciidoc @@ -180,7 +180,7 @@ Notice that this isn't right, you can't be 100% sure as there are no official wa === Strong Android certificates -When Android launched RSA1024 with SHA1 was considered strong enough for the foreseeable future, this hasn't changed completely but the recommendation today is to use stronger cyphers for signing & encrypting as those can be compromised. +When Android launched RSA1024 with SHA1 was considered strong enough for the foreseeable future, this hasn't changed completely but the recommendation today is to use stronger ciphers for signing & encrypting as those can be compromised. APKs are signed as part of the build process when you upload an app to the Google Play Store. This process seems redundant as you generate the signature/certificate ourselves (unlike Apple which generates it for you). But, this is a crucial step as it allows the device to verify upgrades and make sure a new update is from the same original author!