Saltar al contenido
Documentación · iOS y Android

iOS y Android

Las apps nativas inician la sesión de las personas a través del Lobby de su entorno en el navegador del sistema, nunca en una vista web: así se usan las llaves de acceso, las contraseñas guardadas y la sesión de Usher, y la app nunca ve una contraseña. Los SDK se encargan del resto de OpenID Connect y guardan los tokens en el dispositivo.

Registra la app

En Usher Console, abre el entorno y ve a Aplicaciones → Nueva aplicación → Móvil o escritorio. Indica una redirección de uso privado basada en un dominio que sea tuyo, como com.example.notes:/oauth/callback. Recibe un ID de cliente y ningún secreto: una app en un teléfono no puede guardarlo, así que usa PKCE. Console muestra la configuración para las dos plataformas.

iOS y macOS

swift
import UsherKit

let usher = UsherClient(configuration: .init(
    issuer: URL(string: "https://login.example.com")!,
    clientID: "…",
    redirectURI: URL(string: "com.example.notes:/oauth/callback")!))

let session = try await usher.signIn()
var request = URLRequest(url: URL(string: "https://api.example.com/notes")!)
try await usher.authorize(&request)

Los tokens se guardan en el llavero, solo en este dispositivo.

Android

kotlin
// build.gradle.kts: manifestPlaceholders["usherRedirectScheme"] = "com.example.notes"
val usher = Usher.client(context, UsherConfiguration(
    issuer = "https://login.example.com",
    clientId = "…",
    redirectUri = "com.example.notes:/oauth/callback"))

val session = usher.signIn(Usher.customTabs(activity))

El inicio de sesión se abre en una pestaña personalizada (Custom Tab). La sesión se cifra con una clave del Android Keystore.

Qué comprueban los SDK

  • PKCE, state y nonce en cada inicio de sesión, y el emisor que figura en la respuesta (RFC 9207).
  • La firma del token de ID con las claves de tu entorno, y su emisor, su audiencia y su caducidad.
  • Los tokens de actualización rotan: cada uno se usa una sola vez. Al cerrar la sesión, se revoca en Usher.
  • DPoP, si lo activas: tokens vinculados a una clave del dispositivo, inútiles si se copian a otro sitio.

Para llamar a tu propia API con el token de acceso, ponle nombre a la API y pídela con resources: consulta Tus propias API.