Se connecter avec Astrina
Astrina est le courtier de connexion unique pour l'écosystème. Configurez vos fournisseurs de connexion sociale une fois dans Astrina ; chaque site les réutilise — pas d'applications OAuth par site, pas de SDK de fournisseur.
Quatre sauts, et votre site ne touche jamais un fournisseur
Le site envoie le visiteur à Astrina
Un lien avec votre client_id, l'adresse de retour et une valeur d'état.
Le visiteur choisit un compte
Tout fournisseur activé dans Astrina — pas d'application OAuth de votre côté.
Astrina renvoie un code à usage unique
Le code revient à votre callback et expire dans cinq minutes.
Votre serveur l'échange contre un profil
Un POST serveur à serveur renvoie sub, email, nom et avatar.
Afficher le diagramme de la requête
Site ──(1) redirect──▶ astrina.io/auth/authorize.php ──▶ provider (Google…)
▲ │ │
└──(3) ?code=…&state=… ◀──── astrina.io/auth/cb.php ◀──(2) callback ─┘
│
└──(4) POST code ──▶ astrina.io/auth/token.php ──▶ { sub, email, name, avatar }Configuration unique du propriétaire (dans l'administration d'Astrina)
- Activez les fournisseurs dans le panneau de contrôle (accès propriétaire).
- Pour chaque fournisseur, créez une application OAuth dans la console de ce fournisseur et enregistrez exactement cette URI de redirection :Google
https://astrina.io/auth/cb.php?provider=googleYandexhttps://astrina.io/auth/cb.php?provider=yandexApplehttps://astrina.io/auth/cb.php?provider=appleTelegram@BotFather → /setdomain → astrina.io - Collez le Client ID + Secret de chaque application (Telegram : nom d'utilisateur du bot + jeton du bot), cochez Activé, Enregistrer.
- Sous Sites clients, enregistrez chaque site (nom + URLs de redirection autorisées). Copiez le
client_id+client_secretaffiché une fois.
Intégration par site (3 étapes)
- Copiez
sdk.phpdans le site et définissez quatre constantes :define('ASTRINA_CLIENT_ID', 'astr_xxxxxxxx'); define('ASTRINA_CLIENT_SECRET', '…'); // server-side only, never in JS define('ASTRINA_REDIRECT_URI', 'https://mysite/auth/astrina-callback.php'); require '/path/to/sdk.php'; - Ajoutez les boutons n'importe où — un bouton "Connexion avec Astrina" (affiche le sélecteur), ou une rangée de boutons de fournisseur directs (un clic sur Google vous amène directement à Google, sans page de sélection) :
<!-- one button → Astrina chooser --> <a class="btn" href="<?= htmlspecialchars(AstrinaID::loginUrl()) ?>">Log in with Astrina</a> <!-- OR: direct per-provider buttons + the "Secured by Astrina ID" note --> <?= AstrinaID::buttonsHtml() ?> <!-- OR: hand-rolled, straight to one provider --> <a href="<?= htmlspecialchars(AstrinaID::loginUrl('google')) ?>">Continue with Google</a>buttonsHtml()récupère les fournisseurs que vous avez activés dans Astrina et les rend exactement, chacun étant lié en profondeur au fournisseur. - Créez la page de rappel (
astrina-callback.php) à l'URL de redirection :require 'config.php'; // defines the constants + sdk.php $u = AstrinaID::handleCallback(); if (!$u) { header('Location: /login?e=1'); exit; } // key your local user on ($u['provider'], $u['sub']) — NOT email $local = find_or_create_user($u['provider'], $u['sub'], $u['email'], $u['name'], $u['avatar']); login($local); header('Location: /'); exit;
C'est tout — pas d'applications OAuth par site, pas de SDK de fournisseur. Ajouter un nouveau fournisseur plus tard est un changement d'une ligne dans Astrina ; chaque site l'obtient automatiquement.
sub est un identifiant stable et opaque par identité. Traitez l'email comme informatif (Telegram n'en fournit aucun ; les utilisateurs peuvent le changer).
La réponse du jeton contient également un id_token (JWT HS256 signé avec votre secret client) si vous préférez vérifier localement plutôt que de faire confiance au JSON.
Les codes sont à usage unique et expirent en 5 minutes ; state est vérifié à la fois par le SDK et par Astrina.
Référence en texte clair : README.md · télécharger sdk.php