iOS आणि Android
नेटिव्ह ॲप्स लोकांना सिस्टम ब्राउझरमध्ये त्यांच्या एन्व्हायर्नमेंटच्या लॉबीतून साइन इन करतात, कधीही वेब व्ह्यूमध्ये नाही: लोक त्यांच्या पासकी, सेव्ह केलेले पासवर्ड आणि Usher सेशन वापरतात, आणि ॲपला कधीही पासवर्ड दिसत नाही. OpenID Connect चे बाकीचे काम SDK तुमच्यासाठी करतात, आणि टोकन डिव्हाइसवरच ठेवतात.
ॲप नोंदवा
Usher Console मध्ये, एन्व्हायर्नमेंट उघडा, मग ॲप्लिकेशन → नवीन ॲप्लिकेशन → मोबाइल किंवा डेस्कटॉप. तुमच्या मालकीच्या डोमेनपासून बनवलेला प्रायव्हेट-यूज रीडायरेक्ट द्या, जसे com.example.notes:/oauth/callback. त्याला क्लायंट ID मिळतो आणि कोणतेही सिक्रेट नाही: फोनवरील ॲप सिक्रेट सुरक्षित ठेवू शकत नाही, म्हणून ते त्याऐवजी PKCE वापरते. Console दोन्ही प्लॅटफॉर्मसाठी सेटअप दाखवते.
iOS आणि macOS
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
// 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 पाहा.