iOS, Android
నేటివ్ యాప్లు వ్యక్తులను సిస్టమ్ బ్రౌజర్లోని వారి ఎన్విరాన్మెంట్ లాబీ ద్వారా సైన్ ఇన్ చేస్తాయి, వెబ్ వ్యూ ద్వారా ఎప్పుడూ కాదు: వ్యక్తులు తమ పాస్కీలను, సేవ్ చేసిన పాస్వర్డ్లను, Usher సెషన్ను ఉపయోగిస్తారు, యాప్ ఎప్పుడూ పాస్వర్డ్ను చూడదు. మిగతా OpenID Connect పనిని SDKలు మీ కోసం చేస్తాయి, టోకెన్లను పరికరంలోనే ఉంచుతాయి.
యాప్ను నమోదు చేయండి
Usher Consoleలో, ఎన్విరాన్మెంట్ను తెరిచి, ఆపై Applications → New application → Mobile or desktop ఎంచుకోండి. మీ సొంత డొమైన్ నుండి తయారుచేసిన ప్రైవేట్-యూజ్ రీడైరెక్ట్ను దానికి ఇవ్వండి, ఉదాహరణకు 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లు చూడండి.