Autorisierung mit der API verwalten
Die REST-API für Identitätsdomains unterstützt sowohl tokenbasierte Autorisierung als auch OCI-Anforderungssignaturen. Aus Sicherheitsgründen ist die REST-API für Identitätsdomains nicht nur mit dem Benutzernamen und Kennwort zugänglich, mit dem Sie sich bei der Identitätsdomain anmelden. Um auf die REST-API für Identitätsdomains zuzugreifen, benötigen Sie ein OAuth2-Zugriffstoken oder einen API-Schlüssel für die Autorisierung.
Die Identitätsdomain-REST-API verwendet das OAuth 2.0-Protokoll zur Authentifizierung und Autorisierung und unterstützt die folgenden allgemeinen Autorisierungsszenarios:
-
Webserver
-
Mobiltelefonnummer
-
JavaScript Anwendungen
Im Abschnitt "Autorisierung" werden die OAuth 2.0-Szenarios erläutert, die von Identitätsdomains unterstützt werden.
In diesem Abschnitt werden folgende Themen behandelt:
Clientanwendungen registrieren
Eine Anwendung muss mit der Identitätsdomain als OAuth 2-Client registriert werden. OAuth-Clients sind HTTP-Clients, die ein Zugriffstoken abrufen und dann verwenden können.
Gehen Sie folgendermaßen vor, um einen OAuth-Client für den Zugriff auf die REST-API für Identitätsdomains zu verwenden:
-
Melden Sie sich mit dem Benutzernamen und Kennwort in Ihrer Willkommens-E-Mail bei der Identitätsdomain an.
-
Erstellen Sie eine Clientanwendung OAuth, und notieren Sie sich die Client-ID und das Client Secret.
Hinweis
Wenn Sie die Clientanwendung OAuth konfigurieren, wählen Sie die Anwendungsrollen aus, die Sie der Anwendung zuweisen möchten. So kann Ihre Anwendung auf die REST-APIs zugreifen, die jede der zugewiesenen Anwendungsrollen aufrufen kann. Jeder Anwendungsrolle sind Geltungsbereiche zugewiesen, die eine noch feinere Zugriffsebene auf API-Vorgänge definieren. Beispiel: Wählen Sie die Option Identitätsdomainadministrator in der Liste aus. Alle für den Identitätsdomainadministrator verfügbaren REST-API-Vorgänge sind dann auch für die Anwendung zugänglich. -
Verwenden Sie die Client-ID und das Client Secret, um ein Zugriffstoken vom IAM-Service OAuth anzufordern.
-
Nehmen Sie das Zugriffstoken in den entsprechenden HTTP-Header auf, wenn Sie REST-API-Aufrufe ausführen.
Weitere Informationen
- Weitere Informationen zum Registrieren einer Clientanwendung finden Sie unter Clientanwendung registrieren.
-
Weitere Informationen zu Berechtigungstypen finden Sie unter Zugriffsberechtigungstypen.
-
Informationen dazu, wie Sie die Schritte selbst durchgehen, finden Sie unter REST-API mit OAuth 2 aufrufen.
-
Eine Liste aller verfügbaren Endpunktvorgänge und der Anwendungsrollen, die für den Zugriff darauf erforderlich sind, finden Sie unter AppRole-Berechtigungen.
-
Eine Liste, welche AppRoles Clients und Benutzern erteilt werden kann und welche nur Clients erteilt werden kann, finden Sie unter AppRoles That Can Be Granted to Clients and Users.
Sicherheitsempfehlungen
Um Ihre Anwendungen mit OAuth sicher in Identitätsdomains zu integrieren, müssen Sie die vom Standard empfohlenen Sicherheitskontrollen implementieren.
Je nach Vertraulichkeits-, Integritäts- und Verfügbarkeitsanforderungen Ihrer Anwendung können die Sicherheitskontrollen als obligatorisch oder optional betrachtet werden.
Sicherheitskontrollen, die für alle OAuth-Teilnehmer implementiert sind, einschließlich Autorisierungsserver (IAM), Ressourceneigentümer (Benutzer), Client und Ressourcenserveranwendungen
Vertraulichkeit der Schlüsselinformationen: Code, access_token, refresh_token, Clientzugangsdaten und Benutzerzugangsdaten
Serverauthentifizierung zwischen OAuth-Teilnehmern eingerichtet (um Impersonierungsangriffe zu vermeiden)
Richtige Informationsvalidierung für alle Anforderungen (insbesondere für JSON Web Token-(JWT-)Zugriffstoken)
Verwendung von Token mit minimalem Geltungsbereich und Timeout (um die Exposition im Falle einer Offenlegung zu reduzieren und den Token-Widerruf zu unterstützen)
Verwendung typischer Informationssicherheitsgrundsätze wie Least-Privilege
Ressourcen
Weitere Informationen zur OAuth-Sicherheit finden Sie unter den folgenden Links:
-
JSON Web Token-(JWT-)Profil für OAuth 2.0-Clientauthentifizierungs- und Autorisierungsberechtigungen
Es wird empfohlen, die Sicherheit proaktiv zu überwachen, damit Sie neue Sicherheitsbedrohungen schnell identifizieren können.
Checkliste für Sicherheitsempfehlungen
Auf dieser Seite werden die relevantesten Sicherheitsempfehlungen als Checkliste aufgeführt, damit Sie Ihre Anwendungssicherheit validieren und die Sicherheitselemente Ihren Erwartungen entsprechend bearbeiten können.
Verschlüsselung
-
TLS in Client- und Ressourcenserveranwendungen verwenden
Die Verwendung von TLS mit allen Anwendungen bietet Vertraulichkeit bei der Kommunikation zwischen Identitätsdomain, Ressourceneigentümern, Clientanwendungen und Ressourcenserveranwendungen. Dadurch wird das Abhören während der Übertragung des Autorisierungscodes, der Zugriffstoken, der Aktualisierungstoken, der Clientzugangsdaten und der Benutzerzugangsdaten verhindert, und Replay-Angriffe werden verhindert.
-
Serverauthentifizierung einrichten (HTTPS mit Trusted CA Validation)
Mit der Serverauthentifizierung können Clients, Ressourcenserver und Ressourceneigentümer die Kommunikation zwischen sich und einer Identitätsdomain herstellen, nachdem das öffentliche Zertifikat mit der vertrauenswürdigen CA geprüft wurde.
Wenn der Server kein vertrauenswürdiges Zertifikat bereitstellt (das von einer vertrauenswürdigen CA und mit einem übereinstimmenden Hostnamen bereitgestellt wird), wird die Kommunikation als Man-in-the-Middle-Angriff betrachtet.
Die Serverauthentifizierung verhindert Spoofing-, Proxying-, Man-in-the-Middle- und Phishing-Angriffe, um Autorisierungscodes, Zugriffstoken, Clientzugangsdaten und Benutzerzugangsdaten zu erfassen.
-
Verwenden einer vertrauenswürdigen Assertion mit Identitätsdomains
Kritische Sicherheitsclients können eine Client-Assertion mit Schlüsselkryptografie (anstelle eines Client Secret) zur Authentifizierung verwenden.
-
Umleitungs-URI mit HTTPS und vertrauenswürdiger CA-Validierung schützen
HTTPS und die Verwendung der vertrauenswürdigen CA-Validierung verhindern das "Code"-Phishing der Autorisierung und die Imitation von Benutzersessions.
Administration
-
Anwendungen nach dem Prinzip der geringsten Berechtigungen konfigurieren
Anwendungen sollten in einer Identitätsdomain mit nur den Mindestrechten konfiguriert werden, die für ihren Vorgang erforderlich sind.
Die Beschränkung des Geltungsbereichs, der Abläufe, der Gewährungstypen und der Vorgänge verbessert die Sicherheitslage und reduziert die Auswirkungen einer kompromittierten Anwendung.
-
Geben Sie einen aussagekräftigen Namen und eine Beschreibung für Anwendungen an
Die Anwendungsinformationen werden für Benutzer unter "Meine Apps" und auf den Einwilligungsseiten angezeigt.
Die Verwendung aussagekräftiger Anwendungsnamen und Beschreibungen kann Benutzer daran hindern, während der Einwilligungserlaubnis Fehler zu machen, und trägt auch zu einem besseren Audit-Reporting bei.
-
Aussagekräftige Beschreibung für Geltungsbereiche angeben
Die Beschreibung des Geltungsbereichs wird auf der Seite "Einwilligung" angezeigt. Die Erläuterung des Geltungsbereichs, den der Benutzer erteilen wird, verhindert auf verständliche Weise, dass der Benutzer während der Autorisierung Fehler macht, und trägt zu einem besseren Audit-Reporting bei.
-
Geltungsbereiche ohne Einwilligung vermeiden
Um Transparenz zu nutzen und sich auf den Ressourceneigentümer zu verlassen, geben Sie Geltungsbereiche ohne Berechtigung nur dann an, wenn ein Geltungsbereich obligatorisch ist und der Benutzer ihn nicht leugnen kann.
-
Timeout für Zugriffstoken reduzieren und Aktualisierungstoken verwenden
Identitätsdomains unterstützen JWT, ein Zugriffstoken, das auf Ressourcenservern validiert werden kann, ohne das Token in der Identitätsdomain zu prüfen. Aus diesem Grund können Zugriffstoken mit langer Dauer nicht einfach widerrufen werden.
Um einen zeitnahen Widerruf zu implementieren, können Sie das Zugriffstoken mit einer kurzen Lebensdauer konfigurieren und dann das Aktualisierungstoken zum Anfordern neuer Zugriffstoken verwenden. Um einen rechtzeitigen Widerruf durchzuführen, müssen Sie das Aktualisierungstoken entziehen.
-
Client Secrets der Anwendung rotieren
Implementieren Sie für sicherheitskritische Implementierungen eine Client Secret-Rotation. Dies verringert das Risiko, dass ein kompromittiertes Kundengeheimnis erforscht wird.
Ressourceneigentümer (Benutzer)
-
Ressourcenverantwortlichen auf dem Laufenden halten
Die Verwendung des Geltungsbereichs mit Zustimmung bietet Transparenz für den Ressourceneigentümer und verhindert, dass Anwendungen Bereiche anfordern, die nicht erforderlich sind.
-
Benutzerkenntnis
Bringen Sie Benutzern bei, wie sie ihre Zugangsdaten schützen und die Legitimität von Client, Ressourcenserveranwendung und Identitätsdomains identifizieren (insbesondere wenn Authentifizierungs- und Einwilligungsseiten angezeigt werden). Dies reduziert das Risiko von Phishing-Angriffen und die Gefährdung von Benutzerzugangsdaten.
Anwendungsentwicklung
-
Codes, Zugriffstoken, Token und Clientzugangsdaten schützen
Anwendungen müssen die Vertraulichkeit von Codes, Zugriffstoken, Aktualisierungstoken und Clientzugangsdaten wahren. Berücksichtigen Sie bei der Entwicklung der Anwendung die folgenden Maßnahmen (unter anderem Maßnahmen zur Anwendungssicherheit):
-
Codes nicht speichern (den Code nur während der Laufzeit verwenden, um das Zugriffstoken abzurufen)
-
Behalten Sie Zugriffstoken im transienten Speicher bei, und begrenzen Sie deren Berechtigungen
-
Speichern Sie Aktualisierungstoken und Clientzugangsdaten an sicheren Orten, auf die nur die Anwendung zugreifen kann
-
-
Umleitungs-URL schützen
Die Umleitungs-URL (von der die Identitätsdomain den Autorisierungscode abruft) wird als Schlüsselkomponente für die OAuth-Sicherheit betrachtet. Seien Sie vorsichtig, wenn Sie diese URL definieren, um Bedrohungen wie Cross-Site-Request-Fälschung und Denial-of-Service zu vermeiden.
-
Token aus dem nativen Anwendungsdateisystem lesen
Angreifer können versuchen, Zugriff auf das Dateisystem auf dem Gerät zu erhalten und die Aktualisierungstoken mit einer böswilligen Anwendung zu lesen. Um dieses Risiko zu reduzieren, speichern Sie Secrets im sicheren Speicher und verwenden Sie eine Gerätesperre, um unbefugten Gerätezugriff zu verhindern.
-
Kontrollen für geklonte und gestohlene Geräte mit nativen Apps implementieren
Um Risiken zu reduzieren, wenn ein Gerät mit Native Apps geklont oder gestohlen wird, verwenden Sie die Gerätesperre, um unbefugten Zugriff zu verhindern und Aktualisierungstoken zu entziehen.
-
Anwendungssicherheit vor Veröffentlichung validieren
Testen Sie die Sicherheit der Anwendung und der zugehörigen Hostingumgebung, bevor Sie die Anwendung veröffentlichen, um Sicherheitslücken zu reduzieren. Bedrohungen im Zusammenhang mit Anwendungshosting und -entwicklung werden nicht von Identitätsdomains adressiert. Zu diesen Bedrohungen gehören unter anderem der indirekte Zugriff auf Anwendungsdatenbanken und -speicher, Select-Jacking, Cross-Site-Scripting, Script/SQL-Injection und Informationsvertraulichkeitsflüsse in der Anwendung.
-
Geringste Berechtigung während Umfangsanforderung anwenden
Clientanwendungen sollten Token anfordern, die nur Geltungsbereiche enthalten, die sie möglicherweise oder tatsächlich verwenden.
Die Verwendung von
urn:opc:idm:__myscopes__ scopekann, obwohl praktisch, mehr Token abrufen, als von der Clientanwendung benötigt werden.Ein Token mit umfangreichen Geltungsbereichen kann die Sicherheitsauswirkung erhöhen, wenn ein Token kompromittiert wird.
Informationen zur Verwendung des Scope-Parameters und eines Zugriffstokens, um verschiedene Zugriffsebenen für Identitätsdomains zu erteilen, finden Sie unter Geltungsbereiche.
-
JWT-Token validieren
Wenn Sie ein Zugriffstoken (JWT) von einer beliebigen Partei (mit Ausnahme des Identitätsdomainservers in einer direkten Anforderung von Ihrer Anwendung) erhalten, validieren Sie das JWT nach dem JWT-Profil für OAuth 2.0 Clientauthentifizierungs- und Autorisierungsberechtigungen und den JWT-RFCs.
Weitere Informationen zur Validierung des Tokens finden Sie unter Tokenvalidierung.
Hinweis
Ressourcenserver müssen Informationen erst verarbeiten, nachdem die gesamte JWT-Validierung ausgeführt wurde. -
JWT-Token richtig empfangen
Ressourcenserveranwendungen müssen das Zugriffstoken nur mit dem
Authorization: bearer <token>-Header empfangen, um Bedrohungen im Zusammenhang mit dem Parameter-Caching zu vermeiden. -
2-Wege-TLS zwischen Client- und Ressourcenserveranwendungen implementieren
Für sicherheitskritische Anwendungen können Sie eine 2-Wege-TLS zwischen Client- und Ressourcenserveranwendungen implementieren, um das Risiko von Denial-of-Service-(DoS-) und Impersonierungsangriffen zu reduzieren.
Schreiben Sie keine Anwendungen, die Authentifizierungsinformationen direkt von Benutzern erfassen.
-
Select-Jacking verhindern
Vermeiden Sie bei neueren Browsern iFrames während der Autorisierung, indem Sie die Verwendung des
X-FRAME-OPTIONS-Headers erzwingen.Bei älteren Browsern können JavaScript-Frame-Busting-Techniken verwendet werden, sind jedoch möglicherweise nicht in allen Browsern wirksam.
-
Verwendung von Kennwortzugangsdaten des Ressourceneigentümers vermeiden
Mit dem Ablauf des Ressourceneigentümers kann ein Client ein Zugriffstoken mit der ID, dem Kennwort und den eigenen Zugangsdaten eines Endbenutzers anfordern. Dieser Fördermitteltyp birgt ein höheres Risiko, da:-
Es ist für die Erfassung der Benutzerzugangsdaten in der Clientanwendung verantwortlich (wartet das UID/Passwort-Anti-Muster).
-
Es wird kein Einwilligungsbildschirm für Umfangsanforderungen angezeigt.
Vermeiden Sie die Verwendung dieses Zuteilungstyps außer aus Migrationsgründen.
-
-
Header
Cache-Control="no-store"verwendenDieser Header minimiert das Risiko, authentifizierte Inhalte nicht zu schützen und vertrauliche Daten in HTTP-Proxys zu verlieren.
-
Anforderungen mit sensiblen Informationen vermeiden, die mit URL-Parametern gesendet werden
Die URL-Parameter (in GET-Anforderungen verwendet) können in jeder beliebigen Komponente zwischen Anwendungen wie Anwendungslogs, Proxyservern, Firewalls und Netzwerk-Edge-Komponenten protokolliert werden.
Identitätsdomains implementieren alternative Such-REST-Endpunkte mit POST, die dieses Risiko adressieren. Weitere Informationen finden Sie auf der Seite Abfrageparameter.