Das Okta Auth JavaScript SDK baut auf unserer Authentifizierungs-API und der OpenID Connect- und OAuth 2.0-API auf, um Ihnen die Erstellung eines vollständig markenbezogenen Anmeldeerlebnisses mit JavaScript zu ermöglichen.
Weitere Informationen finden Sie auf der Okta + JavaScript-Seite in unserer Dokumentation.
Diese Bibliothek verwendet semantische Versionierung und folgt der Bibliotheksversionsrichtlinie von Okta.
️ ️ ️ ️ ️ ️ ️ ️ ️
️ ️ ️ ️ ️ ️ ️ ️ ️
✔️ Die aktuelle stabile Hauptversionsreihe ist: 7.x
Version | Status |
---|---|
7.x | ✔️ Stabil |
6.x | Im Ruhestand |
5.x | Im Ruhestand |
4.x | Im Ruhestand |
3.x | Im Ruhestand |
2.x | Im Ruhestand |
1.x | Im Ruhestand |
0.x | Im Ruhestand |
Die neueste Version finden Sie immer auf der Release-Seite.
Wenn bei der Verwendung des SDK Probleme auftreten, können Sie Folgendes tun:
Benutzer, die von früheren Versionen dieses SDK migrieren, sollten den Migrationsleitfaden lesen, um zu erfahren, welche Änderungen erforderlich sind.
Es ist bekannt, dass dieses SDK mit aktuellen Versionen von Chrome, Firefox und Safari auf Desktops und Mobilgeräten funktioniert.
Die Kompatibilität mit IE 11/Edge kann durch Hinzufügen von Polyfill/Shims für die folgenden Objekte erreicht werden:
️ Krypto-Polyfills sind nicht in der Lage, das Betriebssystem als Quelle qualitativ hochwertiger Entropie zu nutzen, um Pseudozufallszahlen zu generieren, die den Schlüssel zu guter Kryptografie darstellen. Daher gehen wir davon aus, dass Krypto-Polyfills weniger sicher sind und raten von deren Verwendung ab.
Dieses Modul bietet einen Einstiegspunkt, der alle erforderlichen Polyfills implementiert.
Wenn Sie JS auf einer Webseite über den Browser verwenden, können Sie den Inhalt von node_modules/@okta/okta-auth-js/dist
in ein öffentlich gehostetes Verzeichnis kopieren und einen Verweis auf okta-auth-js.polyfill.js
Datei in einem <script>
-Tag. Es sollte vor allen anderen Skripten geladen werden, die von der Polyfüllung abhängen.
Wenn Sie einen Bundler wie Webpack oder Browserify verwenden, können Sie einfach import import oder require @okta/okta-auth-js/polyfill
am oder nahe dem Anfang des Codes Ihrer Anwendung verwenden:
import '@okta/okta-auth-js/polyfill' ;
oder
require ( '@okta/okta-auth-js/polyfill' ) ;
Das fertige Polyfill-Bundle ist auch auf unserem globalen CDN verfügbar. Fügen Sie das folgende Skript in Ihre HTML-Datei ein, damit es vor allen anderen Skripten geladen wird:
< 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 >
️ Die in diesem Beispiel gezeigte Version ist möglicherweise älter als die aktuelle Version. Wir empfehlen die Verwendung der höchsten verfügbaren Version
Viele Browser haben damit begonnen, Cross-Origin-Cookies oder „Drittanbieter“-Cookies standardmäßig zu blockieren. Obwohl die meisten von diesem SDK unterstützten Okta-APIs nicht auf Cookies basieren, gibt es einige Methoden, die dies tun. Diese Methoden funktionieren nicht, wenn Cookies von Drittanbietern blockiert werden:
Wenn Ihre Anwendung von einer dieser Methoden abhängt, sollten Sie versuchen, Ihre Anwendung entweder umzuschreiben, um die Verwendung dieser Methoden zu vermeiden, oder Ihren Benutzern mitzuteilen, dass sie Cookies von Drittanbietern aktivieren müssen. Okta-Ingenieure arbeiten derzeit an einer besseren langfristigen Lösung für dieses Problem.
Die Installation des Authentifizierungs-SDK ist einfach. Sie können es über unser npm-Paket @okta/okta-auth-js in Ihr Projekt einbinden.
Sie benötigen außerdem:
Beim Erstellen einer neuen Okta-Anwendung können Sie den Anwendungstyp angeben. Dieses SDK ist für die Verwendung mit SPA
(Single-Page Applications) oder Web
konzipiert. Eine SPA
Anwendung führt alle Logik- und Autorisierungsabläufe clientseitig aus. Eine Web
führt Autorisierungsflüsse auf dem Server aus.
Klicken Sie in der Okta-Admin-Benutzeroberfläche auf Applications
und wählen Sie dann Ihre Anwendung aus. Sie können die Konfiguration Ihrer Okta-Anwendung auf der Registerkarte General
der Anwendung anzeigen und bearbeiten.
Eine Zeichenfolge, die Ihre Okta-Anwendung eindeutig identifiziert.
Um Benutzer anzumelden, leitet Ihre Anwendung den Browser auf eine von Okta gehostete Anmeldeseite um. Okta leitet dann mit Informationen über den Benutzer zurück zu Ihrer Anwendung. Erfahren Sie mehr darüber, wie dies bei von Okta gehosteten Flows funktioniert.
Sie müssen die Anmeldeumleitungs-URL in Ihren Okta-Anwendungseinstellungen auf die Whitelist setzen.
Nachdem Sie Benutzer von Ihrer App und von Okta abgemeldet haben, müssen Sie Benutzer an einen bestimmten Ort in Ihrer Anwendung umleiten. Sie müssen die URL nach der Abmeldung in Ihren Okta-Anwendungseinstellungen auf die Whitelist setzen.
Die Verwendung unseres npm-Moduls ist eine gute Wahl, wenn:
So installieren Sie @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
Wenn Sie JS über den Browser auf einer Webseite verwenden, können Sie den Inhalt von node_modules/@okta/okta-auth-js/dist
in ein öffentlich gehostetes Verzeichnis kopieren und einen Verweis auf okta-auth-js.min.js
Datei in einem <script>
-Tag.
Das erstellte Bibliothekspaket ist auch auf unserem globalen CDN verfügbar. Fügen Sie das folgende Skript in Ihre HTML-Datei ein, um es vor Ihrem Anwendungsskript zu laden:
< 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 >
️ Die in diesem Beispiel gezeigte Version ist möglicherweise älter als die aktuelle Version. Wir empfehlen die Verwendung der höchsten verfügbaren Version
Anschließend können Sie eine global verfügbare Instanz des OktaAuth
-Objekts erstellen.
const oktaAuth = new OktaAuth ( {
// config
} )
Wenn Sie jedoch einen Bundler wie Webpack oder Rollup verwenden, können Sie das Modul einfach importieren oder benötigen.
// 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 */ ) ;
Einen Überblick über die Funktionen und Authentifizierungsabläufe des Clients finden Sie in unseren Entwicklerdokumenten. Dort erfahren Sie, wie Sie das Auth SDK auf einer einfachen statischen Seite verwenden, um:
️ Die Entwicklerdokumente wurden möglicherweise für eine frühere Version dieser Bibliothek geschrieben. Siehe Migration von früheren Versionen.
Sie können auch die vollständige API-Referenzdokumentation durchsuchen.
⌛ Asynchrone Methoden geben ein Versprechen zurück, das bei Erfolg aufgelöst wird. Das Versprechen kann abgelehnt werden, wenn ein Fehler auftritt.
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/default' ,
clientId : 'GHtf9iJdr60A9IYrR0jw' ,
redirectUri : 'https://acme.com/oauth2/callback/home' ,
} ;
var authClient = new OktaAuth ( config ) ;
Standardmäßig führt das Erstellen einer neuen Instanz von OktaAuth
zu keinen asynchronen Nebenwirkungen. Bestimmte Funktionen wie die automatische Token-Erneuerung, die automatische Token-Entfernung und die tabellarische Synchronisierung erfordern jedoch die Ausführung von OktaAuth
als Dienst. Dies bedeutet, dass im Hintergrund Zeitüberschreitungen festgelegt werden, die so lange weiterarbeiten, bis der Dienst beendet wird. Um den OktaAuth
-Dienst zu starten, rufen Sie einfach die start
direkt nach der Erstellung und vor dem Aufruf anderer Methoden wie handleRedirect auf. Um alle Hintergrundprozesse zu beenden, rufen Sie stop
. Weitere Informationen finden Sie unter Dienstkonfiguration.
var authClient = new OktaAuth ( config ) ;
await authClient . start ( ) ; // start the service
await authClient . stop ( ) ; // stop the service
Hinweis: Beim Starten des Dienstes wird auch authStateManager.updateAuthState aufgerufen.
Typdefinitionen werden implizit über den types
in package.json
bereitgestellt. Durch den Import können Typen auch explizit referenziert werden.
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 ) ;
}
Typescript-Versionen vor 3.6 haben keine Typdefinitionen für WebAuthn. Die Unterstützung für WebAuthn in der IDX-API wurde in @okta/[email protected]
eingeführt. Um dieses Problem zu lösen, installieren Sie bitte das Paket @types/webappsec-credential-management
Version ^0.5.1
.
Web- und native Clients können Token über den Fluss authorization_code
erhalten, der ein an einem sicheren Ort gespeichertes Client-Geheimnis verwendet. (SPA-Anwendungen sollten den PKCE
-Fluss verwenden, der kein Client-Geheimnis verwendet.) Um den authorization_code
-Fluss zu verwenden, setzen Sie responseType
auf "code"
und pkce
auf 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 ) ;
Standardmäßig wird der PKCE-OAuth-Flow verwendet. Diese Bibliothek unterstützt PKCE sowohl für Browser- als auch für NodeJS-Anwendungen. PKCE wird von den meisten modernen Browsern weitgehend unterstützt, wenn es über eine HTTPS-Verbindung ausgeführt wird. PKCE erfordert, dass der Browser crypto.subtle
(auch bekannt als webcrypto
) implementiert. Die meisten modernen Browser bieten dies, wenn sie in einem sicheren Kontext (auf einer HTTPS-Verbindung) ausgeführt werden. PKCE erfordert außerdem das TextEncoder-Objekt. Dies ist in allen gängigen Browsern außer IE 11 und Edge < v79 verfügbar. Um Unterstützung hinzuzufügen, empfehlen wir die Verwendung einer Polyfüllung/Unterlegscheibe wie z. B. Textkodierung.
Wenn der Browser des Benutzers PKCE nicht unterstützt, wird eine Ausnahme ausgelöst. Mit dieser statischen Methode können Sie vor der Erstellung testen, ob ein Browser PKCE unterstützt:
OktaAuth.features.isPKCESupported()
️ Wir raten dringend davon ab, den impliziten Fluss zu verwenden. Verwenden Sie nach Möglichkeit PKCE- und/oder Client-Anmeldeinformationen.
Der implizite OAuth-Flow ist als Option verfügbar, wenn der PKCE-Flow in Ihrer Bereitstellung nicht unterstützt werden kann. Es wird von den meisten Browsern umfassend unterstützt und kann über eine unsichere HTTP-Verbindung funktionieren. Beachten Sie, dass der implizite Fluss selbst über HTTPS weniger sicher ist als der PKCE-Fluss, da unformatierte Token im Verlauf des Browsers offengelegt werden. Aus diesem Grund empfehlen wir dringend, wenn möglich den PKCE-Flow zu verwenden.
Der implizite Fluss kann aktiviert werden, indem die pkce
-Option auf false
gesetzt wird
var config = {
pkce : false ,
// other config
issuer : 'https://{yourOktaDomain}/oauth2/default' ,
} ;
var authClient = new OktaAuth ( config ) ;
Um einen Benutzer anzumelden, muss Ihre Anwendung den Browser auf die von Okta gehostete Anmeldeseite umleiten.
Hinweis: Die anfängliche Weiterleitung zur von Okta gehosteten Anmeldeseite startet eine Transaktion mit einer StateToken-Lebensdauer, die auf eine Stunde festgelegt ist.
Nach erfolgreicher Authentifizierung wird der Browser zusammen mit Informationen über den Benutzer zurück zu Ihrer Anwendung weitergeleitet. Abhängig von Ihren Präferenzen ist es möglich, die folgenden Rückrufstrategien zu verwenden.
Die meisten Anwendungen verarbeiten einen OAuth-Rückruf über eine spezielle Route/Seite, getrennt von der Anmeldeseite. Einige SPA-Anwendungen verfügen jedoch über keine Routing-Logik und möchten alles auf einer einzigen Seite verarbeiten.
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
}
Gemäß der OAuth 2.0-Spezifikation DARF der Umleitungs-URI „KEINE Fragmentkomponente enthalten“: https://tools.ietf.org/html/rfc6749#section-3.1.2 Bei Verwendung einer Hash-/Fragment-Routing-Strategie und OAuth 2.0 muss der Der Umleitungsrückruf ist die Haupt-/Standardroute. Der Umleitungsrückrufablauf ähnelt stark der Rückrufabwicklung ohne Weiterleitung. Wir empfehlen, die Logik, die die Weiterleitungs-URL analysiert, ganz am Anfang Ihrer App zu definieren, bevor andere Autorisierungsprüfungen durchgeführt werden.
Darüber hinaus empfehlen wir bei Verwendung von Hash-Routing die Verwendung von PKCE und ResponseMode „query“ (dies ist die Standardeinstellung für PKCE). Beim impliziten Fluss könnten Token im Hash zu unvorhersehbaren Ergebnissen führen, da Hash-Router das Fragment möglicherweise neu schreiben.
TokenManager
hinzu: tokenManager.setTokensReferenz: DPoP (Demonstrating Proof-of-Possession) – RFC9449
DPoP
muss in Ihrer Okta-Anwendung aktiviert sein (Anleitung: DPoP konfigurieren)https
ist erforderlich. Für WebCrypto.subtle
ist ein sicherer Kontext erforderlichIndexedDB
(MDN, caniuse) unterstützen. const config = {
// other configurations
pkce : true , // required
dpop : true ,
} ;
const authClient = new OktaAuth ( config ) ;
Referenz: Das DPoP-Authentifizierungsschema (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
Referenz: Vom Ressourcenserver bereitgestellte Nonce (RFC9449)
Ressourcenserver können sich auch dafür entscheiden, einen Nonce-Wert bereitzustellen, der in die an sie gesendeten DPoP-Beweise einbezogen wird. Sie stellen die Nonce mithilfe des DPoP-Nonce-Headers auf die gleiche Weise bereit wie Autorisierungsserver ...
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 erfordert bestimmte Browserfunktionen. Ein Benutzer, der einen Browser ohne die erforderlichen Funktionen verwendet, kann eine Token-Anfrage nicht abschließen. Es wird empfohlen, die Browserunterstützung während des Anwendungs-Bootstrappings zu überprüfen.
// App.tsx
useEffect ( ( ) => {
if ( ! authClient . features . isDPoPSupported ( ) ) {
// user will be unable to request tokens
navigate ( '/unsupported-error-page' ) ;
}
} , [ ] ) ;
DPoP erfordert die Generierung eines CryptoKeyPair
, das im Speicher gespeichert werden muss. Methoden wie signOut()
oder revokeAccessToken()
löschen das Schlüsselpaar, Benutzer melden sich jedoch nicht immer explizit ab. Es empfiehlt sich daher, den Speicher vor der Anmeldung zu löschen, um alle verwaisten Schlüsselpaare zu löschen, die aus zuvor angeforderten Token generiert wurden.
async function login ( options ) {
await authClient . clearDPoPStorage ( ) ; // clear possibly orphaned key pairs
return authClient . signInWithRedirect ( options ) ;
}
Unabhängig davon, ob Sie dieses SDK zur Implementierung eines OIDC-Flows oder zur Kommunikation mit der Authentifizierungs-API verwenden, ist die einzige erforderliche Konfigurationsoption issuer
, also die URL zu einem Okta-Autorisierungsserver
Sie können die URL Ihrer Okta-Organisation als Aussteller verwenden. Dadurch wird eine Standardautorisierungsrichtlinie angewendet und Token ausgegeben, die auf Organisationsebene gelten.
var config = {
issuer : 'https://{yourOktaDomain}'
} ;
var authClient = new OktaAuth ( config ) ;
Mit Okta können Sie mehrere benutzerdefinierte OAuth 2.0-Autorisierungsserver erstellen, die Sie zum Schutz Ihrer eigenen Ressourcenserver verwenden können. Innerhalb jedes Autorisierungsservers können Sie Ihre eigenen OAuth 2.0-Bereiche, Ansprüche und Zugriffsrichtlinien definieren. Viele Organisationen verfügen über einen „Standard“-Autorisierungsserver.
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/default'
} ;
var authClient = new OktaAuth ( config ) ;
Sie können auch zusätzliche Autorisierungsserver erstellen und anpassen.
var config = {
issuer : 'https://{yourOktaDomain}/oauth2/custom-auth-server-id'
} ;
var authClient = new OktaAuth ( config ) ;
Diese Optionen können bei der Instanziierung von Okta Auth JS ( new OktaAuth(config)
) einbezogen werden.
issuer
️ Diese Option ist erforderlich
Die URL für Ihre Okta-Organisation oder einen Okta-Authentifizierungsserver. Über den Emittenten
clientId
Bei Okta für den OIDC-Authentifizierungsablauf vorregistrierte Client-ID. Erstellen Sie Ihre Okta-Anwendung
redirectUri
Die URL, zu der bei Verwendung von token.getWithRedirect
umgeleitet wird. Dies muss in den Login-Umleitungs-URIs Ihrer Okta-Anwendung aufgeführt sein. Wenn kein redirectUri
angegeben wird, wird standardmäßig der aktuelle Ursprung ( window.location.origin
) verwendet. Konfigurieren Sie Ihre Okta-Anwendung
postLogoutRedirectUri
Geben Sie die URL an, wohin der Browser nach der Abmeldung umgeleitet werden soll. Diese URL muss in den Abmelde-Umleitungs-URIs Ihrer Okta-Anwendung aufgeführt sein. Wenn nicht angegeben, wird der Ursprung Ihrer Anwendung ( window.location.origin
) verwendet. Konfigurieren Ihrer Okta-Anwendung |
scopes
Geben Sie an, welche Informationen im zurückgegebenen id_token
oder access_token
verfügbar gemacht werden sollen. Für OIDC müssen Sie openid
als einen der Bereiche einschließen. Standardmäßig ist ['openid', 'email']
. Eine Liste der verfügbaren Bereiche finden Sie unter Bereiche und Ansprüche
state
Eine vom Client bereitgestellte Zeichenfolge, die an den Serverendpunkt übergeben und in der OAuth-Antwort zurückgegeben wird. Der Wert kann verwendet werden, um die OAuth-Antwort zu validieren und Cross-Site Request Forgery (CSRF) zu verhindern. Standardmäßig ist eine zufällige Zeichenfolge.
pkce
Der Standardwert ist true
wodurch der PKCE-OAuth-Flow aktiviert wird. Um den impliziten Fluss oder den Autorisierungscode-Fluss zu verwenden, legen Sie pkce
auf false
fest.
dpop
Der Standardwert ist false
. Auf true
setzen, um DPoP
(Demonstrating Proof-of-Possession (RFC9449)) zu aktivieren.
Siehe Anleitung: DPoP aktivieren
Beim Anfordern von Token mit token.getWithRedirect werden Werte als Parameter zurückgegeben, die an die RedirectUri angehängt werden.
In den meisten Fällen müssen Sie keinen Wert für responseMode
festlegen. Die Standardeinstellungen werden gemäß der OpenID Connect 1.0-Spezifikation festgelegt.
Bei PKCE OAuth Flow wird der Autorisierungscode in der Suchabfrage der URL angezeigt. Clients, die den PKCE-Flow verwenden, können stattdessen den Autorisierungscode im Hash-Fragment erhalten, indem sie die Option „responseMode“ auf „fragment“ setzen.
Beim impliziten OAuth-Flow befinden sich Token im Hash-Fragment der URL. Dies kann nicht geändert werden.
responseType
Geben Sie den Antworttyp für die OIDC-Authentifizierung an, wenn Sie den impliziten OAuth-Flow verwenden. Der Standardwert ist ['token', 'id_token']
wodurch sowohl ein Zugriffstoken als auch ein ID-Token angefordert werden. Wenn pkce
true
ist, werden sowohl das Zugriffs- als auch das ID-Token angefordert und diese Option wird ignoriert. Für Web-/native Anwendungen, die den authorization_code
Flow verwenden, sollte dieser Wert auf "code"
und pkce
auf false
gesetzt werden.
authorizeUrl
Geben Sie eine benutzerdefinierte AuthorizeUrl an, um den OIDC-Fluss auszuführen. Standardmäßig wird der Aussteller plus „/v1/authorize“ verwendet.
userinfoUrl
Geben Sie eine benutzerdefinierte userinfoUrl an. Standardmäßig wird der Aussteller plus „/v1/userinfo“ verwendet.
tokenUrl
Geben Sie eine benutzerdefinierte tokenUrl an. Standardmäßig ist der Aussteller plus „/v1/token“ angegeben.
ignoreSignature
️ Diese Option sollte nur zur Browserunterstützung und zu Testzwecken verwendet werden.
ID-Token-Signaturen werden standardmäßig validiert, wenn token.getWithoutPrompt
, token.getWithPopup
, token.getWithRedirect
und token.verify
aufgerufen werden. Um die ID-Token-Signaturvalidierung für diese Methoden zu deaktivieren, legen Sie diesen Wert auf true
fest.
maxClockSkew
Der Standardwert ist 300 (fünf Minuten). Dies ist die maximal zulässige Differenz in Sekunden zwischen der Uhr eines Clients und der von Okta bei der Validierung von Token. Es wird nicht empfohlen, diesen Wert auf 0 zu setzen, da dadurch die Wahrscheinlichkeit steigt, dass gültige Token die Validierung nicht bestehen.
ignoreLifetime
️ Diese Option deaktiviert die Validierung der Token-Lebensdauer, was zu Sicherheitslücken führen kann. Diese Option sollte zu Testzwecken verwendet werden. Bitte behandeln Sie den Fehler in Ihrer eigenen App für die Produktionsumgebung.
Die Gültigkeitsdauer von Token wird mithilfe von maxClockSkew validiert. Um dies zu überschreiben und die Validierung der Token-Lebensdauer zu deaktivieren, legen Sie diesen Wert auf true
fest.
transformAuthState
Rückruffunktion. Wenn updateAuthState aufgerufen wird, wird ein neues authState-Objekt erzeugt. Durch die Bereitstellung einer transformAuthState
-Funktion können Sie dieses Objekt ändern oder ersetzen, bevor es gespeichert und ausgegeben wird. Ein häufiger Anwendungsfall besteht darin, die Bedeutung von isAuthenticated zu ändern. Standardmäßig setzt updateAuthState
authState.isAuthenticated
auf „true“, wenn nicht abgelaufene Token im tokenManager verfügbar sind. Diese Logik könnte so angepasst werden, dass auch eine gültige Okta-SSO-Sitzung erforderlich ist:
const config = {
// other config
transformAuthState : async ( oktaAuth , authState ) => {
if ( ! authState . isAuthenticated ) {
return authState ;
}
// extra requirement: user must have valid Okta SSO session
const