Application security feature

MFA and authentication protection

Otukan protects sign-in, one-time codes and token renewal inside your Android and iOS app, and gives your identity provider evidence with every request.

  • Android
  • iOS
  • Flutter
  • React Native
Intercepted sign-in codes is met at the sign-in and renewal boundary before it reaches the appIntercepted sign-in codesSign-in and renewalYour app
  • Factors stay honest

    Passwords, one-time codes and authenticator approvals are entered and processed in an app that watches for hooking, overlays and automation around them.

  • Tokens stay protected

    Access and refresh tokens are kept in platform key storage and sent only over pinned connections, so lifting them from the app is far harder.

  • Your identity provider decides

    Otukan adds app and device evidence to sign-in and renewal requests. Your identity provider keeps its policies and gains a sharper signal.

Attacks on sign-in Otukan interrupts

Pick an attack to see how Otukan detects it, how the app responds and what your authentication service receives.

Code theft by overlay (Android)

  1. Detect

    Otukan detects another app drawing over the code entry screen or reading it through an accessibility service.

  2. Respond

    Code entry pauses and the user is offered a stronger factor, per your policy.

  3. Report

    The verification request arrives marked with the overlay or accessibility signal.

Hooked sign-in logic

  1. Detect

    Otukan detects instrumentation attached to the authentication code path in the app's process.

  2. Respond

    Per your policy, the attempt is stepped up or stopped before credentials leave the app.

  3. Report

    Your authentication service sees a hooking signal on the attempt.

Intercepted sign-in traffic

  1. Detect

    Pinned connections reject certificates that do not match your servers, including those from interception proxies.

  2. Respond

    The request is not sent over the untrusted connection.

  3. Report

    A pinning failure is recorded for your security team.

Scripted code entry

  1. Detect

    Otukan marks code entry driven by automation tools or emulators instead of a person on a physical phone.

  2. Respond

    Verification is slowed, stepped up or refused, per your policy.

  3. Report

    The automation signal reaches your authentication service with the request.

Refresh token replay

  1. Detect

    Renewal requests carry installation evidence, so a refresh token presented from another installation or a script does not match the one it was issued to.

  2. Respond

    Your server refuses or steps up the renewal, and the genuine installation keeps its session.

  3. Report

    The mismatched renewal is reported against the account for your security team.

Recovery flow abuse

  1. Detect

    Account recovery screens run with the same hooking, overlay and remote-control checks as sign-in.

  2. Respond

    Recovery from a compromised app or device is held for a trusted channel.

  3. Report

    Recovery attempts carry app and device evidence to your identity team.

Controls that protect authentication

Each control closes a different gap between the factor the user presents and the decision your identity provider makes.

  • Man-in-the-middle prevention

    Keeps sign-in, token and renewal traffic on connections your app can verify, so proxies cannot read or rewrite them.

  • Overlay detection

    Spots Android apps that draw over your code entry and approval screens to capture or redirect what the user sees.

  • Accessibility abuse detection

    Flags Android accessibility services reading one-time codes or tapping approve on the user's behalf.

  • Hooking detection

    Detects code attached to your authentication functions that could change a failed check into a pass.

  • Secrets and key protection

    Protects client identifiers, token wrapping keys and other sign-in material in the app and in storage.

  • Credential stuffing protection

    Separates your genuine app from scripts replaying leaked passwords against your sign-in endpoint.

You choose the response

Set a response for each user flow. Start by observing, then tighten flow by flow as the signals prove themselves.

Observe

Signal sent to your backend

Rolling out a new policy and measuring real-world signals.

Warn

This device looks modified. Continue with care.

Conditions some genuine users create, such as developer settings.

Restrict

Payments are unavailable on this device.

Payments, stored data and account changes.

Terminate

Session closed for your security.

Clear tampering on a high-risk flow.

How it works

  1. Map the sign-in journey

    List every screen and request from first login through step-up, renewal, sign-out and recovery.

  2. Protect the app

    Otukan fits your existing build and release pipeline, and your signing keys stay with your team.

  3. Guard each factor

    Checks run on code entry, approval and recovery screens while the user is on them.

  4. Attach evidence

    Sign-in and renewal requests carry app and device signals for your identity provider.

  5. Tune step-up rules

    Compare signals with real sign-ins, then decide where a signal triggers another factor.

Free for app publishers

Check your app's exposure

A passive review of your published app by an Otukan engineer. No files, no access to your systems. Findings go by email to the verified publisher.

You finish the request on the next page.

A mobile security team should evaluate MFA and authentication protection by following one sign-in from the first screen to the token your app holds afterwards, and asking where along that path a factor or token could be read, faked or replayed. Otukan protects the app side of that path. It guards password, one-time code and approval screens against hooking, overlays and automation, keeps tokens in platform key storage behind pinned connections, and attaches app and device evidence to sign-in and renewal requests. Your identity provider still verifies the person and applies its own policies. Signals are built and documented separately for Android and iOS.

The identity flow, piece by piece

Authentication in a mobile app is three separate problems. Evaluating them together hides where the weaknesses sit.

LayerWhat it coversWhere it goes wrongWhat Otukan adds
FederationThe sign-in exchange with your identity providerCredentials captured on a spoofed or overlaid screenOverlay, accessibility and hooking checks on sign-in screens
Token handlingAccess and refresh tokens after sign-inTokens read from storage or memory and reusedKey-wrapped storage and tamper checks on read
TransportEvery request carrying credentials or tokensInterception proxies on hostile networksPinned connections and a reported failure

Federation

Sign-in either runs in the system browser or in native screens your team builds. The system browser keeps the password away from app code; native screens give a smoother experience but put the credential inside your process. Otukan protects either choice and reports which checks ran. When the browser route is used, the code exchange that follows returns to your app, and that is where Otukan’s hooking and integrity checks apply before the token is accepted.

Tokens and transport

After sign-in, the token is the account. Otukan wraps tokens with a key held in the Android Keystore on Android and in the Keychain on iOS, checks them for tampering when the app reads them, and sends them only over connections that match the certificates you pinned. For binding the token to the device that received it, see device binding.

Who owns which part

Authentication fails in the gaps between teams. Write the ownership down before you evaluate any product.

Identity provider

Owns accounts, factors, session lifetimes and step-up rules. It verifies the person and issues tokens. It sees the request but not the app that sent it.

The app and Otukan

Owns the screens where factors are entered and the storage where tokens live. Otukan adds the integrity of the app, the state of the device and the context of the session, and passes all three to your identity provider with the request.

Device management

Where phones are managed, your management system reports whether the device meets your rules. That is a statement about the device, not about your app’s integrity. Otukan’s evidence stands on its own on personal phones and adds detail on managed ones.

Test the whole lifecycle

Login and step-up

In an authorised lab, overlay the Android code screen, hook the verification result and drive code entry with an automation tool. Confirm each attempt reaches your identity provider marked. Then sign in normally on a clean phone and confirm no step-up fires.

Adding a new factor

Registering a new authenticator or phone number is an attacker’s favourite first move after a successful sign-in. Run it from a tampered build and from an emulator, and confirm the change is stepped up before the new factor becomes active.

Renewal

Copy a refresh token to another installation and try to renew with it. Confirm the renewal is refused or stepped up, and that the attempt is visible to your security team.

Revocation and sign-out

Sign out and confirm Otukan has removed the stored tokens from key storage. Revoke a session on the server and confirm the app stops using it at the next request.

Recovery

Recovery is the quietest door into an account. Run the recovery flow from a hooked build and from a phone under remote control, and confirm both are held for a trusted channel. Record device, OS version, expected result and reviewer for every test.

For the full picture of account security, return to identity and account protection. For superapps, where one login opens several services, see superapps application security.

Common questions

  • Does Otukan replace our identity provider or MFA product?

    No. Your identity provider owns accounts, factors and policies, and your MFA product owns the second factor. Otukan protects the app in which those factors are entered and adds evidence about the app and device to each request. Your provider can use that evidence in the rules it already has, for example to ask for a stronger factor.

  • Should sign-in run in the system browser or in native screens?

    Current guidance for native apps favours the system browser, through Custom Tabs on Android and ASWebAuthenticationSession on iOS, with a proof key on the code exchange. Many apps still use native screens for speed. Otukan protects both: the browser route keeps credentials away from app code, and native screens get overlay, hooking and automation checks.

  • Can one-time codes still be stolen from a protected app?

    Codes can be phished outside the app, and nothing on the device can prevent a user reading a code aloud to a caller. What Otukan changes is the app side: on Android, overlays and accessibility services reading the entry screen are detected, and on both platforms, scripted entry and hooked verification are marked, so your service can refuse the code.

  • How does this interact with device management?

    Where devices are managed, your device management system may already report compliance to your identity provider. Otukan's signals come from inside the app itself and describe the app's integrity and the session's context. The two sources work side by side; neither needs the other, and unmanaged personal phones still get the app-level evidence.

On the mobile engineering team?

How protection fits your build, signing and release, platform by platform.

Protect sign-in from screen to token

Tell us the platform, the app framework and how sign-in works today, including your factors, token lifetimes and recovery route. We do not ask for binaries, signing keys, identity provider secrets or user credentials.

Or request a technical demo