diff --git a/object/application.go b/object/application.go
index 3be7eca8..4f2659f3 100644
--- a/object/application.go
+++ b/object/application.go
@@ -39,6 +39,7 @@ type Application struct {
ClientId string `xorm:"varchar(100)" json:"clientId"`
ClientSecret string `xorm:"varchar(100)" json:"clientSecret"`
RedirectUris []string `xorm:"varchar(1000)" json:"redirectUris"`
+ TokenFormat string `xorm:"varchar(100)" json:"tokenFormat"`
ExpireInHours int `json:"expireInHours"`
SignupUrl string `xorm:"varchar(200)" json:"signupUrl"`
SigninUrl string `xorm:"varchar(200)" json:"signinUrl"`
diff --git a/object/token_jwt.go b/object/token_jwt.go
index f3c26a9c..9e7035b7 100644
--- a/object/token_jwt.go
+++ b/object/token_jwt.go
@@ -55,6 +55,10 @@ func generateJwtToken(application *Application, user *User, nonce string) (strin
},
}
+ if application.TokenFormat == "JWT-Empty" {
+ claims.User = User{}
+ }
+
token := jwt.NewWithClaims(jwt.SigningMethodRS256, claims)
// Use "token_jwt_key.key" as RSA private key
diff --git a/web/src/ApplicationEditPage.js b/web/src/ApplicationEditPage.js
index 1ff07f65..7534a985 100644
--- a/web/src/ApplicationEditPage.js
+++ b/web/src/ApplicationEditPage.js
@@ -238,6 +238,19 @@ class ApplicationEditPage extends React.Component {
/>
+
+
+ {Setting.getLabel(i18next.t("application:Token format"), i18next.t("general:Token format - Tooltip"))} :
+
+
+
+
+
{Setting.getLabel(i18next.t("general:Token expire"), i18next.t("general:Token expire - Tooltip"))} :
diff --git a/web/src/ApplicationListPage.js b/web/src/ApplicationListPage.js
index 55d09299..447d318f 100644
--- a/web/src/ApplicationListPage.js
+++ b/web/src/ApplicationListPage.js
@@ -70,6 +70,7 @@ class ApplicationListPage extends React.Component {
{name: "Agreement", visible: true, required: true, rule: "None"},
],
redirectUris: ["http://localhost:9000/callback"],
+ tokenFormat: "JWT",
expireInHours: 24 * 7,
}
}