package sample.context.security; import org.springframework.boot.context.properties.ConfigurationProperties; import lombok.Data; /** * セキュリティ関連の設定情報を表現します。 */ @Data @ConfigurationProperties(prefix = "extension.security") public class SecurityProperties { /** Spring Security依存の認証/認可設定情報 */ private SecurityAuthProperties auth = new SecurityAuthProperties(); /** CORS設定情報 */ private SecurityCorsProperties cors = new SecurityCorsProperties(); public SecurityAuthProperties auth() { return auth; } public SecurityCorsProperties cors() { return cors; } /** Spring Securityに対する拡張設定情報 */ @Data public static class SecurityAuthProperties { /** リクエスト時のログインIDを取得するキー */ private String loginKey = "loginId"; /** リクエスト時のパスワードを取得するキー */ private String passwordKey = "password"; /** 認証対象パス */ private String[] path = new String[] { "/api/**" }; /** 認証対象パス(管理者向け) */ private String[] pathAdmin = new String[] { "/api/admin/**" }; /** 認証除外パス(認証対象からの除外) */ private String[] excludesPath = new String[] { "/api/system/job/**" }; /** 認証無視パス(フィルタ未適用の認証未考慮、静的リソース等) */ private String[] ignorePath = new String[] { "/css/**", "/js/**", "/img/**", "/**/favicon.ico" }; /** ログインAPIパス */ private String loginPath = "/api/login"; /** ログアウトAPIパス */ private String logoutPath = "/api/logout"; /** 一人が同時利用可能な最大セッション数 */ private int maximumSessions = 2; /** * 社員向けモードの時はtrue。 * <p>ログインパスは同じですが、ログイン処理の取り扱いが切り替わります。 * <ul> * <li>true: SecurityUserService * <li>false: SecurityAdminService * </ul> */ private boolean admin = false; /** 認証が有効な時はtrue */ private boolean enabled = true; } /** CORS設定情報を表現します。 */ @Data public static class SecurityCorsProperties { private boolean allowCredentials = true; private String allowedOrigin = "*"; private String allowedHeader = "*"; private String allowedMethod = "*"; private long maxAge = 3600L; private String path = "/**"; } }