diff --git a/authorizer/src/asapo_authorizer/authorization/authorization.go b/authorizer/src/asapo_authorizer/authorization/authorization.go
index ba8e0811453dd42f6affe9ae3be6e17657592747..89cb04564244e16fa533333d389924f593ab7c0f 100644
--- a/authorizer/src/asapo_authorizer/authorization/authorization.go
+++ b/authorizer/src/asapo_authorizer/authorization/authorization.go
@@ -8,21 +8,21 @@ import (
 )
 
 type Auth struct {
-	authHMAC  utils.Auth
+	authUser  utils.Auth
 	authAdmin utils.Auth
 	authJWT   utils.Auth
 }
 
-func NewAuth(authHMAC,authHMACAdmin,authJWT utils.Auth) *Auth {
-	return &Auth{authHMAC,authHMACAdmin,authJWT}
+func NewAuth(authUser,authAdmin,authJWT utils.Auth) *Auth {
+	return &Auth{authUser,authAdmin,authJWT}
 }
 
 func (auth *Auth) AdminAuth() utils.Auth {
 	return auth.authAdmin
 }
 
-func (auth *Auth) HmacAuth() utils.Auth {
-	return auth.authHMAC
+func (auth *Auth) UserAuth() utils.Auth {
+	return auth.authUser
 }
 
 func (auth *Auth) JWTAuth() utils.Auth {
@@ -43,7 +43,7 @@ func subjectFromRequest(request TokenRequest) string {
 	return ""
 }
 
-func (auth *Auth) PrepareAccessToken(request TokenRequest) (string, error) {
+func (auth *Auth) PrepareAccessToken(request TokenRequest, userToken bool) (string, error) {
 	var claims utils.CustomClaims
 	var extraClaim utils.AccessTokenExtraClaim
 
@@ -55,8 +55,11 @@ func (auth *Auth) PrepareAccessToken(request TokenRequest) (string, error) {
 	uid := xid.New()
 	claims.Id = uid.String()
 
-	return auth.authAdmin.GenerateToken(&claims)
-
+	if userToken {
+		return auth.UserAuth().GenerateToken(&claims)
+	} else {
+		return auth.AdminAuth().GenerateToken(&claims)
+	}
 }
 
 func UserTokenResponce(request TokenRequest, token string) []byte {
diff --git a/authorizer/src/asapo_authorizer/cli/command_test.go b/authorizer/src/asapo_authorizer/cli/command_test.go
index 5fb4e423a6ab73297bb0b1c962c2e19c9d59dbf7..d1aad81b78e2267b69d7593eb150292083ba12e1 100644
--- a/authorizer/src/asapo_authorizer/cli/command_test.go
+++ b/authorizer/src/asapo_authorizer/cli/command_test.go
@@ -20,7 +20,7 @@ var CommandTests = []struct {
 
 func TestCommand(t *testing.T) {
 	outBuf = new(bytes.Buffer)
-	server.Auth = authorization.NewAuth(utils.NewHMACAuth("secret"),utils.NewJWTAuth("secret_admin"),utils.NewJWTAuth("secret"))
+	server.Auth = authorization.NewAuth(utils.NewJWTAuth("secret"),utils.NewJWTAuth("secret_admin"),utils.NewJWTAuth("secret"))
 
 	for _, test := range CommandTests {
 		outBuf.(*bytes.Buffer).Reset()
diff --git a/authorizer/src/asapo_authorizer/cli/create_token.go b/authorizer/src/asapo_authorizer/cli/create_token.go
index 2dc0310190e943f06a7ae834f89e49134a9e6172..b1eba14c9c0e2aa2b4614d223ef84708f658e222 100644
--- a/authorizer/src/asapo_authorizer/cli/create_token.go
+++ b/authorizer/src/asapo_authorizer/cli/create_token.go
@@ -63,12 +63,12 @@ func (cmd *command) CommandCreate_token() (err error) {
 		return err
 	}
 
-	request, err := getTokenRequest(flags)
+	request, userToken, err := getTokenRequest(flags)
 	if err != nil {
 		return err
 	}
 
-	token, err := server.Auth.PrepareAccessToken(request)
+	token, err := server.Auth.PrepareAccessToken(request,userToken)
 	if err != nil {
 		return err
 	}
@@ -78,19 +78,21 @@ func (cmd *command) CommandCreate_token() (err error) {
 	return nil
 }
 
-func getTokenRequest(flags tokenFlags) (request authorization.TokenRequest, err error) {
+func getTokenRequest(flags tokenFlags) (request authorization.TokenRequest, userToken bool, err error) {
 	switch flags.Type {
 	case "user-token":
 		request, err = userTokenRequest(flags)
+		userToken = true
 	case "admin-token":
 		request, err = adminTokenRequest(flags)
+		userToken = false
 	default:
-		return authorization.TokenRequest{}, errors.New("wrong token type")
+		return authorization.TokenRequest{}, false, errors.New("wrong token type")
 	}
 	if err != nil {
-		return authorization.TokenRequest{}, err
+		return authorization.TokenRequest{},false,  err
 	}
-	return request, err
+	return request, userToken, err
 }
 
 
diff --git a/authorizer/src/asapo_authorizer/cli/create_token_test.go b/authorizer/src/asapo_authorizer/cli/create_token_test.go
index e1210201719098fefafd482bf8723d2324717678..3b26cc8d8124cc161013a0b28a08715a719538df 100644
--- a/authorizer/src/asapo_authorizer/cli/create_token_test.go
+++ b/authorizer/src/asapo_authorizer/cli/create_token_test.go
@@ -13,6 +13,7 @@ import (
 
 var tokenTests = []struct {
 	cmd             command
+	key string
 	ok              bool
 	tokenAccessType string
 	tokenSubject    string
@@ -21,24 +22,24 @@ var tokenTests = []struct {
 }{
 // good
 	{command{args: []string{"-type", "user-token", "-beamtime","123","-access-type","read","-duration-days","10"}},
-		true, "read", "bt_123", true,"user token beamtime ok"},
+		"secret_user",true, "read", "bt_123", true,"user token beamtime ok"},
 	{command{args: []string{"-type", "user-token", "-beamline","123","-access-type","read","-duration-days","10"}},
-		true, "read", "bl_123", true,"user token beamline ok"},
+		"secret_user",		true, "read", "bl_123", true,"user token beamline ok"},
 	{command{args: []string{"-type", "admin-token","-access-type","create"}},
-		true, "create", "admin", false,"admin token ok"},
+		"secret_admin",true, "create", "admin", false,"admin token ok"},
 // bad
 	{command{args: []string{"-type", "user-token", "-beamtime","123","-access-type","create","-duration-days","10"}},
-		false, "", "", true,"user token wrong type"},
+		"secret_user",false, "", "", true,"user token wrong type"},
 	{command{args: []string{"-type", "user-token", "-access-type","create","-duration-days","10"}},
-		false, "", "", true,"user token no beamtime or beamline"},
+		"secret_user",false, "", "", true,"user token no beamtime or beamline"},
 	{command{args: []string{"-type", "user-token",  "-beamtime","123","-beamline","1234", "-access-type","create","-duration-days","10"}},
-		false, "", "", true,"user token both beamtime and beamline"},
+		"secret_user",false, "", "", true,"user token both beamtime and beamline"},
 	{command{args: []string{"-type", "admin-token","-access-type","bla"}},
-		false, "", "", false,"admin token wrong type"},
+		"secret_admin",false, "", "", false,"admin token wrong type"},
 }
 
 func TestGenerateToken(t *testing.T) {
-	server.Auth = authorization.NewAuth(utils.NewHMACAuth("secret"),utils.NewJWTAuth("secret_admin"),utils.NewJWTAuth("secret"))
+	server.Auth = authorization.NewAuth(utils.NewJWTAuth("secret_user"),utils.NewJWTAuth("secret_admin"),utils.NewJWTAuth("secret"))
 	for _, test := range tokenTests {
 		outBuf = new(bytes.Buffer)
 		err := test.cmd.CommandCreate_token()
@@ -49,8 +50,13 @@ func TestGenerateToken(t *testing.T) {
 		assert.Nil(t, err, test.msg)
 		var token authorization.TokenResponce
 		json.Unmarshal(outBuf.(*bytes.Buffer).Bytes(), &token)
-		assert.Equal(t, test.tokenSubject, token.Sub, test.msg)
-		assert.Equal(t, test.tokenAccessType, token.AccessType, test.msg)
+
+		claims,_ := utils.CheckJWTToken(token.Token,test.key)
+		cclaims,_:= claims.(*utils.CustomClaims)
+		var extra_claim utils.AccessTokenExtraClaim
+		utils.MapToStruct(cclaims.ExtraClaims.(map[string]interface{}), &extra_claim)
+		assert.Equal(t, test.tokenSubject, cclaims.Subject, test.msg)
+		assert.Equal(t, test.tokenAccessType, extra_claim.AccessType, test.msg)
 		if test.tokenExpires {
 			assert.Equal(t, true, len(token.Expires)>0, test.msg)
 		} else {
diff --git a/authorizer/src/asapo_authorizer/server/authorize.go b/authorizer/src/asapo_authorizer/server/authorize.go
index 89020bf127c793d08acfb010c759a6da98d3d444..160229223ab183e92f1c7a440f593e15a315e6d7 100644
--- a/authorizer/src/asapo_authorizer/server/authorize.go
+++ b/authorizer/src/asapo_authorizer/server/authorize.go
@@ -155,10 +155,10 @@ func needHostAuthorization(creds SourceCredentials) bool {
 func authorizeByToken(creds SourceCredentials) error {
 	var token_expect string
 	if (creds.BeamtimeId != "auto") {
-		token_expect, _ = Auth.HmacAuth().GenerateToken(&creds.BeamtimeId)
+		token_expect, _ = Auth.UserAuth().GenerateToken(&creds.BeamtimeId)
 	} else {
 		key := "bl_" + creds.Beamline
-		token_expect, _ = Auth.HmacAuth().GenerateToken(&key)
+		token_expect, _ = Auth.UserAuth().GenerateToken(&key)
 	}
 
 	var err_string string
diff --git a/authorizer/src/asapo_authorizer/server/authorize_test.go b/authorizer/src/asapo_authorizer/server/authorize_test.go
index c813c38dc80020172f413aa548825851d88351ea..185bf0d7aa96afc052f6d4dbea065b7c6fd3ac26 100644
--- a/authorizer/src/asapo_authorizer/server/authorize_test.go
+++ b/authorizer/src/asapo_authorizer/server/authorize_test.go
@@ -15,9 +15,10 @@ import (
 	"testing"
 )
 
+
 func prepareToken(payload string) string{
 	Auth = authorization.NewAuth(utils.NewHMACAuth("secret"),nil,nil)
-	token, _ := Auth.HmacAuth().GenerateToken(&payload)
+	token, _ := Auth.UserAuth().GenerateToken(&payload)
 	return token
 }
 
diff --git a/authorizer/src/asapo_authorizer/server/folder_token.go b/authorizer/src/asapo_authorizer/server/folder_token.go
index be3d6b7ec7e693f9c67b17913dd6d0ada394f5d7..cd6dd83803645361b805905b3e711bd48f1c4a7b 100644
--- a/authorizer/src/asapo_authorizer/server/folder_token.go
+++ b/authorizer/src/asapo_authorizer/server/folder_token.go
@@ -39,7 +39,7 @@ func folderTokenResponce(token string) []byte{
 }
 
 func checkBeamtimeToken(request folderTokenRequest) error {
-	token_expect, _ := Auth.HmacAuth().GenerateToken(&request.BeamtimeId)
+	token_expect, _ := Auth.UserAuth().GenerateToken(&request.BeamtimeId)
 	var err_string string
 	if request.Token != token_expect {
 		err_string = "wrong token for beamtime " + request.BeamtimeId
diff --git a/authorizer/src/asapo_authorizer/server/issue_token.go b/authorizer/src/asapo_authorizer/server/issue_token.go
index 0623bff1a5858b87b45e2cb293f7c57cce96506e..b86888446152b5ba6f72ca30a1c12abd046e82b2 100644
--- a/authorizer/src/asapo_authorizer/server/issue_token.go
+++ b/authorizer/src/asapo_authorizer/server/issue_token.go
@@ -59,7 +59,7 @@ func issueUserToken(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
-	token, err := Auth.PrepareAccessToken(request)
+	token, err := Auth.PrepareAccessToken(request,true)
 	if err != nil {
 		utils.WriteServerError(w, err, http.StatusInternalServerError)
 		return
diff --git a/authorizer/src/asapo_authorizer/server/issue_token_test.go b/authorizer/src/asapo_authorizer/server/issue_token_test.go
index 2a49803d581b3d7fbc077e996468b2c0134476fb..a6d86446be85031193f5e96306e2ff525b3c4398 100644
--- a/authorizer/src/asapo_authorizer/server/issue_token_test.go
+++ b/authorizer/src/asapo_authorizer/server/issue_token_test.go
@@ -35,7 +35,8 @@ var  IssueTokenTests = [] struct {
 func TestIssueToken(t *testing.T) {
 	authJWT := utils.NewJWTAuth("secret")
 	authAdmin := utils.NewJWTAuth("secret_admin")
-	Auth = authorization.NewAuth(nil,authAdmin,authJWT)
+	authUser := utils.NewJWTAuth("secret_user")
+	Auth = authorization.NewAuth(authUser,authAdmin,authJWT)
 	for _, test := range IssueTokenTests {
 		request :=  makeRequest(authorization.TokenRequest{test.requestSubject,test.validDays,test.role})
 		w := doPostRequest("/admin/issue",request,authAdmin.Name()+" "+test.adminToken)
@@ -43,7 +44,7 @@ func TestIssueToken(t *testing.T) {
 			body, _ := ioutil.ReadAll(w.Body)
 			var token authorization.TokenResponce
 			json.Unmarshal(body,&token)
-			claims,_ := utils.CheckJWTToken(token.Token,"secret_admin")
+			claims,_ := utils.CheckJWTToken(token.Token,"secret_user")
 			cclaims,_:= claims.(*utils.CustomClaims)
 			var extra_claim utils.AccessTokenExtraClaim
 			utils.MapToStruct(claims.(*utils.CustomClaims).ExtraClaims.(map[string]interface{}), &extra_claim)
diff --git a/authorizer/src/asapo_authorizer/server/server_nottested.go b/authorizer/src/asapo_authorizer/server/server_nottested.go
index 20b5da29809048dfa23db28e59e60ea17cd3a1c0..2f428370f6955303d582f7bd22a551cb4dace88c 100644
--- a/authorizer/src/asapo_authorizer/server/server_nottested.go
+++ b/authorizer/src/asapo_authorizer/server/server_nottested.go
@@ -30,7 +30,7 @@ func createAuth() (*authorization.Auth,error) {
 	if err != nil {
 		return nil, err
 	}
-	return authorization.NewAuth(utils.NewHMACAuth(secret), utils.NewJWTAuth(adminSecret), utils.NewJWTAuth(secret)),nil
+	return authorization.NewAuth(utils.NewJWTAuth(secret), utils.NewJWTAuth(adminSecret), utils.NewJWTAuth(secret)),nil
 }
 
 func ReadConfig(fname string) (log.Level, error) {