Перейти до вмісту
Документація · iOS і Android

iOS і Android

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

Зареєструйте програму

В 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.