diff --git a/src/highlanderticketing/go.mod b/src/highlanderticketing/go.mod
index a3d928838ae93473b96e230e182a63892d326f71..442c668bd6498691f7998b87d59e3e00c1b2f548 100644
--- a/src/highlanderticketing/go.mod
+++ b/src/highlanderticketing/go.mod
@@ -6,7 +6,6 @@ require (
 	github.com/joho/godotenv v1.5.1
 	github.com/nats-io/nats.go v1.27.1
 	golang.org/x/oauth2 v0.9.0
-	google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc
 )
 
 require (
@@ -32,6 +31,7 @@ require (
 )
 
 require (
+	github.com/dgrijalva/jwt-go v3.2.0+incompatible
 	github.com/gorilla/mux v1.8.0
 	github.com/sirupsen/logrus v1.9.3
 	go.mongodb.org/mongo-driver v1.11.7
diff --git a/src/highlanderticketing/go.sum b/src/highlanderticketing/go.sum
index 2e4506c29499569d6d8fe7131d2390352119830c..ab1e0c32aedf6b58739c90b12d316f49d1775018 100644
--- a/src/highlanderticketing/go.sum
+++ b/src/highlanderticketing/go.sum
@@ -3,6 +3,8 @@ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1h
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
+github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
 github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
diff --git a/src/highlanderticketing/handler/oauth.go b/src/highlanderticketing/handler/oauth.go
index ed080a7de5bddcea96882d62421bb5fe63557007..a861404d7894c3a3e183be98cb325e8710946163 100644
--- a/src/highlanderticketing/handler/oauth.go
+++ b/src/highlanderticketing/handler/oauth.go
@@ -5,14 +5,18 @@ import (
 	"fmt"
 	"io"
 	"net/http"
+	"time"
 
 	log "github.com/sirupsen/logrus"
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/config"
 	"gitlab.reutlingen-university.de/ege/highlander-ticketing-go-ss2023/src/highlanderticketing/service"
 
+	"github.com/dgrijalva/jwt-go"
 	"golang.org/x/oauth2"
 )
 
+var secretKey = []byte("mysecretkey")
+
 func HandleLogin(w http.ResponseWriter, r *http.Request) {
 	oauthConfig := config.GetOAuthConfigLogin()
 	url := oauthConfig.AuthCodeURL("state", oauth2.AccessTypeOffline)
@@ -44,6 +48,7 @@ func HandleCallbackRegister(w http.ResponseWriter, r *http.Request) {
 }
 
 func HandleCallbackLogin(w http.ResponseWriter, r *http.Request) {
+
 	oauthConfig := config.GetOAuthConfigLogin()
 	code := r.URL.Query().Get("code")
 	token, err := oauthConfig.Exchange(context.Background(), code)
@@ -58,29 +63,52 @@ func HandleCallbackLogin(w http.ResponseWriter, r *http.Request) {
 		sendJson(w, err)
 		return
 	}
-	_, errUser := service.GetUserByEmail(user.Email)
+	userfound, errUser := service.GetUserByEmail(user.Email)
 	if errUser != nil {
 		sendJson(w, err)
 		sendJson(w, "user nicht registriert")
 		return
 	}
-	sendJson(w, token.AccessToken)
+
+	tokenJwt := jwt.New(jwt.SigningMethodHS256)
+	claims := tokenJwt.Claims.(jwt.MapClaims)
+	claims["username"] = userfound.Email
+	claims["exp"] = time.Now().Add(time.Hour * 24).Unix()
+
+	tokenString, err := tokenJwt.SignedString(secretKey)
+	if err != nil {
+		w.WriteHeader(http.StatusInternalServerError)
+		return
+	}
+
+	fmt.Fprintf(w, "Login erfolgreich")
+	sendJson(w, tokenString)
 }
 
 func CheckAccessToken(w http.ResponseWriter, r *http.Request, needAdmin bool) error {
-	token, err := getBearerToken(r)
+	tokenString, err := getBearerToken(r)
 	if err != nil {
 		return err
 	}
-	valid, err := service.ValidateGoogleAccessToken(token)
+
+	token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) {
+		return secretKey, nil
+	})
+
 	if err != nil {
+		w.WriteHeader(http.StatusUnauthorized)
+		fmt.Fprint(w, "Ungültiges Authorization-Token")
 		return err
 	}
-	if valid != true {
-		return nil
+	var username string
+	if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
+		username = claims["username"].(string)
+	} else {
+		w.WriteHeader(http.StatusUnauthorized)
+		fmt.Fprint(w, "Ungültiges Authorization-Token")
 	}
 	if needAdmin {
-		err := checkAdmin(token)
+		err := checkAdmin(username)
 		if err != nil {
 			return err
 		}
@@ -88,12 +116,8 @@ func CheckAccessToken(w http.ResponseWriter, r *http.Request, needAdmin bool) er
 	return nil
 }
 
-func checkAdmin(token string) error {
-	userExternal, err := service.GetUserInfoByToken(token)
-	if err != nil {
-		return err
-	}
-	user, err := service.GetUserByEmail(userExternal.Email)
+func checkAdmin(userEmail string) error {
+	user, err := service.GetUserByEmail(userEmail)
 	if err != nil {
 		return err
 	}