Hasura
Vor der Integration müssen wir Casdoor lokal bereitstellen.
Dann können wir schnell eine Casdoor-basierte Anmeldeseite in unserer eigenen App mit den folgenden Schritten implementieren.
Casdoor-Anwendung konfigurieren
- Erstellen oder verwenden Sie eine bestehende Casdoor-Anwendung.
- Fügen Sie eine Weiterleitungs-URL hinzu:
http://CASDOOR_HOSTNAME/login
- Kopieren Sie die Client-ID; wir werden sie in den folgenden Schritten benötigen.
Einen Benutzer in Casdoor hinzufügen
Jetzt haben Sie die Anwendung, aber keinen Benutzer. Das bedeutet, dass Sie einen Benutzer erstellen und ihm eine Rolle zuweisen müssen.
Gehen Sie zur Seite "Benutzer" und klicken Sie oben rechts auf "Benutzer hinzufügen". Das öffnet eine neue Seite, auf der Sie den neuen Benutzer hinzufügen können.
Speichern Sie den Benutzer, nachdem Sie einen Benutzernamen hinzugefügt und die Organisation Hasura hinzugefügt haben (andere Details sind optional).
Jetzt müssen Sie ein Passwort für Ihren Benutzer einrichten, was Sie tun können, indem Sie auf "Passwort verwalten" klicken.
Wählen Sie ein Passwort für Ihren Benutzer und bestätigen Sie es.
Die Hasura-App erstellen
Starten Sie Hasura mit Docker oder Hasura Cloud.
Erstellen Sie jetzt eine users
-Tabelle mit den folgenden Spalten:
id
vom Typ Text (Primärschlüssel)username
vom Typ Text
Beziehen Sie sich für Referenzen auf das Bild unten.
Der nächste Schritt ist die Erstellung einer user
-Rolle für die App. Benutzer sollten nur ihre eigenen Datensätze sehen können, aber nicht die von anderen Personen.
Konfigurieren Sie die user
-Rolle wie im Bild unten gezeigt. For more information, read about configuring permission rules in Hasura.
Auf diese Weise können Benutzer die Datensätze anderer Personen nicht lesen. Sie können nur auf ihre eigenen zugreifen.
Für Testzwecke fügen Sie einen Dummy-Benutzer hinzu. Dies soll sicherstellen, dass Sie, wenn Sie das JWT-Token verwenden, nur die Details Ihres Benutzers sehen und nicht die Details anderer Benutzer.
Jetzt müssen Sie das JWT_SECRET
in Hasura einstellen.
Hasura mit Casdoor konfigurieren
In diesem Schritt müssen Sie das HASURA_GRAPHQL_JWT_SECRET zu Hasura hinzufügen.
Dazu gehen Sie zur Hasura docker-compose.yaml und fügen dann das neue HASURA_GRAPHQL_JWT_SECRET
wie unten beschrieben hinzu.
Das HASURA_GRAPHQL_JWT_SECRET
sollte im folgenden Format sein. Denken Sie daran, <Casdoor-Endpunkt>
durch Ihre eigene Casdoor-URL zu ändern (wie https://door.casdoor.com
)
HASURA_GRAPHQL_JWT_SECRET: '{"claims_map": {
"x-hasura-allowed-roles": {"path": "$.roles"},
"x-hasura-default-role": {"path": "$.roles[0]"},
"x-hasura-user-id": {"path": "$.id"}
},"jwk_url":"<Casdoor endpoint>/.well-known/jwks"}'
Speichern Sie die Änderung und laden Sie den Docker neu.
Das JWT-Token abrufen
Da es keine Client-Implementierung gibt, können Sie Ihr Zugriffstoken erhalten, indem Sie eine Anfrage mit der unten stehenden URL stellen:
http://localhost:8000/login/oauth/authorize?client_id=<client ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&scope=read&state=app-built-in<public certificate>>
Ändern Sie client ID
in die ID, die Sie zuvor kopiert haben, und geben Sie das öffentliche Zertifikat von Casdoor ein, das Sie auf der Casdoor-Zertifikatsseite finden können.
Geben Sie dann den Benutzernamen und das Passwort ein, das Sie zuvor für Hasura erstellt haben.
"Anmelden" klicken
Gehen Sie zurück zur Casdoor/Token-Seite.
Finden Sie den Benutzernamen, den Sie zuvor eingegeben haben, und klicken Sie dann auf "bearbeiten"
Das Zugriffstoken kopieren
Jetzt können Sie das Zugriffstoken verwenden, um die authentifizierte Anfrage zu stellen. Hasura gab den entsprechenden Benutzer zurück, anstatt alle Benutzer aus der Datenbank zurückzugeben.