iOS اور Android
نیٹو ایپس لوگوں کو سسٹم براؤزر میں ان کے انوائرنمنٹ کی لابی کے ذریعے سائن ان کراتی ہیں، کبھی ویب ویو میں نہیں: لوگ اپنی پاس کیز، محفوظ کردہ پاس ورڈز اور Usher سیشن استعمال کرتے ہیں، اور ایپ کبھی کوئی پاس ورڈ نہیں دیکھتی۔ OpenID Connect کا باقی کام SDKs آپ کے لیے کرتے ہیں، اور ٹوکن آلے پر ہی رکھتے ہیں۔
ایپ رجسٹر کریں
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 کی ایک کلید سے انکرپٹ کیا جاتا ہے۔
SDKs کیا جانچتے ہیں
- ہر سائن ان پر PKCE، state اور nonce، اور جواب میں درج جاری کنندہ (RFC 9207)۔
- آپ کے انوائرنمنٹ کی کلیدوں سے ID ٹوکن کا دستخط، اور اس کا جاری کنندہ، آڈیئنس اور میعاد۔
- ریفریش ٹوکن روٹیٹ ہوتے ہیں: ہر ایک ایک بار استعمال ہوتا ہے۔ سائن آؤٹ کرنے پر Usher میں یہ منسوخ ہو جاتا ہے۔
- DPoP، اگر آپ اسے آن کریں: آلے پر موجود کلید سے بندھے ٹوکن، جو کہیں اور کاپی کیے جائیں تو بیکار ہیں۔
ایکسیس ٹوکن سے اپنی API کو کال کرنے کے لیے، API کا نام دیں اور اسے resources کے ذریعے مانگیں: دیکھیں آپ کی اپنی APIs۔