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)ટોકન Keychain માં, ફક્ત આ ડિવાઇસ પર જ રખાય છે.
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.