oAuth2 und ClientCredentials für API sinnvoll?

Thallius

Top Contributor
Hallo,

Ich arbeite schon länger mit oAuth2 und finde es auch im Prinzip eine gute Sache, wenn man es erstmal kapiert hat. Allerdings hatte ich bisher immer den Fall, dass ich den Token also AuthorizationCode angefordert habe, was ja mit callbacks etc. funktioniert und dadurch eine starke Absicherung erzeugt wird.

Jetzt habe ich das erste mal, dass ich den Token für eine API anfordere als ClientCredential. Hier frage ich mich echt, wo da der Sinn liegt. Ich mache ja nichts anderes als einen Request mit BasicAuth an den Auth Server und bekomme einen Auth Token zurück. Mit diesem Token kann ich dann die API ansprechen.

Da kann man aber doch auch gleich die API mit einem Login versehen und einer SessionId arbeiten.

Wo liegt denn hier der Vorteil des oAuth?

Gruß

Claus
 

httpdigest

Top Contributor
Zwei Worte: "Single Responsibility" und "Single Sign-On".
Wenn dein Service-Netzwerk sagen wir mal aus 20 Services besteht, die per API Gateway von einem Client angesprochen werden, dann möchtest du doch nicht den Client/Browser/User 20 Mal auffordern, für jeden einzelnen Service sich mit irgendwelchen Credentials (Benutzername/Passwort) anzumelden und jeder Service sich diese Authentisierungs-Information in irgendeinem eigenen SessionToken/Cookie/Header/Payload oder sonstwas merkt, die dann vom API Gateway irgendwie orchestriert werden müssen. Der Benutzer soll sich bitte nur ein einziges Mal anmelden und die Information, dass er angemeldet/authentisiert ist, soll nur ein einziges Mal vorliegen und in einer Form, die für alle Services dieselbe ist (also etwa als JWT Token). Dieser Token soll dann auch bitte nur von einem einzelnen Authentication Provider erzeugt werden (etwa per LDAP gegen ein ActiveDirectory oder sonstigen Identity Provider). Du möchtest hier auch nicht, dass jeder der 20 Services als LDAP Client agiert und die einzelnen Services bei einem Authentication/Identity Provider anfragen, ob der Benutzer der ist, für den er sich (per Credentials, Username/Passwort, irgendwas) ausgibt. Das sieht man in so vielen Unternehmensarchitekturen. Jede Anwendung ist quasi ein eigener LDAP Client und dieses Pattern erlaubt absolut keine Orchestrierung der Services (wenn man etwa in Richtung Microservices-Architektur gehen will).
Es gibt noch viele andere Vorteile, wie etwa, dass der OAuth2 Token mit einer kontrollierbaren Ablaufzeit versehen werden kann, was für ein Username/Passwort eventuell schwerer zu realisieren ist. OAuth2 entkoppelt also die Information, dass ein Benutzer authentisiert ist von der Information, wie sich ein Benutzer denn authentisieren kann.
 

Thallius

Top Contributor
Naja,

Der erste Punkt stimmt in dem Fall wo die Services durch den gleichen Dienst gehen. Wenn aber die Webservices alle von anderen Anbietern kommen hast damit nichts gewonnen.

Eine sessionId hat auch eine definierte Ablaufzeit. Das ist jetzt keine Neuerung eines Tokens.

Gruß

Claus
 

httpdigest

Top Contributor
Eine sessionId bekommst du aber erst dann, wenn du dich - wie gesagt - bei einem Service erstmal authentisierst. Das möchte man aber im optimalen Fall nicht, sondern sich nur _einmal_ gegen einen Identity Provider authentisieren und dieser stellt einem ein Token aus, welches die Authentizität desjenigen, der den Token besitzt, beweist. Natürlich müssen da aber alle Services dann auch mitspielen, also OAuth2-fähig sein. Wenn dein Service, der mit sessionIds arbeitet, das nicht ist, dann geht da OAuth2 natürlich nicht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Plugins entwickeln für ein CMS welches unter der GPL V3 steht Softwareentwicklung 1
I Datenbankschema für Versionierung der Tabellen Softwareentwicklung 9
R Datenstruktur für einen rätselhaften Namen Softwareentwicklung 10
Rahim Post Conditions für InsertAt und remove Softwareentwicklung 1
P Thema für meine Projektarbeit die etwas mit Webautomatisierung zu tuen haben soll? Softwareentwicklung 1
H Entwurfsmuster für den Client der Rest API Softwareentwicklung 0
D Welche Technologien für App und web? Softwareentwicklung 3
S Welche Programmiersprache für eine 3D-Software? Softwareentwicklung 6
N Technologie Grundlagen für eine "App" Softwareentwicklung 12
OnDemand Welches Tool für Planung Softwareentwicklung 2
B Sprache für 3D Physics Engine? Softwareentwicklung 3
K Maßnahmen für Softwarequalität Softwareentwicklung 2
N Graphenalgorithmen: Best Practice für Knoten-/Kanten-Attribute Softwareentwicklung 5
Z Analysemuster - Welches nehme ich für diese Problem? Softwareentwicklung 0
L Softwareentwicklung für Embedded Systems Softwareentwicklung 1
T Gibt es eine Software die Texte für Skype automartisch (automassage) sendet ? Softwareentwicklung 4
R Online-Plattform für Essensbestellungen mit der momentanen Bestellverfolgung Softwareentwicklung 1
S Suche: (Versionierungs)Tool für Klassenaustausch mit Kollegen, die auch an dem Projekt arbeiten Softwareentwicklung 5
R UML-Diagramm für mehrere JFrames Softwareentwicklung 0
S Algorithmus für perfekte Kombination Softwareentwicklung 2
U Individualsoftware - eine Gefahr für Kunden oder die günstigere Alternative? Softwareentwicklung 7
J Grafiken für eigene Apps ? Softwareentwicklung 2
V [Klassendesgin] Verhalten von Subklassen für Aufgabenteilung benutzen. Softwareentwicklung 2
KranzKrone Architektur für einfaches Gui Programm Softwareentwicklung 6
R freie Engine für IOS, Android, Blackberry Softwareentwicklung 11
T SMART für USB Sticks? Softwareentwicklung 9
BinaryLogic Software für Projektplanung und -Entwicklung Softwareentwicklung 19
A MVC & getter für GUI Komponenten Softwareentwicklung 5
S Abstractes/Schnittstellen für Objekte Softwareentwicklung 8
fastjack Welches Tool für Agile Softwareentwicklung? Softwareentwicklung 6
C Wiki für ein Uni - High Level Design Softwareentwicklung 5
S Design Pattern für zwei abhängige Klassen Softwareentwicklung 8
Mike90 Lizenz für eigene software Softwareentwicklung 9
V Welche Programmisprache für den Desktop? Softwareentwicklung 17
V Zeitplanung für JUnit-Tests? Softwareentwicklung 9
Jay_030 Checkstyle: Lösungsvorschläge für Design for Extension Softwareentwicklung 7
B Allgemeine Fragen für eigenes Projekt Softwareentwicklung 4
P Sensibilität für Codequalität fördern Softwareentwicklung 17
B Empfehlung für Datenbankschulung? Softwareentwicklung 2
D Beispiele für Patterns Softwareentwicklung 3
K Aufwandsabschätzung für User Stories Softwareentwicklung 8
Torres SDK für automatische Bildkorrektur Softwareentwicklung 3
martin82 Tool für IT-Requests Softwareentwicklung 5
Z Welche Software für Web Anwendungen/Spiel Softwareentwicklung 3
Quaxli Suche Tutorial für Jasper Report - speziell iReport Softwareentwicklung 8
Outsourcer Webservertechnologie für Objekterkennung Softwareentwicklung 7
Landei SSH für VMware GSX mit Windows? Softwareentwicklung 2
ARadauer jetzt wirds zeit für Delphi Softwareentwicklung 6
X JavaScript Plugin für Eclipse Softwareentwicklung 3
sparrow Welche Lizenz für ein offenes Programm Softwareentwicklung 2
ARadauer Code Konvention für Datenbanken Softwareentwicklung 5
G Suche Programm für Masken Design für Pflichtenheft Softwareentwicklung 5
S Wie weiter gehen und tutorial für MVC Softwareentwicklung 20
G Pattern für Datenbank Anwendung Softwareentwicklung 22
m@nu Anti-Spam-System für Blog bauen Softwareentwicklung 3
B Was ist besser für Grafiken? Java oder C#? Softwareentwicklung 9
N Brauche Hilfe für Onlineshop Aufgabe für OOP Grundlagen Softwareentwicklung 4
N Für und Wieder von Java und .NET (primär C#) | Performance Softwareentwicklung 6
G 1 Benutzeroberfläche für 3 einzelne Programme! Softwareentwicklung 9
D Programme für UML Softwareentwicklung 3
A Was ist die richtige Lizenz für mich? Softwareentwicklung 2
R Tool für Anforderungsermittlung, Bugtracking und Test Softwareentwicklung 4
V Antwort bewerten (Nur etwas für Experten!) Softwareentwicklung 15
D cheat für ein spiel fixen Softwareentwicklung 19
F IDE für VB Softwareentwicklung 4
K Design Pattern für einen simple Rechenmaschine Softwareentwicklung 18
S Beispiel für MVC gesucht Softwareentwicklung 53
F Kleines Programm für Windows Softwareentwicklung 2
K Buch oder Online-Tutorium für Programmentwicklung (Anfänge) Softwareentwicklung 5
G Bitte Hilfe für mySQL in einem Query Softwareentwicklung 7
J Beispiel für Besuchermuster Softwareentwicklung 6
M Übersetzer für Programmhilfe gesucht Softwareentwicklung 2
M Disclaimer für eigene Programme? Softwareentwicklung 3
U Geeignete Plattform für Projekt (JSP, PHP, Java-Anwendung) Softwareentwicklung 7
S Open Source Software für UML Softwareentwicklung 8
R Ein Thread für eine Methode Softwareentwicklung 2
S Hilfe für anfänger Softwareentwicklung 7
I regualar expression für Konstruktoren Softwareentwicklung 4
T Brauche für meinen Java-Code dringend Hilfe Softwareentwicklung 4
B Wo bekommt man fertige Java-Programme (z.B. für Lsg LGS) Softwareentwicklung 3

Ähnliche Java Themen

Neue Themen


Oben