Otorisasi pelanggan nganggo PKCE
Implementasi alur kode-otorisasi ShareAI nganggo S256 PKCE, verifikasi state lan tukar kode ing backend aplikasi sampeyan.
Ing kaca iki
Alur iki nyambungake siji akun pelanggan menyang aplikasi sampeyan. Pelanggan mlebu, milih akun pribadi utawa organisasi lan nyetujui idin sing dijaluk. Backend sampeyan banjur tukar kode sing cendhak kanggo token.
Sadurunge sampeyan miwiti#
Rampung registrasi aplikasi. Sampeyan butuh callback sing didaftarkan kanthi tepat, kredensial klien sing disimpen server lan sesi sisi server kanggo browser sing ngrampungake otorisasi.
1. Gawe panjalukan otorisasi#
https://auth.shareai.now/oauth/authorizeTakon pelanggan kanggo ngotorisasi aplikasi.
- URL Dasar
https://auth.shareai.now- Otentikasi
- Pengalihan browser; aplikasi sing didaftarkan
Gawe verifier anyar, state lan nonce kanggo saben upaya. Simpen ing sesi sisi server pangguna sing miwiti. Kirim tantangan SHA-256, ora tau verifier, ing pengalihan browser. Panjaluk mung lingkup sing dibutuhake aplikasi sampeyan.
Python
import base64
import hashlib
import secrets
import urllib.parse
verifier = secrets.token_urlsafe(48)
challenge = base64.urlsafe_b64encode(hashlib.sha256(verifier.encode()).digest()).rstrip(b"=").decode()
state = secrets.token_urlsafe(32)
nonce = secrets.token_urlsafe(32)
# Store verifier, state and nonce in the user's server-side session.
params = {
"response_type": "code",
"client_id": "YOUR_CLIENT_ID",
"redirect_uri": "https://app.example.com/auth/shareai/callback",
"scope": "openid profile surcharge",
"state": state,
"nonce": nonce,
"code_challenge": challenge,
"code_challenge_method": "S256",
}
print("https://auth.shareai.now/oauth/authorize?" + urllib.parse.urlencode(params))
TypeScript
import { randomBytes, createHash } from "node:crypto";
const verifier = randomBytes(48).toString("base64url");
const state = randomBytes(32).toString("base64url");
const nonce = randomBytes(32).toString("base64url");
const challenge = createHash("sha256").update(verifier).digest("base64url");
// Save verifier, state and nonce in the initiating server-side session.
const params = new URLSearchParams({ response_type: "code", client_id: "YOUR_CLIENT_ID",
redirect_uri: "https://app.example.com/auth/shareai/callback",
scope: "openid profile surcharge", state, nonce,
code_challenge: challenge, code_challenge_method: "S256" });
const authorizationUrl = `https://auth.shareai.now/oauth/authorize?${params}`;
// Redirect the browser to authorizationUrl.
2. Validasi callback#
Yen otorisasi ditolak, tangani kesalahan OAuth minangka pembatalan normal. Yen ora, bandingake state karo nilai sing disimpen sadurunge nggunakake kode. Tolak state sing ilang utawa ora cocog. Gunakake state sing disimpen mung sapisan; aja nampa URL callback sing dikirim dening sesi browser liyane.
3. Tukar kode#
https://auth.shareai.now/oauth/tokenTukar kode siji-pangguna lan verifier PKCE sing cocog.
- URL Dasar
https://auth.shareai.now- Otentikasi
- Otentikasi klien rahasia
cURL
curl --fail-with-body "https://auth.shareai.now/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=authorization_code" \
--data-urlencode "client_id=$SHAREAI_CLIENT_ID" \
--data-urlencode "client_secret=$SHAREAI_CLIENT_SECRET" \
--data-urlencode "code=$AUTHORIZATION_CODE" \
--data-urlencode "redirect_uri=https://app.example.com/auth/shareai/callback" \
--data-urlencode "code_verifier=$PKCE_VERIFIER"
Gunakake metode otentikasi klien sing dikonfigurasi kanggo klien. Conto nggunakake otentikasi klien berbasis formulir. Aja ngirim kode sing padha kaping pindho; miwiti otorisasi maneh sawise kode digunakake utawa kadaluwarsa.
4. Simpen asil lan nggawe sesi aplikasi sampeyan#
Simpen token akses lan refresh ing backend sampeyan. Gunakake expires_in sing bali tinimbang nganggep token permanen. Yen sampeyan nggunakake token ID, validasi tandatangane karo JWKS penerbit, penerbit sing diarepake, pamirsa klien, kadaluwarsa lan nonce asli sampeyan sadurunge percaya klaim.
Terusake siklus urip#
Refresh lan rotasi · Lingkup lan identitas akun · Panjalukan obrolan OAuth
Paling anyar dianyari Septèmber 15, 2026