From ae63e240b0fed5cceef7d1c016f4a4305e116f40 Mon Sep 17 00:00:00 2001 From: gebo <35388172+gebogebogebo@users.noreply.github.com> Date: Tue, 13 Jan 2026 13:42:43 +0900 Subject: [PATCH] update --- .../sample/config/DefaultSecurityConfig.java | 16 ------------ .../java/sample/service/JdbcUserService.java | 26 +++++++++++++++++++ .../src/main/resources/sql/users.sql | 17 ++++++++++++ 3 files changed, 43 insertions(+), 16 deletions(-) create mode 100644 samples/demo-authorizationserver/src/main/java/sample/service/JdbcUserService.java create mode 100644 samples/demo-authorizationserver/src/main/resources/sql/users.sql diff --git a/samples/demo-authorizationserver/src/main/java/sample/config/DefaultSecurityConfig.java b/samples/demo-authorizationserver/src/main/java/sample/config/DefaultSecurityConfig.java index 06fd58f8..843c570c 100644 --- a/samples/demo-authorizationserver/src/main/java/sample/config/DefaultSecurityConfig.java +++ b/samples/demo-authorizationserver/src/main/java/sample/config/DefaultSecurityConfig.java @@ -21,10 +21,6 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.core.session.SessionRegistry; import org.springframework.security.core.session.SessionRegistryImpl; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.security.core.userdetails.UserDetailsService; -import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.session.HttpSessionEventPublisher; @@ -55,18 +51,6 @@ public class DefaultSecurityConfig { } // @formatter:on - // @formatter:off - @Bean - public UserDetailsService users() { - UserDetails user = User.withDefaultPasswordEncoder() - .username("user1") - .password("password") - .roles("USER") - .build(); - return new InMemoryUserDetailsManager(user); - } - // @formatter:on - @Bean public SessionRegistry sessionRegistry() { return new SessionRegistryImpl(); diff --git a/samples/demo-authorizationserver/src/main/java/sample/service/JdbcUserService.java b/samples/demo-authorizationserver/src/main/java/sample/service/JdbcUserService.java new file mode 100644 index 00000000..4bdcc322 --- /dev/null +++ b/samples/demo-authorizationserver/src/main/java/sample/service/JdbcUserService.java @@ -0,0 +1,26 @@ +package sample.service; + +import javax.sql.DataSource; + +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.provisioning.JdbcUserDetailsManager; +import org.springframework.stereotype.Service; + +@Service +public class JdbcUserService extends JdbcUserDetailsManager { + + public JdbcUserService(DataSource dataSource) { + super(dataSource); + // NOTE: The 'users' and 'authorities' tables must exist in the database. +// if (!userExists("user1")) { +// UserDetails user = User.withDefaultPasswordEncoder() +// .username("user1") +// .password("password") +// .roles("USER") +// .build(); +// createUser(user); +// } + } + +} diff --git a/samples/demo-authorizationserver/src/main/resources/sql/users.sql b/samples/demo-authorizationserver/src/main/resources/sql/users.sql new file mode 100644 index 00000000..5f53478c --- /dev/null +++ b/samples/demo-authorizationserver/src/main/resources/sql/users.sql @@ -0,0 +1,17 @@ +-- ユーザー情報を格納するテーブル +CREATE TABLE users ( + username VARCHAR(50) NOT NULL PRIMARY KEY, + password VARCHAR(500) NOT NULL, + enabled BOOLEAN NOT NULL +); + +-- ユーザーに紐づく権限(ROLE_USER, ROLE_ADMINなど)を格納するテーブル +CREATE TABLE authorities ( + username VARCHAR(50) NOT NULL, + authority VARCHAR(50) NOT NULL, + CONSTRAINT fk_authorities_users FOREIGN KEY (username) REFERENCES users(username) +); + +-- 同じユーザーに同じ権限を重複して持たせないためのユニークインデックス +CREATE UNIQUE INDEX ix_auth_username ON authorities (username, authority); +