@startuml
title Oauth examples: Authorization code oauth2 flow
participant JohnDoe
participant Browser
participant RelyingParty
participant AuthServer
JohnDoe -> Browser: GET a-protected-resource 
activate Browser
Browser -> RelyingParty: GET a-protected-resource 
activate RelyingParty

RelyingParty --> Browser: 307 Temporary Redirect
deactivate RelyingParty
Browser -> AuthServer: GET as/authorize 
activate AuthServer

AuthServer --> Browser: 200 OK
deactivate AuthServer
Browser --> JohnDoe: 200 OK
deactivate Browser
JohnDoe -> Browser: POST as/authorize 
activate Browser
Browser -> AuthServer: POST as/authorize 
activate AuthServer

AuthServer --> Browser: 303 See Other
deactivate AuthServer
Browser -> RelyingParty: GET rp/callback 
activate RelyingParty

RelyingParty --> Browser: 307 Temporary Redirect
deactivate RelyingParty
Browser -> RelyingParty: GET a-protected-resource 
activate RelyingParty

RelyingParty --> Browser: 200 OK
deactivate RelyingParty
Browser --> JohnDoe: 200 OK
deactivate Browser
    @enduml