Okta Auth JavaScript SDK dibangun di atas Authentication API dan OpenID Connect & OAuth 2.0 API kami untuk memungkinkan Anda menciptakan pengalaman masuk yang sepenuhnya bermerek menggunakan JavaScript.
Anda dapat mempelajari lebih lanjut di halaman Okta + JavaScript di dokumentasi kami.
Pustaka ini menggunakan versi semantik dan mengikuti kebijakan versi pustaka Okta.
️ ️ ️ ️ ️ ️ ️ ️ ️
️ ️ ️ ️ ️ ️ ️ ️ ️
✔️ Seri versi utama stabil saat ini adalah: 7.x
Versi | Status |
---|---|
7.x | ✔️ Stabil |
6.x | Pensiun |
5.x | Pensiun |
4.x | Pensiun |
3.x | Pensiun |
2.x | Pensiun |
1.x | Pensiun |
0.x | Pensiun |
Rilis terbaru selalu dapat ditemukan di halaman rilis.
Jika Anda mengalami masalah saat menggunakan SDK, Anda dapat:
Pengguna yang bermigrasi dari versi sebelumnya SDK ini harus melihat Panduan Migrasi untuk mempelajari perubahan apa yang diperlukan.
SDK ini diketahui berfungsi dengan versi terbaru Chrome, Firefox, dan Safari di desktop dan seluler.
Kompatibilitas dengan IE 11 / Edge dapat dicapai dengan menambahkan polyfill/shims untuk objek berikut:
️ polyfill kripto tidak dapat menggunakan sistem operasi sebagai sumber entropi berkualitas baik yang digunakan untuk menghasilkan angka pseudo-acak yang merupakan kunci kriptografi yang baik. Oleh karena itu, kami mengambil sikap bahwa polyfill kripto kurang aman dan kami menyarankan untuk tidak menggunakannya.
Modul ini menyediakan titik masuk yang mengimplementasikan semua polyfill yang diperlukan.
Jika Anda menggunakan JS pada halaman web dari browser, Anda dapat menyalin konten node_modules/@okta/okta-auth-js/dist
ke direktori yang dihosting secara publik, dan menyertakan referensi ke okta-auth-js.polyfill.js
dalam tag <script>
. Itu harus dimuat sebelum skrip lain yang bergantung pada polyfill.
Jika Anda menggunakan bundler seperti Webpack atau Browserify, Anda cukup mengimpor import atau require @okta/okta-auth-js/polyfill
pada atau di dekat awal kode aplikasi Anda:
import '@okta/okta-auth-js/polyfill' ;
atau
require ( '@okta/okta-auth-js/polyfill' ) ;
Paket polyfill yang dibuat juga tersedia di CDN global kami. Sertakan skrip berikut dalam file HTML Anda untuk dimuat sebelum skrip lainnya:
< script src =" https://global.oktacdn.com/okta-auth-js/7.5.1/okta-auth-js.polyfill.js " type =" text/javascript " integrity =" sha384-EBFsuVdi4TGp/DwS7b+t+wA8zmWK10omkX05ZjJWQhzWuW31t7FWEGOnHQeIr8+L " crossorigin =" anonymous " > </ script >
️ Versi yang ditampilkan dalam contoh ini mungkin lebih lama dari versi saat ini. Kami merekomendasikan menggunakan versi tertinggi yang tersedia
Banyak browser sudah mulai memblokir cookie lintas asal atau "pihak ketiga" secara default. Meskipun sebagian besar API Okta yang didukung oleh SDK ini tidak bergantung pada cookie, ada beberapa metode yang bergantung pada cookie. Metode berikut akan rusak jika cookie pihak ketiga diblokir:
Jika aplikasi Anda bergantung pada salah satu metode ini, Anda harus mencoba menulis ulang aplikasi Anda untuk menghindari penggunaan metode ini atau menyampaikan kepada pengguna Anda bahwa mereka harus mengaktifkan cookie pihak ketiga. Insinyur Okta saat ini sedang mencari solusi jangka panjang yang lebih baik untuk masalah ini.
Menginstal SDK Otentikasi itu sederhana. Anda dapat memasukkannya ke dalam proyek Anda melalui paket npm kami, @okta/okta-auth-js.
Anda juga membutuhkan:
Saat membuat aplikasi Okta baru, Anda dapat menentukan jenis aplikasinya. SDK ini dirancang untuk bekerja dengan SPA
(Aplikasi Satu Halaman) atau aplikasi Web
. Aplikasi SPA
akan menjalankan semua alur logika dan otorisasi di sisi klien. Aplikasi Web
akan melakukan alur otorisasi di server.
Dari Okta Admin UI, klik Applications
, lalu pilih aplikasi Anda. Anda dapat melihat dan mengedit konfigurasi aplikasi Okta Anda di bawah tab General
aplikasi.
Sebuah string yang secara unik mengidentifikasi aplikasi Okta Anda.
Untuk memasukkan pengguna, aplikasi Anda mengalihkan browser ke halaman masuk yang dihosting Okta. Okta kemudian mengalihkan kembali ke aplikasi Anda dengan informasi tentang pengguna. Anda dapat mempelajari lebih lanjut cara kerjanya pada alur yang dihosting Okta.
Anda perlu memasukkan URL pengalihan login ke dalam daftar putih di pengaturan aplikasi Okta Anda.
Setelah Anda mengeluarkan pengguna dari aplikasi Anda dan keluar dari Okta, Anda harus mengarahkan pengguna ke lokasi tertentu di aplikasi Anda. Anda perlu memasukkan URL keluar posting ke dalam daftar putih di pengaturan aplikasi Okta Anda.
Menggunakan modul npm kami adalah pilihan yang baik jika:
Untuk menginstal @okta/okta-auth-js:
# Run this command in your project root folder.
# yarn
yarn add @okta/okta-auth-js
# npm
npm install --save @okta/okta-auth-js
Jika Anda menggunakan JS pada halaman web dari browser, Anda dapat menyalin konten node_modules/@okta/okta-auth-js/dist
ke direktori yang dihosting secara publik, dan menyertakan referensi ke okta-auth-js.min.js
dalam tag <script>
.
Paket perpustakaan yang dibangun juga tersedia di CDN global kami. Sertakan skrip berikut dalam file HTML Anda untuk dimuat sebelum skrip aplikasi Anda:
< script src =" https://global.oktacdn.com/okta-auth-js/7.5.1/okta-auth-js.min.js " type =" text/javascript " integrity =" sha384-6epSwnIDkI5zFNEVNjEYy3A7aSZ+C7ehmEyG8zDJZfP9Bmnxc51TK8du+2me4pjb " crossorigin =" anonymous " > </ script >
️ Versi yang ditampilkan dalam contoh ini mungkin lebih lama dari versi saat ini. Kami merekomendasikan menggunakan versi tertinggi yang tersedia
Kemudian Anda dapat membuat instance objek OktaAuth
, tersedia secara global.
const oktaAuth = new OktaAuth ( {
// config
} )
Namun, jika Anda menggunakan bundler seperti Webpack atau Rollup, Anda cukup mengimpor atau memerlukan modul tersebut.
// ES module
import { OktaAuth } from '@okta/okta-auth-js'
const authClient = new OktaAuth ( /* configOptions */ )
// CommonJS
var OktaAuth = require ( '@okta/okta-auth-js' ) . OktaAuth ;
var authClient = new OktaAuth ( /* configOptions */ ) ;
Untuk ikhtisar fitur klien dan alur autentikasi, lihat dokumen pengembang kami. Di sana, Anda akan mempelajari cara menggunakan Auth SDK pada halaman statis sederhana untuk:
️ Dokumen pengembang mungkin ditulis untuk versi sebelumnya dari perpustakaan ini. Lihat Migrasi dari versi sebelumnya.
Anda juga dapat menelusuri dokumentasi referensi API lengkap.
⌛ Metode async mengembalikan janji yang akan diselesaikan jika berhasil. Janji tersebut dapat ditolak jika terjadi kesalahan.
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/default' ,
clientId : 'GHtf9iJdr60A9IYrR0jw' ,
redirectUri : 'https://acme.com/oauth2/callback/home' ,
} ;
var authClient = new OktaAuth ( config ) ;
Secara default, membuat instance OktaAuth
baru tidak akan menimbulkan efek samping asinkron apa pun. Namun, fitur tertentu seperti perpanjangan otomatis token, penghapusan otomatis token, dan sinkronisasi lintas tab memerlukan OktaAuth
untuk dijalankan sebagai layanan. Ini berarti batas waktu diatur di latar belakang yang akan terus berfungsi hingga layanan dihentikan. Untuk memulai layanan OktaAuth
, cukup panggil metode start
tepat setelah pembuatan dan sebelum memanggil metode lain seperti handleRedirect. Untuk menghentikan semua proses latar belakang, panggil stop
. Lihat Konfigurasi Layanan untuk info lebih lanjut.
var authClient = new OktaAuth ( config ) ;
await authClient . start ( ) ; // start the service
await authClient . stop ( ) ; // stop the service
Catatan: Memulai layanan juga akan memanggil authStateManager.updateAuthState.
Definisi tipe disediakan secara implisit melalui entri types
di package.json
. Tipe juga dapat direferensikan secara eksplisit dengan mengimpornya.
import {
OktaAuth ,
OktaAuthOptions ,
TokenManagerInterface ,
AccessToken ,
IDToken ,
UserClaims ,
TokenParams
} from '@okta/okta-auth-js' ;
const config : OktaAuthOptions = {
issuer : 'https://{yourOktaDomain}'
} ;
const authClient : OktaAuth = new OktaAuth ( config ) ;
const tokenManager : TokenManagerInterface = authClient . tokenManager ;
const accessToken : AccessToken = await tokenManager . get ( 'accessToken' ) as AccessToken ;
const idToken : IDToken = await tokenManager . get ( 'idToken' ) as IDToken ;
const userInfo : UserClaims = await authClient . token . getUserInfo ( accessToken , idToken ) ;
if ( ! userInfo ) {
const tokenParams : TokenParams = {
scopes : [ 'openid' , 'email' , 'custom_scope' ] ,
} ;
authClient . token . getWithRedirect ( tokenParams ) ;
}
Versi skrip sebelum 3.6 tidak memiliki definisi tipe untuk WebAuthn. Dukungan untuk WebAuthn di IDX API diperkenalkan di @okta/[email protected]
. Untuk mengatasi masalah ini silakan instal paket @types/webappsec-credential-management
version ^0.5.1
.
Klien web dan asli dapat memperoleh token menggunakan aliran authorization_code
yang menggunakan rahasia klien yang disimpan di lokasi aman. (Aplikasi SPA harus menggunakan alur PKCE
yang tidak menggunakan rahasia klien) Untuk menggunakan alur authorization_code
, atur responseType
ke "code"
dan pkce
ke false
:
var config = {
// Required config
issuer : 'https://{yourOktaDomain}/oauth2/default' ,
clientId : 'GHtf9iJdr60A9IYrR0jw' ,
redirectUri : 'https://acme.com/oauth2/callback/home' ,
// Use authorization_code flow
responseType : 'code' ,
pkce : false
} ;
var authClient = new OktaAuth ( config ) ;
Alur PKCE OAuth akan digunakan secara default. Pustaka ini mendukung PKCE untuk browser dan aplikasi NodeJS. PKCE didukung secara luas oleh sebagian besar browser modern saat dijalankan pada koneksi HTTPS. PKCE mengharuskan browser mengimplementasikan crypto.subtle
(juga dikenal sebagai webcrypto
). Sebagian besar browser modern menyediakan ini ketika dijalankan dalam konteks aman (pada koneksi HTTPS). PKCE juga memerlukan objek TextEncoder. Ini tersedia di semua browser utama kecuali IE 11 dan Edge <v79. Untuk menambahkan dukungan, sebaiknya gunakan polyfill/shim seperti pengkodean teks.
Jika browser pengguna tidak mendukung PKCE, pengecualian akan diberikan. Anda dapat menguji apakah browser mendukung PKCE sebelum konstruksi dengan metode statis ini:
OktaAuth.features.isPKCESupported()
️ Kami sangat tidak menyarankan penggunaan aliran implisit. Gunakan PKCE dan/atau kredensial klien jika memungkinkan.
Alur OAuth implisit tersedia sebagai opsi jika aliran PKCE tidak dapat didukung dalam penerapan Anda. Ini didukung secara luas oleh sebagian besar browser, dan dapat bekerja melalui koneksi HTTP yang tidak aman. Perhatikan bahwa aliran implisit kurang aman dibandingkan aliran PKCE, bahkan melalui HTTPS, karena token mentah diekspos dalam riwayat browser. Untuk itu kami sangat merekomendasikan penggunaan alur PKCE jika memungkinkan.
Aliran implisit dapat diaktifkan dengan mengatur opsi pkce
ke false
var config = {
pkce : false ,
// other config
issuer : 'https://{yourOktaDomain}/oauth2/default' ,
} ;
var authClient = new OktaAuth ( config ) ;
Untuk memasukkan pengguna, aplikasi Anda harus mengarahkan browser ke halaman masuk yang dihosting Okta.
Catatan: Pengalihan awal ke halaman masuk yang dihosting Okta memulai transaksi dengan masa pakai stateToken yang disetel ke satu jam.
Setelah autentikasi berhasil, browser dialihkan kembali ke aplikasi Anda bersama dengan informasi tentang pengguna. Tergantung pada preferensi Anda, Anda dapat menggunakan strategi panggilan balik berikut.
Sebagian besar aplikasi akan menangani panggilan balik OAuth menggunakan rute/halaman khusus, terpisah dari halaman masuk. Namun beberapa aplikasi SPA tidak memiliki logika perutean dan ingin menangani semuanya dalam satu halaman.
async function main ( ) {
// create OktaAuth instance
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/default' ,
clientId : 'GHtf9iJdr60A9IYrR0jw' ,
redirectUri : 'https://acme.com/oauth2/callback/home' ,
} ;
authClient = new OktaAuth ( config ) ;
// Subscribe to authState change event.
authClient . authStateManager . subscribe ( function ( authState ) {
// Logic based on authState is done here.
if ( ! authState . isAuthenticated ) {
// render unathenticated view
return ;
}
// Render authenticated view
} ) ;
// Handle callback
if ( authClient . token . isLoginRedirect ( ) ) {
const { tokens } = await authClient . token . parseFromUrl ( ) ; // remember to "await" this async call
authClient . tokenManager . setTokens ( tokens ) ;
}
// normal app startup
authClient . start ( ) ; // will update auth state and call event listeners
}
Menurut spesifikasi OAuth 2.0, URI pengalihan "TIDAK HARUS berisi komponen fragmen": https://tools.ietf.org/html/rfc6749#section-3.1.2 Saat menggunakan strategi perutean hash/fragmen dan OAuth 2.0, redirect callback akan menjadi rute utama/default. Alur panggilan balik pengalihan akan sangat mirip dengan menangani panggilan balik tanpa perutean. Kami merekomendasikan untuk menentukan logika yang akan mengurai url pengalihan di awal aplikasi Anda, sebelum pemeriksaan otorisasi lainnya.
Selain itu, jika menggunakan perutean hash, sebaiknya gunakan PKCE dan "query" responMode (ini adalah default untuk PKCE). Dengan aliran implisit, token dalam hash dapat menyebabkan hasil yang tidak terduga karena router hash dapat menulis ulang fragmen tersebut.
TokenManager
: tokenManager.setTokensReferensi: DPoP (Menunjukkan Bukti Kepemilikan) - RFC9449
DPoP
harus diaktifkan di aplikasi Okta Anda (Panduan: Konfigurasi DPoP)https
diperlukan. Konteks aman diperlukan untuk WebCrypto.subtle
IndexedDB
(MDN, caniuse) const config = {
// other configurations
pkce : true , // required
dpop : true ,
} ;
const authClient = new OktaAuth ( config ) ;
Referensi: Skema Otentikasi DPoP (RFC9449)
GET /protectedresource HTTP/1.1
Host: resource.example.org
Authorization: DPoP Kz~8mXK1EalYznwH-LC-1fBAo.4Ljp~zsPE_NeO.gxU
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsIm...
async function dpopAuthenticatedFetch ( url , options ) {
const { method } = options ;
const dpop = await authClient . getDPoPAuthorizationHeaders ( { url , method } ) ;
// dpop = { Authorization: "DPoP token****", Dpop: "proof****" }
const headers = new Headers ( { ... options . headers , ... dpop } ) ;
return fetch ( url , { ... options , headers } ) ;
}
use_dpop_nonce
Referensi: Nonce yang Disediakan Server Sumber Daya (RFC9449)
Server sumber daya juga dapat memilih untuk memberikan nilai nonce untuk disertakan dalam bukti DPoP yang dikirimkan kepada mereka. Mereka menyediakan nonce menggunakan header DPoP-Nonce dengan cara yang sama seperti yang dilakukan server otorisasi...
HTTP/1.1 401 Unauthorized
WWW-Authenticate: DPoP error="use_dpop_nonce",
error_description="Resource server requires nonce in DPoP proof"
DPoP-Nonce: eyJ7S_zG.eyJH0-Z.HX4w-7v
async function dpopAuthenticatedFetch ( url , options ) {
// ...previous example...
const resp = await fetch ( url , { ... options , headers } ) ;
// resp = HTTP/1.1 401 Unauthorized...
if ( ! resp . ok ) {
const nonce = authClient . parseUseDPoPNonceError ( resp . headers ) ;
if ( nonce ) {
const retryDpop = await authClient . getDPoPAuthorizationHeaders ( { url , method , nonce } ) ;
const retryHeaders = new Headers ( { ... options . headers , ... retryDpop } ) ;
return fetch ( url , { ... options , headers : retryHeaders } ) ;
}
}
return resp ;
}
DPoP memerlukan fitur browser tertentu. Pengguna yang menggunakan browser tanpa fitur yang diperlukan tidak akan dapat menyelesaikan permintaan token. Disarankan untuk memverifikasi dukungan browser selama bootstrap aplikasi.
// App.tsx
useEffect ( ( ) => {
if ( ! authClient . features . isDPoPSupported ( ) ) {
// user will be unable to request tokens
navigate ( '/unsupported-error-page' ) ;
}
} , [ ] ) ;
DPoP memerlukan pembuatan CryptoKeyPair
yang perlu disimpan dalam penyimpanan. Metode seperti signOut()
atau revokeAccessToken()
akan menghapus pasangan kunci, namun pengguna tidak selalu logout secara eksplisit. Oleh karena itu, merupakan praktik yang baik untuk mengosongkan penyimpanan sebelum login untuk menghapus pasangan kunci yatim piatu yang dihasilkan dari token yang diminta sebelumnya.
async function login ( options ) {
await authClient . clearDPoPStorage ( ) ; // clear possibly orphaned key pairs
return authClient . signInWithRedirect ( options ) ;
}
Baik Anda menggunakan SDK ini untuk mengimplementasikan aliran OIDC atau untuk berkomunikasi dengan Authentication API, satu-satunya opsi konfigurasi yang diperlukan adalah issuer
, yang merupakan URL ke Server Otorisasi Okta
Anda dapat menggunakan URL organisasi Okta Anda sebagai penerbit. Tindakan ini akan menerapkan kebijakan otorisasi default dan menerbitkan token yang tercakup di tingkat organisasi.
var config = {
issuer : 'https://{yourOktaDomain}'
} ;
var authClient = new OktaAuth ( config ) ;
Okta memungkinkan Anda membuat beberapa server otorisasi OAuth 2.0 khusus yang dapat Anda gunakan untuk melindungi server sumber daya Anda sendiri. Dalam setiap server otorisasi, Anda dapat menentukan cakupan, klaim, dan kebijakan akses OAuth 2.0 Anda sendiri. Banyak organisasi memiliki server otorisasi "default".
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/default'
} ;
var authClient = new OktaAuth ( config ) ;
Anda juga dapat membuat dan menyesuaikan server otorisasi tambahan.
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/custom-auth-server-id'
} ;
var authClient = new OktaAuth ( config ) ;
Opsi ini dapat disertakan saat membuat instance Okta Auth JS ( new OktaAuth(config)
).
issuer
️ Opsi ini diperlukan
URL untuk organisasi Okta Anda atau server autentikasi Okta. Tentang penerbitnya
clientId
Id Klien telah dipraregistrasi dengan Okta untuk alur autentikasi OIDC. Membuat aplikasi Okta Anda
redirectUri
Url yang dialihkan saat menggunakan token.getWithRedirect
. Ini harus tercantum dalam URI pengalihan Login aplikasi Okta Anda. Jika tidak ada redirectUri
yang disediakan, defaultnya adalah asal saat ini ( window.location.origin
). Mengonfigurasi aplikasi Okta Anda
postLogoutRedirectUri
Tentukan url tempat browser harus dialihkan setelah keluar. Url ini harus tercantum dalam URI pengalihan Logout aplikasi Okta Anda. Jika tidak ditentukan, asal aplikasi Anda ( window.location.origin
) akan digunakan. Mengonfigurasi aplikasi Okta Anda |
scopes
Tentukan informasi apa yang akan tersedia di id_token
atau access_token
yang dikembalikan. Untuk OIDC, Anda harus menyertakan openid
sebagai salah satu cakupannya. Defaultnya adalah ['openid', 'email']
. Untuk daftar cakupan yang tersedia, lihat Cakupan dan Klaim
state
String yang disediakan klien yang akan diteruskan ke titik akhir server dan dikembalikan dalam respons OAuth. Nilai tersebut dapat digunakan untuk memvalidasi respons OAuth dan mencegah pemalsuan permintaan lintas situs (CSRF). Defaultnya adalah string acak.
pkce
Nilai defaultnya adalah true
yang mengaktifkan Aliran OAuth PKCE. Untuk menggunakan Aliran Implisit atau Aliran Kode Otorisasi, setel pkce
ke false
.
dpop
Nilai defaultnya adalah false
. Setel ke true
untuk mengaktifkan DPoP
(Mendemonstrasikan Bukti Kepemilikan (RFC9449))
Lihat Panduan: Mengaktifkan DPoP
Saat meminta token menggunakan nilai token.getWithRedirect akan dikembalikan sebagai parameter yang ditambahkan ke redirectUri.
Dalam kebanyakan kasus, Anda tidak perlu menetapkan nilai untuk responseMode
. Defaultnya diatur sesuai dengan spesifikasi OpenID Connect 1.0.
Untuk PKCE OAuth Flow), kode otorisasi akan ada dalam permintaan pencarian URL. Klien yang menggunakan aliran PKCE dapat memilih untuk menerima kode otorisasi dalam fragmen hash dengan mengatur opsi responMode ke "fragmen".
Untuk Aliran OAuth Implisit), token akan berada di fragmen hash URL. Ini tidak dapat diubah.
responseType
Tentukan jenis respons untuk autentikasi OIDC saat menggunakan Alur OAuth Implisit. Nilai defaultnya adalah ['token', 'id_token']
yang akan meminta token akses dan token ID. Jika pkce
bernilai true
, akses dan token ID akan diminta dan opsi ini akan diabaikan. Untuk aplikasi web/asli yang menggunakan aliran authorization_code
, nilai ini harus ditetapkan ke "code"
dan pkce
harus ditetapkan ke false
.
authorizeUrl
Tentukan authorizeUrl kustom untuk menjalankan alur OIDC. Default untuk penerbit ditambah "/v1/otorisasi".
userinfoUrl
Tentukan userinfoUrl khusus. Default untuk penerbit ditambah "/v1/userinfo".
tokenUrl
Tentukan tokenUrl khusus. Default untuk penerbit ditambah "/v1/token".
ignoreSignature
️ Opsi ini sebaiknya digunakan hanya untuk dukungan browser dan tujuan pengujian.
Tanda tangan token ID divalidasi secara default ketika token.getWithoutPrompt
, token.getWithPopup
, token.getWithRedirect
, dan token.verify
dipanggil. Untuk menonaktifkan validasi tanda tangan token ID untuk metode ini, setel nilai ini ke true
.
maxClockSkew
Defaultnya adalah 300 (lima menit). Ini adalah perbedaan maksimum yang diperbolehkan antara jam klien dan jam Okta, dalam hitungan detik, saat memvalidasi token. Menyetelnya ke 0 tidak disarankan karena meningkatkan kemungkinan token yang valid akan gagal dalam validasi.
ignoreLifetime
️ Opsi ini menonaktifkan validasi token seumur hidup, yang dapat menimbulkan masalah kerentanan keamanan. Opsi ini harus digunakan untuk tujuan pengujian. Harap tangani kesalahan di aplikasi Anda sendiri untuk lingkungan produksi.
Masa pakai token divalidasi menggunakan maxClockSkew. Untuk menggantinya dan menonaktifkan validasi token seumur hidup, setel nilai ini ke true
.
transformAuthState
Fungsi panggilan balik. Ketika updateAuthState dipanggil, objek authState baru dihasilkan. Menyediakan fungsi transformAuthState
memungkinkan Anda mengubah atau mengganti objek ini sebelum disimpan dan dipancarkan. Kasus penggunaan yang umum adalah mengubah arti isAuthenticated. Secara default, updateAuthState
akan menyetel authState.isAuthenticated
ke true jika token yang belum kedaluwarsa tersedia dari tokenManager. Logika ini dapat disesuaikan agar memerlukan sesi Okta SSO yang valid:
const config = {
// other config
transformAuthState : async ( oktaAuth , authState ) => {
if ( ! authState . isAuthenticated ) {
return authState ;
}
// extra requirement: user must have valid Okta SSO session
const