Към съдържанието
Документация · iOS и Android

iOS и Android

Нативните приложения осигуряват вход през Lobby на своята среда в системния браузър, никога в уеб изглед: хората използват своите ключове за достъп, запазени пароли и сесия в Usher, а приложението никога не вижда парола. SDK правят останалото от OpenID Connect вместо вас и пазят токените на устройството.

Регистрирайте приложението

В Usher Console отворете средата, след това Приложения → Ново приложение → Мобилно или настолно. Задайте му пренасочване с частна схема, образувана от домейн, който притежавате, например com.example.notes:/oauth/callback. Приложението получава ID на клиента без секрет: приложение на телефон не може да пази секрет, затова вместо това използва PKCE. Console показва настройката и за двете платформи.

iOS и 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)

Токените се пазят в Ключодържателя, само на това устройство.

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))

Входът се отваря в Custom Tab. Сесията е шифрована с ключ в Android Keystore.

Какво проверяват SDK

  • PKCE, state и nonce при всеки вход, както и издателя, посочен в отговора (RFC 9207).
  • Подписа на ID токена спрямо ключовете на вашата среда, както и неговия издател, аудитория и срок на валидност.
  • Токените за опресняване се сменят: всеки се използва веднъж. При изход токенът се отменя в Usher.
  • DPoP, ако го включите: токени, обвързани с ключ на устройството, безполезни, ако бъдат копирани другаде.

За да извиквате собствения си API с токена за достъп, назовете API и го поискайте с resources: вижте Вашите собствени API.