An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.
Voir aussi : Single Sign-On
RFC:
Diagram source from postman.com.
Implicit flow n'est pas sécurisé car le token est passé dans l'url et peut donc être volé. Il faut donc éviter de l'utiliser ou au pire seulement pour accéder au profile de l'utilisateur identifié. Public clients such as native apps and JavaScript apps should now use the authorization code flow with the PKCE extension instead.
J'ai fait un PoC là: https://git.artefacts.coop/Cyrille37/sso-oauth-implicit-grant
Diagram source from postman.com.
Proof Key for Code Exchange (PKCE).
OAuth 2.0: Implicit Flow is Dead, Try PKCE Instead
Diagram source from postman.com.
Token Introspection
Question “What about oauth "introspection" ?” posée sur le Github de SocialiteProviders et sur flutter_appauth ainsi que sur StackOverFlow.
PKCE is not a replacement for client secret, it's not a client application authentication method. It's an additional verification mechanism to protect authorization code to from being stolen from user agent (browser). See RFC 7636.
Apple est moins couramment utilisé, peut être à cause de ses spécificités
To use Apple sign in, you need a client ID and client secret. You can get them from the Apple Developer Portal / Auth Keys.
To access LinkedIn APIs, a developer app should be created in the LinkedIn’s developer page.
For Individual Developers: API products available to individual developers have a default Company page associated with them and you must select that default Company page to proceed.
Documentation :
Other tools:
3 acteurs: l'App Mobile pour consommer, Le Site/API pour servir et le Fournisseur Tiers pour l'authentification.
On trouve des exemples avec Laravel Socialite pour le site et un package OAuth dans l'App mobile. Mais le site ne vérifie pas la validité du token fourni par l'App Mobile, qui l'a obtenue depuis le fournisseur tiers …
Aussi il n'est pas sécurisé de stocker le client_secret dans l'application.
Exigences:
client_secret dans l'App