# azuread/microsoft-authentication-library-common-for-android architecture

> Architecture diagram of the GitHub repository azuread/microsoft-authentication-library-common-for-android, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/azuread/microsoft-authentication-library-common-for-android
- Repository: https://github.com/azuread/microsoft-authentication-library-common-for-android

## Overview

#### Purpose and module topology
This is the internal shared authentication foundation for ADAL and MSAL Android, not a standalone app or public API. It is a Gradle multi-module repository rooted at `settings.gradle`; primary Android/runtime implementation is `common`, while `common4j` holds platform-neutral Java/Kotlin primitives. Supporting test/lab clients are separate modules.

#### Primary entry surfaces
Consumers enter through controller/command abstractions and Android authorization/broker components rather than an executable main:
- Command orchestration: `common4j/src/main/com/microsoft/identity/common/java/controllers/CommandDispatcher.java`, `common4j/src/main/com/microsoft/identity/common/java/commands/TokenCommand.java`.
- Android routing: `common/src/main/java/com/microsoft/identity/common/internal/controllers/LocalMSALController.java`, `common/src/main/java/com/microsoft/identity/common/internal/controllers/BrokerMsalController.java`.
- Android UI/activity boundary: `common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AuthorizationActivity.java`.

#### OAuth/OIDC provider pipeline
Provider-neutral OAuth2 request, response, PKCE, token-cache, and discovery types live in `common4j`; Microsoft-specific AAD, Microsoft STS, B2C, and ADFS strategies specialize them. The usual flow is command parameters → controller/strategy → authorization or token HTTP exchange → parsed token result/cache.
- `common4j/src/main/com/microsoft/identity/common/java/providers/oauth2/OAuth2Strategy.java`
- `common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/azureactivedirectory/AzureActiveDirectoryOAuth2Strategy.java`
- `common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/microsoftsts/MicrosoftStsOAuth2Strategy.java`

#### Android interactive authorization
Android-specific code selects browser/custom-tab/WebView flows, launches activities/fragments, validates redirects, and handles web challenges including PKeyAuth, certificate authentication, passkeys/FIDO, and browser switching. This is the boundary between protocol logic and Android UI/intent lifecycle.
- `common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AndroidAuthorizationStrategy.java`
- `common/src/main/java/com/microsoft/identity/common/internal/ui/browser/BrowserAuthorizationStrategy.java`
- `common/src/main/java/com/microsoft/identity/common/internal/ui/webview/challengehandlers/ChallengeFactory.java`

#### Broker and device-registration boundary
Broker operation adapts SDK requests/results and dispatches cross-process calls through Android AccountManager, bound services, and content providers, with validation and fallback strategies. AIDL declares service contracts. Device registration is a related IPC/protocol subsystem.
- `common/src/main/java/com/microsoft/identity/common/internal/broker/BrokerRequest.java`
- `common/src/main/java/com/microsoft/identity/common/internal/broker/ipc/IpcStrategyWithBackup.kt`
- `common/src/main/aidl/com/microsoft/identity/client/IMicrosoftAuthService.aidl`
- `common/src/main/java/com/microsoft/identity/deviceregistration/AndroidDeviceRegistrationClientController.java`

#### Credentials, cache, and cryptographic storage
Account/credential DTOs and OAuth token caches are cross-platform; Android supplies SharedPreferences and Android Keystore-backed protection. Device proof-of-possession keys, JWT/JWE signing/encryption, and cache migration protect or evolve persisted authentication state.
- `common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java`
- `common/src/main/java/com/microsoft/identity/common/crypto/AndroidAuthSdkStorageEncryptionManager.java`
- `common/src/main/java/com/microsoft/identity/common/internal/platform/AndroidDevicePopManager.java`

#### Native authentication and observability
Native-auth models commands for sign-in, sign-up, MFA, JIT, and password reset as stateful API exchanges, alongside conventional browser-based OAuth. Logging, telemetry events, and OpenTelemetry abstractions span commands, broker calls, UI, cache, and HTTP.
- `common/src/main/java/com/microsoft/identity/common/nativeauth/internal/controllers/NativeAuthMsalController.kt`
- `common4j/src/main/com/microsoft/identity/common/java/nativeauth/providers/NativeAuthOAuth2Strategy.kt`
- `common4j/src/main/com/microsoft/identity/common/java/telemetry/Telemetry.java`
- `common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OpenTelemetryHolder.java`

#### Runtime and external dependencies
The production target is Android, implemented in Java and Kotlin with Android manifests/resources and Android IPC/Keystore/AccountManager/WebView APIs. Network traffic uses URL-connection HTTP abstractions; external identity services include Azure Active Directory/Microsoft STS, Azure AD B2C/CIAM, ADFS, and optionally Google federated sign-in. Lab and Key Vault generated API clients support integration infrastructure rather than core runtime behavior: `LabApiUtilities/src/main/com/microsoft/identity/labapi/utilities/client/LabClient.java`, `keyvault/src/main/java/com/microsoft/identity/internal/test/keyvault/api/CertificatesApi.java`.

Main entry points: [`common4j/src/main/com/microsoft/identity/common/java/providers/oauth2/OAuth2Strategy.java`](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/oauth2/OAuth2Strategy.java) (OAuth2 strategy), [`common4j/src/main/com/microsoft/identity/common/java/commands/TokenCommand.java`](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/commands/TokenCommand.java) (Token command), [`common/src/main/java/com/microsoft/identity/common/internal/controllers/LocalMSALController.java`](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/controllers/LocalMSALController.java) (Local MSAL controller), [`common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AndroidAuthorizationStrategy.java`](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AndroidAuthorizationStrategy.java) (Android authorization strategy)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["common4j protocol core"]
  node_dispatcher["Command dispatcher<br/>orchestration"]
  node_token_command["Token command<br/>[TokenCommand.java]"]
  node_oauth_strategy["OAuth2 strategy<br/>protocol strategy"]
  node_aad_strategy["AAD strategy<br/>provider strategy"]
  node_sts_strategy["Microsoft STS strategy<br/>provider strategy"]
  node_token_cache[("MSAL token cache")]
  node_native_strategy["Native auth strategy<br/>native-auth protocol"]
  node_telemetry["Telemetry<br/>observability<br/>[Telemetry.java]"]
  node_otel["OpenTelemetry holder<br/>tracing"]
end

subgraph group_android["common Android runtime"]
  node_native_controller["Native auth controller<br/>native-auth controller"]
  node_local_controller["Local MSAL controller<br/>Android controller"]
  node_broker_controller["Broker MSAL controller<br/>Android controller"]
  node_authorization["Authorization activity<br/>Android activity"]
  node_android_auth["Android authorization strategy<br/>Android auth strategy"]
  node_browser_auth["Browser authorization<br/>browser UI strategy"]
  node_challenge_factory["Web challenge factory<br/>challenge handling"]
  node_broker_request["Broker request<br/>broker adapter<br/>[BrokerRequest.java]"]
  node_ipc_strategy["Broker IPC strategy<br/>cross-process IPC"]
  node_aidl_contract["Auth service AIDL<br/>AIDL contract"]
  node_device_registration["Device registration<br/>device IPC client"]
  node_secure_storage[("Android secure storage<br/>Keystore storage")]
  node_device_pop["Device PoP manager<br/>proof-of-possession"]
end

subgraph group_external["Identity and platform services"]
  node_identity_services{{"Identity providers<br/>external identity services"}}
  node_android_platform{{"Android platform APIs<br/>platform services"}}
end

node_dispatcher -->|"dispatches"| node_token_command
node_token_command -->|"routes locally"| node_local_controller
node_token_command -->|"routes via broker"| node_broker_controller
node_local_controller -->|"executes protocol flow"| node_oauth_strategy
node_oauth_strategy -->|"specialized by"| node_aad_strategy
node_oauth_strategy -->|"specialized by"| node_sts_strategy
node_oauth_strategy -->|"reads and writes"| node_token_cache
node_aad_strategy -->|"HTTP authorization/token exchange"| node_identity_services
node_sts_strategy -->|"HTTP authorization/token exchange"| node_identity_services
node_local_controller -->|"starts interactive flow"| node_android_auth
node_android_auth -->|"launches"| node_authorization
node_android_auth -->|"uses"| node_browser_auth
node_browser_auth -->|"handles web challenges"| node_challenge_factory
node_authorization -->|"uses UI and intent APIs"| node_android_platform
node_broker_controller -->|"adapts request"| node_broker_request
node_broker_request -->|"dispatches through"| node_ipc_strategy
node_ipc_strategy -->|"binds service contract"| node_aidl_contract
node_ipc_strategy -->|"uses IPC APIs"| node_android_platform
node_device_registration -->|"uses device IPC"| node_android_platform
node_token_cache -->|"protected by"| node_secure_storage
node_device_pop -->|"stores keys in"| node_secure_storage
node_native_controller -->|"executes exchanges"| node_native_strategy
node_native_strategy -->|"calls native-auth endpoints"| node_identity_services
node_dispatcher -.->|"emits events"| node_telemetry
node_telemetry -->|"bridges tracing"| node_otel

click node_dispatcher "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/controllers/CommandDispatcher.java"
click node_token_command "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/commands/TokenCommand.java"
click node_oauth_strategy "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/oauth2/OAuth2Strategy.java"
click node_aad_strategy "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/azureactivedirectory/AzureActiveDirectoryOAuth2Strategy.java"
click node_sts_strategy "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/microsoftsts/MicrosoftStsOAuth2Strategy.java"
click node_token_cache "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java"
click node_native_controller "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/nativeauth/internal/controllers/NativeAuthMsalController.kt"
click node_native_strategy "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/nativeauth/providers/NativeAuthOAuth2Strategy.kt"
click node_telemetry "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/telemetry/Telemetry.java"
click node_otel "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OpenTelemetryHolder.java"
click node_local_controller "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/controllers/LocalMSALController.java"
click node_broker_controller "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/controllers/BrokerMsalController.java"
click node_authorization "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AuthorizationActivity.java"
click node_android_auth "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AndroidAuthorizationStrategy.java"
click node_browser_auth "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/ui/browser/BrowserAuthorizationStrategy.java"
click node_challenge_factory "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/ui/webview/challengehandlers/ChallengeFactory.java"
click node_broker_request "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/broker/BrokerRequest.java"
click node_ipc_strategy "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/broker/ipc/IpcStrategyWithBackup.kt"
click node_aidl_contract "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/aidl/com/microsoft/identity/client/IMicrosoftAuthService.aidl"
click node_device_registration "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/deviceregistration/AndroidDeviceRegistrationClientController.java"
click node_secure_storage "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/crypto/AndroidAuthSdkStorageEncryptionManager.java"
click node_device_pop "https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/platform/AndroidDevicePopManager.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dispatcher,node_token_command,node_oauth_strategy,node_aad_strategy,node_sts_strategy,node_token_cache,node_native_strategy,node_telemetry,node_otel toneBlue
class node_native_controller,node_local_controller,node_broker_controller,node_authorization,node_android_auth,node_browser_auth,node_challenge_factory,node_broker_request,node_ipc_strategy,node_aidl_contract,node_device_registration,node_secure_storage,node_device_pop toneAmber
class node_identity_services,node_android_platform toneMint
```

## Components

### common4j protocol core

Platform-neutral command, OAuth, cache, native-auth, and telemetry primitives.

- [Command dispatcher](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/controllers/CommandDispatcher.java): orchestration · `common4j/src/main/com/microsoft/identity/common/java/controllers/CommandDispatcher.java`
- [Token command](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/commands/TokenCommand.java): command · `common4j/src/main/com/microsoft/identity/common/java/commands/TokenCommand.java`
- [OAuth2 strategy](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/oauth2/OAuth2Strategy.java): protocol strategy · Provider-neutral authorization, token, PKCE, discovery, and cache flow. · `common4j/src/main/com/microsoft/identity/common/java/providers/oauth2/OAuth2Strategy.java`
- [AAD strategy](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/azureactivedirectory/AzureActiveDirectoryOAuth2Strategy.java): provider strategy · `common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/azureactivedirectory/AzureActiveDirectoryOAuth2Strategy.java`
- [Microsoft STS strategy](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/microsoftsts/MicrosoftStsOAuth2Strategy.java): provider strategy · `common4j/src/main/com/microsoft/identity/common/java/providers/microsoft/microsoftsts/MicrosoftStsOAuth2Strategy.java`
- [MSAL token cache](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java): token cache · Cross-platform account and credential persistence. · `common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java`
- [Native auth strategy](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/nativeauth/providers/NativeAuthOAuth2Strategy.kt): native-auth protocol · `common4j/src/main/com/microsoft/identity/common/java/nativeauth/providers/NativeAuthOAuth2Strategy.kt`
- [Telemetry](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/telemetry/Telemetry.java): observability · `common4j/src/main/com/microsoft/identity/common/java/telemetry/Telemetry.java`
- [OpenTelemetry holder](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OpenTelemetryHolder.java): tracing · `common4j/src/main/com/microsoft/identity/common/java/opentelemetry/OpenTelemetryHolder.java`

### common Android runtime

Android authorization, broker IPC, device, and secure-storage integration.

- [Native auth controller](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/nativeauth/internal/controllers/NativeAuthMsalController.kt): native-auth controller · Runs stateful sign-in, sign-up, MFA, JIT, and reset exchanges. · `common/src/main/java/com/microsoft/identity/common/nativeauth/internal/controllers/NativeAuthMsalController.kt`
- [Local MSAL controller](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/controllers/LocalMSALController.java): Android controller · Routes requests through local Android authorization and token flows. · `common/src/main/java/com/microsoft/identity/common/internal/controllers/LocalMSALController.java`
- [Broker MSAL controller](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/controllers/BrokerMsalController.java): Android controller · Routes requests to the broker with fallback behavior. · `common/src/main/java/com/microsoft/identity/common/internal/controllers/BrokerMsalController.java`
- [Authorization activity](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AuthorizationActivity.java): Android activity · Android UI and intent lifecycle boundary. · `common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AuthorizationActivity.java`
- [Android authorization strategy](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AndroidAuthorizationStrategy.java): Android auth strategy · `common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/AndroidAuthorizationStrategy.java`
- [Browser authorization](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/ui/browser/BrowserAuthorizationStrategy.java): browser UI strategy · Selects browser, custom-tab, or WebView authorization flow. · `common/src/main/java/com/microsoft/identity/common/internal/ui/browser/BrowserAuthorizationStrategy.java`
- [Web challenge factory](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/ui/webview/challengehandlers/ChallengeFactory.java): challenge handling · Builds PKeyAuth, certificate, passkey/FIDO, and browser-switch handlers. · `common/src/main/java/com/microsoft/identity/common/internal/ui/webview/challengehandlers/ChallengeFactory.java`
- [Broker request](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/broker/BrokerRequest.java): broker adapter · Adapts SDK requests and results for broker operations. · `common/src/main/java/com/microsoft/identity/common/internal/broker/BrokerRequest.java`
- [Broker IPC strategy](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/broker/ipc/IpcStrategyWithBackup.kt): cross-process IPC · Dispatches broker calls with a backup strategy. · `common/src/main/java/com/microsoft/identity/common/internal/broker/ipc/IpcStrategyWithBackup.kt`
- [Auth service AIDL](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/aidl/com/microsoft/identity/client/IMicrosoftAuthService.aidl): AIDL contract · `common/src/main/aidl/com/microsoft/identity/client/IMicrosoftAuthService.aidl`
- [Device registration](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/deviceregistration/AndroidDeviceRegistrationClientController.java): device IPC client · `common/src/main/java/com/microsoft/identity/deviceregistration/AndroidDeviceRegistrationClientController.java`
- [Android secure storage](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/crypto/AndroidAuthSdkStorageEncryptionManager.java): Keystore storage · Protects persisted authentication state with Android Keystore-backed encryption. · `common/src/main/java/com/microsoft/identity/common/crypto/AndroidAuthSdkStorageEncryptionManager.java`
- [Device PoP manager](https://github.com/azuread/microsoft-authentication-library-common-for-android/blob/dev/common/src/main/java/com/microsoft/identity/common/internal/platform/AndroidDevicePopManager.java): proof-of-possession · Manages device-bound proof-of-possession keys. · `common/src/main/java/com/microsoft/identity/common/internal/platform/AndroidDevicePopManager.java`

### Identity and platform services

- **Identity providers**: external identity services · Azure AD, Microsoft STS, B2C/CIAM, ADFS, and optional Google federation.
- **Android platform APIs**: platform services · AccountManager, bound services, content providers, WebView, intents, and Keystore.

## Connections

- Command dispatcher → Token command: dispatches
- Token command → Local MSAL controller: routes locally
- Token command → Broker MSAL controller: routes via broker
- Local MSAL controller → OAuth2 strategy: executes protocol flow
- OAuth2 strategy → AAD strategy: specialized by
- OAuth2 strategy → Microsoft STS strategy: specialized by
- OAuth2 strategy → MSAL token cache: reads and writes
- AAD strategy → Identity providers: HTTP authorization/token exchange
- Microsoft STS strategy → Identity providers: HTTP authorization/token exchange
- Local MSAL controller → Android authorization strategy: starts interactive flow
- Android authorization strategy → Authorization activity: launches
- Android authorization strategy → Browser authorization: uses
- Browser authorization → Web challenge factory: handles web challenges
- Authorization activity → Android platform APIs: uses UI and intent APIs
- Broker MSAL controller → Broker request: adapts request
- Broker request → Broker IPC strategy: dispatches through
- Broker IPC strategy → Auth service AIDL: binds service contract
- Broker IPC strategy → Android platform APIs: uses IPC APIs
- Device registration → Android platform APIs: uses device IPC
- MSAL token cache → Android secure storage: protected by
- Device PoP manager → Android secure storage: stores keys in
- Native auth controller → Native auth strategy: executes exchanges
- Native auth strategy → Identity providers: calls native-auth endpoints
- Command dispatcher → Telemetry: emits events
- Telemetry → OpenTelemetry holder: bridges tracing
