Deze component biedt de OAuth2-protocolimplementatie in servercomponenten.
Deze component biedt de OAuth2-protocolimplementatie in servercomponenten.
De servercomponenten hebben een eigenschap genaamd Authorization.OAuth.OAuth2 waaraan u een instantie van TsgcHTTP_OAuth2_Server kunt toewijzen; als Authentication is ingeschakeld en de OAuh2-eigenschap is gekoppeld aan de OAuth2 Server-component, vereisen de WebSocket- en HTTP-verzoeken een Bearer-token om te worden verwerkt; anders wordt de verbinding automatisch gesloten.
OAuth2 := TsgcHTTP_OAuth2_Server.Create(nil);
Server.Authentication.Enabled := True;
Server.Authentication.OAuth.OAuth2 := OAuth2;
De server ondersteunt de volgende autorisatietypen:
- auth2Code: Wordt gebruikt voor authenticatie en autorisatie in de meeste applicatietypen, inclusief single page applications, webapplicaties en native geïnstalleerde applicaties. De stroom stelt apps in staat veilig access_tokens te verkrijgen die kunnen worden gebruikt om beveiligde resources te benaderen, evenals refresh tokens voor aanvullende access_tokens en ID-tokens voor de aangemelde gebruiker.
- auth2ClientCredentials: Dit type toekenning wordt vaak gebruikt voor server-naar-server-interacties die op de achtergrond moeten plaatsvinden, zonder directe interactie met een gebruiker. Dit soort toepassingen wordt vaak aangeduid als daemons of serviceaccounts.
- password (Resource Owner Password Credentials): Hiermee kan een applicatie de gebruiker aanmelden door hun inloggegevens rechtstreeks te verwerken. De client stuurt de gebruikersnaam en het wachtwoord van de gebruiker naar het tokeneindpunt.
- urn:ietf:params:oauth:grant-type:device_code (Apparaatcode): Device Authorization Grant per RFC 8628. Stelt invoerbeperkte apparaten (smart-tv's, IoT-apparaten) in staat gebruikersautorisatie te verkrijgen doordat de gebruiker autoriseert via een secundair apparaat.
The Autorisatie type can be customized when registering the App, standaard, alle autorisatie types are ondersteund.
Eindpunten
Standaard is het component geconfigureerd met de volgende eindpunten om Autorisatie- en Token-verzoeken af te handelen
Autorisatie: /sgc/oauth2/auth
Token: /sgc/oauth2/token
Intrekking: /sgc/oauth2/revoke
Introspectie: /sgc/oauth2/introspect
Apparaatautorisatie: /sgc/oauth2/device
Apparaatverificatie: /sgc/oauth2/device/verify
Als de server luistert op poort 443 en het domein www.esegece.com is, zijn de eindpunten:
Autorisatie: https://www.esegece.com/sgc/oauth2/auth
Token: https://www.esegece.com/sgc/oauth2/token
Revocation: https://www.esegece.com/sgc/oauth2/revoke
Introspectie: https://www.esegece.com/sgc/oauth2/introspect
Device Authorization: https://www.esegece.com/sgc/oauth2/device
Apparaatverificatie: https://www.esegece.com/sgc/oauth2/device/verify
De endpoints kunnen worden geconfigureerd in de eigenschap OAuth2Options.
Standaard is PKCE (een uitbreiding op de Authorization Code flow om CSRF- en autorisatiecodeinjectie-aanvallen te voorkomen) ingeschakeld.
Configuratie
Before u kunt begin the OAuth2 process, u dient register which Apps will be beschikbaar, this is done using Apps property of OAuth2 server component.
Register App
Gebruik Apps.AddApp om een nieuwe toepassing toe te voegen aan de OAuth2-server; u moet de volgende parameters instellen:
- App-naam:
is de naam van de applicatie. Voorbeeld: MyApp
- RedirectURI:
is waar de antwoorden naartoe worden omgeleid. Voorbeeld: http://127.0.0.1:8080
- ClientId:
is openbare informatie en is het ID van de client.
- ClientSecret:
must be kept confidential.
U kunt optioneel de volgende parameters instellen:
- ExpiresIn:
standaard is 3600 seconden, zodat het token na 1 uur verloopt;
u kunt een grotere waarde instellen als u dat nodig heeft.
- RefreshToken: standaard worden vernieuwingstokens ondersteund; als dit niet het geval is, stelt u deze parameter in op false.
- AllowedGrantTypes: standaard worden alle granttypes ondersteund (auth2Code en auth2ClientCredentials), maar de server kan worden geconfigureerd om alleen Code Autorisatie of alleen Client Credentials toe te staan.
App Verwijderen
Gebruik Apps.RemoveApp om een bestaande app te verwijderen.
AddToken
Als de server opnieuw is opgestart terwijl er tokens waren uitgevaardigd, kunt u deze tokens herstellen met de methode AddToken voordat u de OAuth2-server start en nadat u de apps hebt geregistreerd
- AppName: de naam van de toepassing.
- Token: toegangstoken.
- Expires: wanneer het token verloopt.
- RefreshToken: vernieuwingstoken.
RemoveToken
Verwijdert een reeds uitgegeven token.
OAuth2Options
De eigenschap OAuth2Options maakt het mogelijk de servereindpunten en optionele functies te configureren.
Intrekking
Tokenintrekking per RFC 7009. Wanneer ingeschakeld kunnen clients eerder uitgegeven toegangs- of verversingstokens intrekken.
- OAuth2Options.Revocation.Enabled: stel in op True om het intrekkingseindpunt in te schakelen.
- OAuth2Options.Revocation.URL: het URL-pad van het eindpunt. Standaard: /sgc/oauth2/revoke
Introspectie
Token-introspectie per RFC 7662. Wanneer ingeschakeld kunnen resourceservers de autorisatieserver bevragen om de actieve toestand en metadata van een token te bepalen.
- OAuth2Options.Introspection.Enabled: stel in op True om het introspectie-eindpunt in te schakelen.
- OAuth2Options.Introspection.URL: het URL-pad van het eindpunt. Standaard: /sgc/oauth2/introspect
DeviceAuthorization
Apparaatautorisatietoekenning per RFC 8628. Wanneer ingeschakeld, kunnen apparaten met beperkte invoer autorisatie aanvragen doordat de gebruiker op een secundair apparaat autoriseert.
- OAuth2Options.DeviceAuthorization.Enabled: stel in op True om het apparaatautorisatie-eindpunt in te schakelen.
- OAuth2Options.DeviceAuthorization.URL: het eindpuntpad voor apparaatcode-verzoeken. Standaard: /sgc/oauth2/device
- OAuth2Options.DeviceAuthorization.VerificationURL: het URL-pad van het eindpunt voor de gebruikersverificatiepagina. Standaard: /sgc/oauth2/device/verify
- OAuth2Options.DeviceAuthorization.ExpiresIn: de levensduur in seconden van de apparaatcode. Standaard: 600 (10 minuten).
- OAuth2Options.DeviceAuthorization.Interval: het minimale pollinginterval in seconden dat de client moet gebruiken bij het pollen van het tokeneindpunt. Standaard: 5.