diff --git a/build.gradle b/build.gradle
index 0e9b130..ead6122 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,24 +16,37 @@
     mavenCentral()
 }
 
+war {
+    baseName = "payapi-service"
+    manifest {
+        attributes('Payapi-Version': rootProject.version)
+        writeTo(project.buildDir + "/classes/MATE-INF.MF")
+    }
+}
+
 dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
     implementation 'org.springframework.boot:spring-boot-starter-web'
     implementation 'org.springframework.boot:spring-boot-starter-security'
+    implementation 'org.springframework.security:spring-security-oauth2-client'
+    implementation 'org.springframework.security:spring-security-oauth2-jose'
     implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
     implementation 'org.jetbrains.kotlin:kotlin-reflect'
     implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
-    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
-    testImplementation 'org.springframework.boot:spring-boot-starter-test'
 
-    implementation group: 'com.sun.jersey', name: 'jersey-client', version:'1.19'
+    implementation 'org.postgresql:postgresql:42.2.5'
+    implementation 'com.jcabi:jcabi-manifests:1.1'
+    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
+    implementation group: 'com.sun.jersey', name: 'jersey-client', version: '1.19'
     implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
     implementation group: 'taglibs', name: 'standard', version: '1.1.2'
     implementation group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.1'
     implementation group: 'log4j', name: 'log4j', version: '1.2.16'
-    implementation files ('libs/ojdbc6.jar')
+    implementation files('libs/ojdbc6.jar')
 
-    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
+
+    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
+    testImplementation 'org.springframework.boot:spring-boot-starter-test'
 }
 
 compileKotlin {
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index c092cce..64f9736 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -3,8 +3,9 @@
 # create and drop tables and sequences, loads import.sql
 spring.jpa.hibernate.ddl-auto=create-drop
 spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
+spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
 
 # Oracle settings
-spring.datasource.url=jdbc:postgresql://172.28.201.101:5432/dlpay
+spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/payapi
 spring.datasource.username=payapi
 spring.datasource.password=123456
diff --git a/src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt b/src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt
index e72d7fb..baa9e6c 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/DlpayApplication.kt
@@ -1,25 +1,38 @@
 package com.supwisdom.dlpay
 
+import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.autoconfigure.SpringBootApplication
 import org.springframework.boot.runApplication
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.ComponentScan
+import org.springframework.context.annotation.Configuration
 import org.springframework.context.annotation.PropertySource
+import org.springframework.core.annotation.Order
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
 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
+import org.springframework.security.config.http.SessionCreationPolicy
+import org.springframework.security.core.Authentication
 import org.springframework.security.core.userdetails.User
 import org.springframework.security.core.userdetails.UserDetailsService
+import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository
 import org.springframework.security.provisioning.InMemoryUserDetailsManager
+import org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler
+import org.springframework.security.web.authentication.logout.LogoutSuccessHandler
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
 import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
 
 
 @EnableWebSecurity
-class WebSecurityConfig : WebMvcConfigurer {
+class WebSecurityConfig {
+    @Autowired
+    private lateinit var clientRegistrationRepository: ClientRegistrationRepository
 
     @Bean
-    open fun userDetailsService(): UserDetailsService {
+    fun userDetailsService(): UserDetailsService {
         val manager = InMemoryUserDetailsManager()
         manager.createUser(User.withDefaultPasswordEncoder()
                 .username("admin")
@@ -28,25 +41,57 @@
         return manager
     }
 
+    companion object {
+        @Configuration
+        @Order(1)
+        class ApiWebSecurityConfigurationAdapter : WebSecurityConfigurerAdapter() {
+            @Autowired
+            private lateinit var clientRegistrationRepository: ClientRegistrationRepository
 
-}
+            override fun configure(http: HttpSecurity) {
+                http.authorizeRequests()
+//                        .antMatchers("/login", "/resources/**", "/about", "/common/**").permitAll()
+//                        .antMatchers("/admin/**").hasRole("ADMIN")
+//                        .antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")
+                        .antMatchers("/**").permitAll()
+                        .antMatchers("/admin/**").hasRole("ADMIN")
+                        .anyRequest().authenticated()
+                        .and().httpBasic()
+                        .and()
+                        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
+//                        .oauth2Client()
+//                        .clientRegistrationRepository(clientRegistrationRepository)
+//                        .authorizedClientRepository(this.authorizedClientRepository())
+//                        .authorizedClientService(this.authorizedClientService())
+//                        .authorizationCodeGrant()
+//                        .authorizationRequestRepository(this.authorizationRequestRepository())
+//                        .authorizationRequestResolver(this.authorizationRequestResolver())
+//                        .accessTokenResponseClient(this.accessTokenResponseClient())
+            }
+        }
 
 
-@EnableWebSecurity
-class OAuth2ClientSecurityConfig : WebSecurityConfigurerAdapter() {
+        @Configuration
+        class MvcWebSecurityConfigurationAdapter : WebSecurityConfigurerAdapter() {
 
-    override fun configure(http: HttpSecurity) {
-        http.authorizeRequests()
-                .antMatchers("/login", "/resources/**", "/about").permitAll()
-                .antMatchers("/admin/**").hasRole("ADMIN")
-                .antMatchers("/db/**").access("hasRole('ADMIN') and hasRole('DBA')")
-                .anyRequest().authenticated()
-                .and()
-                .formLogin()
-                .loginPage("/login").permitAll()
+            override fun configure(http: HttpSecurity) {
+                http.authorizeRequests()
+                        .anyRequest().authenticated()
+                        .and()
+                        .formLogin()
+                        .loginPage("/user/login").permitAll()
+                        .and()
+                        .logout()
+                        .logoutUrl("/user/logout")
+                        .logoutSuccessUrl("/user/home")
+                        .invalidateHttpSession(true)
+                        .addLogoutHandler(CookieClearingLogoutHandler())
+            }
+        }
     }
 }
 
+
 @SpringBootApplication
 class DlpayApplication
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
new file mode 100644
index 0000000..b385f9b
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
@@ -0,0 +1,28 @@
+package com.supwisdom.dlpay.framework.controller
+
+import com.jcabi.manifests.Manifests
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import org.springframework.http.ResponseEntity
+import org.springframework.web.bind.annotation.GetMapping
+import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.RestController
+
+
+@RestController
+@RequestMapping("/common")
+class AboutController {
+    @GetMapping("/version")
+    fun version(): ResponseEntity<Any> {
+        return try {
+            Manifests.read("Payapi-Version").let {
+                ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .data("version", it)
+                        .success())
+            }
+        } catch (e: IllegalArgumentException) {
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .data("version", "unknown")
+                    .success())
+        }
+    }
+}
\ No newline at end of file
