33K Views

Symfony Rest Api + OAuth2

Updated 16 December 2021

Facebook Linkedin

In dit Artikel zullen we vervolgen onze reis met api ontwikkeling van het gebruik van Oauth2 als Autorisatie Protocol.

Onze Vorige Api ontwikkeling artikelen zijn hieronder te vinden:

  1. Zeep VS Rest
  2. Rest Api

Begrijpen OAuth2:

De OAuth 2.0 toestemming kader kan een toepassing van derden te verkrijgen beperkt toegang tot de HTTP-service, de naam van een resource-eigenaars.

hier zijn een paar links, dat vond ik nuttig:

 

OAuth2 met Symfony:

Symfony biedt FOSOAuthServerBundle, welke gebruikt kan worden voor server-side implementatie van OAuth2.

instructions kan gevonden worden here.

Machtigen en token routes „@FOSOAuthServerBundle/Resources/config/routing/authorize.xml“ & „@FOSOAuthServerBundle/Resources/config/routing/token.xml“, gedefinieerd in de routering.yml zal worden gebruikt voor het toegangstoken generatie.

Een OAuth-Server heeft 3 eindpunten. Elk eindpunt voert een duidelijke functie in de OAuth-proces.

Machtigen Eindpunt – De gebruiker omgeleid hier door de opdrachtgever toestemming geven voor de aanvraag.
Token Eindpunt – De klant een aanvraag doet naar dit eindpunt voor het verkrijgen van een Access Token. Dit is hetzelfde als token URL gedefinieerd in routering.yml.
Bron Eindpunt(en) – De opdrachtgever zorgt voor een geldig toegangsbewijs voor het aanvragen van een resource(s) op dit eindpunt, zoals en/of gebruikers.json.

 

Grant ‚ s in OAuth2:

OAuth2 biedt verschillende Subsidie-types. Deze Subsidie Types staan je toe om bloot meerdere manieren om een klant voor het genereren van een Access Token.

1. De Autorisatie Code:

De autorisatiecode subsidie type wordt gebruikt wanneer de klant wil zijn verzoek toegang tot beschermde bronnen op naam van een andere gebruiker (d.w.z. een 3e partij). Lees meer over de autorisatie code
Voorbeeld Verzoek
Autorisatiecodes zijn opgehaald met behulp van de Machtigen Controller. De client stuurt de gebruiker naar de OAuth-server te Machtigen URL.

Stap 1: ten Eerste, de gebruiker omleiden naar de Machtigen URL:

Een succesvolle aanvraag automatisch doorgeven van de opdrachtgever de autorisatiecode in de URL (de meegeleverde redirect_uri URL) als

Stap 2: na een token kan worden aangevraagd via de autorisatiecode van token url,

Een succesvolle token aanvraag zal terug een standaard access token in JSON formaat:

2. Wachtwoord geven (Resource-eigenaars Toekennen)

Resource Eigenaar van de gebruikersnaam en wachtwoord worden verstrekt bij de aanvraag, en een token wordt uitgereikt na een succesvolle authenticatie.

Succes Verificatie zal resulteren in een access token,

3. Opdrachtgever Referenties Verlenen

De client gebruikt de referenties voor het ophalen van een access token direct toegang tot middelen in het kader van de controle van de cliënt

Opmerking: Access token gegenereerd door de opdrachtgever referenties subsidie kan alleen worden gebruikt voor het lezen van bron. aangezien dergelijke toegangstoken is niet geverifieerd door een gebruiker.

4. Vernieuwen Token Verlenen

Access token(s) heeft een beperkte levensduur. dus, we moeten vernieuwen token is verlopen met het vernieuwen van tokens toegang tokens.

:

Resultaat op een succesvolle aanvraag:

de Aanvraag van een resource-eindpunt:

Als u vragen Beveiligd resource eindpunt in beveiligde api firewall (fos_oauth: true) zonder een access token. dan zal het resultaat in,

voor het aanvragen van een beveiligde bron, toevoegen Authorization koptekst op aanvraag

 

de data terug van symfony controller:

In de bijbehorende controller voor de resource.json data terug

Tips:

  1. Terug geschikt status code, samen met het antwoord.
  2. in Plaats van te vertrouwen op HTTP status code als geheel getal in de code constanten gebruiken van de Reactie klasse.
  3. Als u met behulp van json-antwoord, gebruik dan JsonResponse Klasse in plaats van de Response Klasse.

Voorbeeld:

Wat Meer is:

Nu, je hebt het platform voor het ontwikkelen van Api. dus ga op en ontwikkelen.

Sinds Api is platform-onafhankelijk, zodat het kan worden gebruikt door elke geschikte Api-Client.

Category(s) API uvdesk
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.