Zum Hauptinhalt springen

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

  1. Erstellen oder verwenden Sie eine bestehende Casdoor-Anwendung.
  2. Fügen Sie eine Weiterleitungs-URL hinzu: http://CASDOOR_HOSTNAME/login Casdoor-Anwendungseinstellung
  3. 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.

Bild zeigt die Benutzerseite

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.

Bild zeigt, wie man eine Tabelle in Hasura erstellt

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. Für weitere Informationen lesen Sie über das Konfigurieren von Berechtigungsregeln in Hasura.

Bild zeigt, wie man Berechtigungen in Hasura einstellt

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.

Bild zeigt, wie man einen Tabelleneintrag in Hasura hinzufügt

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.

Fügen Sie die Clerk JWT URL zu Hasura hinzu

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

Das JWT-Token abrufen

Gehen Sie zurück zur Casdoor/Token-Seite.

Token-Seite

Finden Sie den Benutzernamen, den Sie zuvor eingegeben haben, und klicken Sie dann auf "bearbeiten"

Das Zugriffstoken kopieren

Zugriffstoken

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.

Bild zeigt das Zugriffstoken von Casdoor, das in Hasura verwendet wird