Ir 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: las personas usan sus llaves de acceso, sus contraseñas guardadas y su 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 luego Aplicaciones → Nueva aplicación → Móvil o escritorio. Asígnale una redirección de uso privado creada a partir de un dominio que te pertenezca, como com.example.notes:/oauth/callback. La app recibe un ID de cliente y ningún secreto: una app en un teléfono no puede guardarlo, así que usa PKCE en su lugar. Console muestra la configuración para ambas 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 se indica en la respuesta (RFC 9207).
  • La firma del token de ID, con las claves de tu entorno, y su emisor, su audiencia y su vencimiento.
  • Los tokens de actualización rotan: cada uno se usa una sola vez. Al cerrar sesión, se revoca en Usher.
  • DPoP, si lo activas: tokens vinculados a una clave del dispositivo, que no sirven si se copian a otro lugar.

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.