diff --git a/build.gradle b/build.gradle
index c2dbbbc..d027592 100644
--- a/build.gradle
+++ b/build.gradle
@@ -33,6 +33,7 @@
     implementation 'org.springframework.security:spring-security-oauth2-jose'
     implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
     implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
+    implementation 'org.springframework.session:spring-session-data-redis:2.0.10.RELEASE'
     implementation 'org.jetbrains.kotlin:kotlin-reflect'
     implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
 
diff --git a/src/main/java/com/supwisdom/dlpay/ServletInitializer.kt b/src/main/java/com/supwisdom/dlpay/ServletInitializer.kt
index 65545c7..b03a1dc 100644
--- a/src/main/java/com/supwisdom/dlpay/ServletInitializer.kt
+++ b/src/main/java/com/supwisdom/dlpay/ServletInitializer.kt
@@ -6,7 +6,7 @@
 class ServletInitializer : SpringBootServletInitializer() {
 
 	override fun configure(application: SpringApplicationBuilder): SpringApplicationBuilder {
-		return application.sources(DlpayApplication::class.java)
+		return application.sources(PayApiApplication::class.java)
 	}
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java b/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java
index e43e411..86060cf 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java
@@ -28,11 +28,16 @@
   public String generateToken(Map<String, Object> params) throws JoseException {
     JwtClaims claims = new JwtClaims();
     claims.setIssuer(params.get("issuer").toString());  // who creates the token and signs it
+    if (params.get("audience") != null) {
+      claims.setAudience(params.get("audience").toString());
+    }
     claims.setExpirationTimeMinutesInTheFuture(expiration / 60); // time when the token will expire (10 minutes from now)
-    claims.setGeneratedJwtId(); // a unique identifier for the token
+    claims.setGeneratedJwtId();
     claims.setIssuedAtToNow();  // when the token was issued/created (now)
     claims.setNotBeforeMinutesInThePast(2); // time before which the token is not yet valid (2 minutes ago)
-    claims.setSubject(params.get("subject").toString()); // the subject/principal is whom the token is about
+    if (params.get("subject") != null) {
+      claims.setSubject(params.get("subject").toString()); // the subject/principal is whom the token is about
+    }
     /*
     claims.setClaim("email", "mail@example.com"); // additional claims/attributes about the subject can be added
     List<String> groups = Arrays.asList("group-one", "other-group", "group-three");
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/AppClientRedis.java b/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
similarity index 95%
rename from src/main/java/com/supwisdom/dlpay/framework/domain/AppClientRedis.java
rename to src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
index a45f9f3..faee901 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/AppClientRedis.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
@@ -5,7 +5,7 @@
 import javax.persistence.Id;
 
 @RedisHash("app_client")
-public class AppClientRedis {
+public class ApiClientRedis {
   private @Id
   String id;
 
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
index 5f19465..35f2610 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
@@ -6,7 +6,7 @@
 import javax.persistence.Table;
 
 @Entity
-@Table(name = "TT_APICLIENT")
+@Table(name = "TB_APICLIENT")
 public class TApiClient {
   @Id
   @Column(name = "appid", nullable = false, length = 20)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/redisrepo/ApiClientRepository.java b/src/main/java/com/supwisdom/dlpay/framework/redisrepo/ApiClientRepository.java
new file mode 100644
index 0000000..1d48dd1
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/redisrepo/ApiClientRepository.java
@@ -0,0 +1,7 @@
+package com.supwisdom.dlpay.framework.redisrepo;
+
+import com.supwisdom.dlpay.framework.domain.ApiClientRedis;
+import org.springframework.data.repository.CrudRepository;
+
+public interface ApiClientRepository extends CrudRepository<ApiClientRedis, String> {
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/redisrepo/AppClientRepository.java b/src/main/java/com/supwisdom/dlpay/framework/redisrepo/AppClientRepository.java
deleted file mode 100644
index 495a122..0000000
--- a/src/main/java/com/supwisdom/dlpay/framework/redisrepo/AppClientRepository.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.supwisdom.dlpay.framework.redisrepo;
-
-import com.supwisdom.dlpay.framework.domain.AppClientRedis;
-import org.springframework.data.repository.CrudRepository;
-
-public interface AppClientRepository extends CrudRepository<AppClientRedis, String> {
-}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt b/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
similarity index 89%
rename from src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt
rename to src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index c13dae9..b5dd0e5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -16,9 +16,9 @@
 import org.springframework.data.redis.connection.RedisStandaloneConfiguration
 import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration
 import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
-import org.springframework.data.redis.core.RedisKeyValueTemplate
-import org.springframework.data.redis.core.RedisTemplate
 import org.springframework.data.redis.repository.configuration.EnableRedisRepositories
+import org.springframework.security.authentication.ProviderManager
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider
 import org.springframework.security.config.annotation.web.builders.HttpSecurity
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
@@ -53,7 +53,7 @@
                 .readFrom(ReadFrom.SLAVE_PREFERRED)
                 .build()
         val serverConfig = RedisStandaloneConfiguration(server, port)
-        if (!password.isNullOrEmpty()) {
+        if (password.isNotEmpty()) {
             serverConfig.password = RedisPassword.of(password)
         }
         serverConfig.database = database
@@ -74,12 +74,23 @@
         return manager
     }
 
+    @Bean
+    fun daoProvider(detailsService: UserDetailsService): DaoAuthenticationProvider {
+        return DaoAuthenticationProvider().also {
+            it.setUserDetailsService(detailsService)
+        }
+    }
+
+    @Bean
+    fun providerManager(daoProvider: DaoAuthenticationProvider): ProviderManager {
+        return ProviderManager(listOf(daoProvider))
+    }
+
+
     companion object {
         @Configuration
         @Order(1)
         class ApiWebSecurityConfigurationAdapter : WebSecurityConfigurerAdapter() {
-//            @Autowired
-//            private lateinit var clientRegistrationRepository: ClientRegistrationRepository
 
             override fun configure(http: HttpSecurity) {
                 http.authorizeRequests()
@@ -125,8 +136,8 @@
 
 
 @SpringBootApplication
-class DlpayApplication
+class PayApiApplication
 
 fun main(args: Array<String>) {
-    runApplication<DlpayApplication>(*args)
+    runApplication<PayApiApplication>(*args)
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index e776623..fe3c279 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -7,6 +7,8 @@
 import com.supwisdom.dlpay.framework.redisrepo.AppClientRepository
 import com.supwisdom.dlpay.framework.security.validate.ImageCodeUtil
 import com.supwisdom.dlpay.framework.security.validate.VerifyCode
+import com.supwisdom.dlpay.framework.domain.ApiClientRedis
+import com.supwisdom.dlpay.framework.redisrepo.ApiClientRepository
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.HmacUtil
 import org.springframework.beans.factory.annotation.Autowired
@@ -27,7 +29,7 @@
 class ApiAuthController {
 
     @Autowired
-    lateinit var repo: AppClientRepository
+    lateinit var repo: ApiClientRepository
 
     @Autowired
     lateinit var apiClient: ApiClientDao
@@ -52,7 +54,7 @@
         }.let {
             val token = generateRandomToken()
             val now = systemUtil.sysdatetime.hostdatetime
-            AppClientRedis().apply {
+            ApiClientRedis().apply {
                 id = appid
                 loginTimestamp = now
                 this.token = HmacUtil.HMACSHA256(token, it.secret)
@@ -72,8 +74,8 @@
         return Base64.getEncoder().encode(random).toString(Charsets.UTF_8)
     }
 
-    private fun checkSecretToken(app: AppClientRedis, secret: String): Boolean {
-        return (app.token == secret)
+    private fun checkSecretToken(api: ApiClientRedis, secret: String): Boolean {
+        return (api.token == secret)
     }
 
     @GetMapping("/authentication")
@@ -117,4 +119,4 @@
 
     @GetMapping("/login")
     fun loginView() = "login"
-}
\ No newline at end of file
+}
