iOS ଓ Android
ନେଟିଭ ଆପ ସିଷ୍ଟମ ବ୍ରାଉଜରରେ, କେବେ ୱେବ ଭ୍ୟୁରେ ନୁହେଁ, ସେମାନଙ୍କ ଏନଭାଇରନମେଣ୍ଟର ଲବି ମାଧ୍ୟମରେ ଲୋକଙ୍କୁ ସାଇନ ଇନ କରାନ୍ତି: ଲୋକେ ନିଜ ପାସକୀ, ସେଭ କରାଯାଇଥିବା ପାସୱାର୍ଡ ଓ Usher ସେସନ ବ୍ୟବହାର କରନ୍ତି, ଏବଂ ଆପ କେବେ ପାସୱାର୍ଡ ଦେଖେ ନାହିଁ। SDKଗୁଡ଼ିକ ଆପଣଙ୍କ ପାଇଁ OpenID Connectର ବାକି କାମ କରନ୍ତି, ଏବଂ ଟୋକେନ ଡିଭାଇସରେ ରଖନ୍ତି।
ଆପ ପଞ୍ଜୀକରଣ କରନ୍ତୁ
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 କଲ କରିବାକୁ, resources ସହ APIର ନାମ ଦେଇ ତାହା ମାଗନ୍ତୁ: ଆପଣଙ୍କ ନିଜ API ଦେଖନ୍ତୁ।