Mit Astrina anmelden
Astrina ist der Single-Sign-On-Broker für das Ökosystem. Konfigurieren Sie Ihre sozialen Login-Anbieter einmal in Astrina; jede Seite verwendet sie wieder — keine site-spezifischen OAuth-Apps, keine Anbieter-SDKs.
Vier Hops, und Ihre Seite berührt niemals einen Anbieter
Die Seite sendet den Besucher zu Astrina
Ein Link mit Ihrer client_id, der Rücksendeadresse und einem Statuswert.
Der Besucher wählt ein Konto aus
Jeder Anbieter, der in Astrina aktiviert ist — keine OAuth-App auf Ihrer Seite.
Astrina gibt einen einmaligen Code zurück
Der Code kommt zu Ihrem Callback zurück und läuft in fünf Minuten ab.
Ihr Server tauscht es gegen ein Profil aus
Ein Server-zu-Server-POST gibt sub, E-Mail, Name und Avatar zurück.
Zeigen Sie das Anforderungsdiagramm
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 }Einmalige Eigentümereinrichtung (in Astrina admin)
- Aktivieren Sie die Anbieter im Kontrollpanel (Besitzerzugang).
- Für jeden Anbieter eine OAuth-App in der Konsole dieses Anbieters erstellen und genau diese Umleitungs-URI registrieren: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 - Fügen Sie die Client ID + Secret jeder App ein (Telegram: Bot-Benutzername + Bot-Token), aktivieren Sie Enabled, Speichern.
- Unter Client sites jede Seite registrieren (Name + erlaubte Umleitungs-URLs). Kopieren Sie die
client_id+client_secret, die einmal angezeigt wird.
Integration pro Seite (3 Schritte)
- Kopieren Sie
sdk.phpin die Seite und setzen Sie vier Konstanten: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'; - Fügen Sie die Schaltflächen überall hinzu — eine Schaltfläche "Mit Astrina anmelden" (zeigt den Wähler), oder eine Reihe von direkten Anbieter-Schaltflächen (ein Klick auf Google springt direkt zu Google, keine Wählerseite):
<!-- 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()ruft die Anbieter ab, die Sie in Astrina aktiviert haben, und rendert genau diese, jeder tief verlinkt zum Anbieter. - Erstellen Sie die Callback-Seite (
astrina-callback.php) an der Umleitungs-URL: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;
Das war's — keine OAuth-Apps pro Seite, keine Anbieter-SDKs. Einen neuen Anbieter später hinzuzufügen ist eine einzeilige Änderung in Astrina; jede Seite erhält es automatisch.
sub ist eine stabile, undurchsichtige ID pro Identität. Behandeln Sie die E-Mail als informativ (Telegram gibt keine; Benutzer können sie ändern).
Die Token-Antwort enthält auch ein id_token (JWT HS256, signiert mit Ihrem Client-Geheimnis), wenn Sie es vorziehen, lokal zu verifizieren, anstatt dem JSON zu vertrauen.
Codes sind einmalig und verfallen nach 5 Minuten; state wird sowohl vom SDK als auch von Astrina überprüft.
Klartextreferenz: README.md · sdk.php herunterladen