2017-02-12 2 views
1

Wir haben OAuth-Token-Generation mit Spring, die Benutzername/Passwort/ClientId/Secret akzeptiert, die perfekt funktioniert. Für den externen Client benötigen wir nur eine Eingabe als Benutzername und Passwort und erzeugen OAuth Token.Spring OAuth2 Token ohne ClientId und ClientSecret für externe Clients

Unten ist der neue Code, den wir hinzufügen müssen, aber es fragt nach Benutzername und Passwort im Browser.

Bitte geben Sie an, ob wir OAuth ohne clientId generieren und intern clientId übergeben können, um OAuth zu generieren.

Antwort

1

Sie können ein OAuth-Token niemals ohne eine clientId generieren! Oauth2 hat 3 Möglichkeiten, ein Token zu erstellen, Implicit, Code und user/pass. Der letzte sollte vermieden werden, da dies bedeutet, dass der Oauth-Client Zugriff auf die Anmeldeinformationen des Benutzers erhält und OAuth wurde genau dafür gebaut. Implizite Token werden nur mit den Anmeldeinformationen des Benutzers erteilt (normalerweise nur mit dem Browser). Im Code-Modus erhielt der OAuth-Client einen Code (sollte nicht in einem Browser sein), der dann zu einem Token ausgetauscht wird. Der Code zum Token-Austausch erfordert, dass sich der Oauth-Client authentifiziert, indem er seine clientId und einen geheimen Schlüssel verwendet. Dies geschieht normalerweise mithilfe der Standardauthentifizierung.

+0

Einverstanden auf Ihren Punkt, aber was ich erreichen möchte, ist die Token-Generierung mit intern übergebenen clientId, wo Benutzer nur Benutzername und Passwort mit Spring Security Xml-Konfiguration übergeben. – Rahul

+0

Sprechen Sie über die Ausgabe eines impliziten Tokens? Mit der Implicit-Berechtigung leitet der Oauth-Client den Browser des Benutzers zu/oauth/authorize auf dem Server um. Diese URL ist geschützt, sodass der Browser auf die Anmeldeseite umgeleitet wird und der Benutzer sich mithilfe der formularbasierten Authentifizierung authentifiziert. Nach der Anmeldung wird dem Browser die Genehmigungsseite angezeigt und der Benutzer genehmigt den Zugriff für die von der Client-ID angegebene Anwendung. Der OAuth-Client sollte niemals die Anmeldeinformationen anzeigen, sondern nur den vertrauenswürdigen OAuth-Server. Anderenfalls ist die Verwendung von OAuth nicht erforderlich. –

0

Ich denke, was Sie brauchen, ist Ressourcentyp Besitzer Passwort Zuschuss, die in https://tools.ietf.org/html/rfc6749#section-1.3.3

Ressourcen Besitzer Passwort Erteilung Typ nur verwendet werden, sollten mit den vertrauenswürdigen Kunden erklärt. Wenn also der externe Client, über den Sie sprechen, ein vertrauenswürdiger Client ist (wie eine native mobile App, die von derselben Firma entwickelt wurde, z. B. Facebook Mobile App), kann diese verwendet werden.

Flow erklärt in https://tools.ietf.org/html/rfc6749#section-4.3.1

Der wichtigste Aspekt der Ressourcentyp Besitzer Zuschuss ist Kunde sollte Namen und das Passwort nicht speichern Benutzer.

Verwandte Themen