Ich folgte der in diesem question genannten akzeptierten Antwort, um OAuth2-Token zu generieren. Allerdings bekomme ich HTTP 401 Antwort. Als ich debuggte, sah ich, dass clientid
und clientsecret
nicht als Teil des Formulars in der HTTP-Anfrage übergeben werden. Ich sehe nur die unten aufgeführten Werte. Sollte ich etwas zusätzlich tun, um auch clientid
und clientsecret
zu passieren?ResourceOwnerPasswordResourceDetails - Übergabe von clientid und secret zum Generieren von oauth2 token
Antwort
Ihr Client verwendet standardmäßig das HTTP-Standardauthentifizierungsschema, aber Ihr Server erwartet ein Authentifizierungsschema "Formular".
Ihr Server ist nicht OAuth 2 kompatibel ist, siehe RFC 6749:
2.3.1. Client Passwort
Kunden im Besitz eines Client-Passwortes kann das HTTP Basic Authentifizierungsschema verwenden wie in [RFC2617] mit dem Autorisierungsserver zu authentifizieren. Die Client-ID wird unter Verwendung des Codierungsalgorithmus "application/x-www-form-urlencoded" gemäß Anhang B codiert, und der codierte Wert wird als Benutzername verwendet. Der Client Passwort wird mit dem gleichen Algorithmus codiert und als Passwort verwendet. Der Autorisierungsserver MUSS das HTTP-Basis-Authentifizierungsschema zur Authentifizierung von Clients unterstützen, denen ein Client-Kennwort ausgestellt wurde.
Aber man kann das Authentifizierungsschema Ihres Kunden zu „Form“ ändern, siehe OAuth 2 Developers Guide:
clientAuthenticationScheme:
Das Schema von Ihrem Client verwendet, um den Zugriffstoken Endpunkt zu authentifizieren. Vorgeschlagene Werte: "http_basic" und "form". Standard: "http_basic". Siehe Abschnitt 2.1 der OAuth 2 Spezifikation.
- 1. Spring OAuth2 Token ohne ClientId und ClientSecret für externe Clients
- 2. Spring Security OAuth2 clientId und clientSecret
- 3. OAuth2 und Access Token in SharePoint App
- 4. OAuth: Access Token und Secret speichern
- 5. OAuth2 Token PHP
- 6. OAuth 2.0 Generieren von Token- und geheimen Token
- 7. Verwenden von OAuth2 mit Benutzername und Kennwort
- 8. JwtTokenStore.findTokensByClientId (clientId) immer leer
- 9. Der richtige Platz für oAuth2 clientId & clientSecret
- 10. OAuth Abfrage - mit Zugriff Token und Secret
- 11. Google OAuth2-API-Aktualisierungs-Token
- 12. Wie Token Key und Token Secret an Alamofire-Anfrage übergeben?
- 13. Korrekter Weg, Token/Secret/etc sicher von OAuth zu speichern?
- 14. Grundlegendes zum OAuth2-Clientanmeldungsdatenfluss
- 15. Unable Token von oauth2 Office365 Kalender API
- 16. Problem beim Generieren des Zugriffstokens mithilfe von OAuth2-Dienstkonten
- 17. spring oauth2 token caching
- 18. So generieren Sie Token ohne Client_Secret in Spring Security OAuth2
- 19. oAuth2 JWT Token Validierungsprozess
- 20. ohne einen Zugriffstoken von einem Aktualisierungs-Token Abrufen des clientid und Client-Geheimnis
- 21. LibCurl Funktionen zum Erzeugen von Tokens oder Hash shared-secret
- 22. OAuth2 WebApi Token Ablauf
- 23. Bearer-Token-Client-Seite generieren C#
- 24. Sicherheit - JWT und Oauth2 (Refresh-Token)
- 25. IdentityServer3 - Client und Secret
- 26. OAuth2 Access Token-Format
- 27. OAuth2 Access Token Response
- 28. Best Practices beim Generieren von OAuth-Token?
- 29. Wie OAuth 2 Client Id und Secret
- 30. Deserialisierungstokenfeld von oauth2 JDBCTokenStore
@dur In Header siehe I [Authorization = [Basis Y3RwX2lkOmN0cF9zZWNyZXQ =]] –
Wenn ich es mit Rest-Client ausführen, ich vorbei all diese als Teil des Formkörpers. –
@dur Der Autorisierungsserver wird von einer Drittanbieter-App verwaltet, auf die ich keinen Zugriff habe. Die Client-ID und das Geheimnis sind identisch mit dem, was Sie erwähnt haben. Eine andere Sache, die ich vermute, ist Inhaltstyp. Beim Ausführen mit einem externen Restclient habe ich den Inhaltstyp "application/x-www-form-urlencoded" angegeben. Allerdings habe ich das nicht explizit im Programm festgelegt. Muss ich das tun? –