顯示具有 Spring Security 標籤的文章。 顯示所有文章
顯示具有 Spring Security 標籤的文章。 顯示所有文章

2021年3月2日 星期二

Spring Security Reference (5.0.12)

https://docs.spring.io/spring-security/site/docs/5.0.12.RELEASE/reference/html/

disable-url-rewriting =“true

https://www.cnblogs.com/xjknight/p/10897849.html

从Spring 3.0开始,现在可以通过在命名空间中设置disable-url-rewriting =“true”来禁用将jsessionid附加到URL的URL重写逻辑。

web.xml方式設定:
<session-config>
     <tracking-mode>COOKIE</tracking-mode>
</session-config>

Java config方式設定:
servletContext.setSessionTrackingModes(EnumSet.of(SessionTrackingMode.COOKIE));

2021年3月1日 星期一

Spring Security設定同個使用者一次只能一個session登入

// https://www.baeldung.com/spring-security-session
//同個使用者一次只能一個session登入,重複原本登入的會回應This session has been expired (possibly due to multiple concurrent logins being attempted as the same user).

http.sessionManagement().maximumSessions(1);


demo code:
https://github.com/imrexhuang/Spring-Boot-Security-Thymeleaf-Demo/commit/f65ba7740cfff0a13417ca12b3bbf052ae8e83bd

Spring Security CSRF不保護GET,HEAD,TRACE,OPTIONS等Safe Methods

https://matthung0807.blogspot.com/2019/11/spring-security-csrf-default-protection.html

Control the Session with Spring Security

https://www.baeldung.com/spring-security-session

demo code:
https://github.com/imrexhuang/Spring-Boot-Security-Thymeleaf-Demo

Thymeleaf加入Spring Security標籤的支援

        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>


ref:
https://www.baeldung.com/spring-security-thymeleaf
https://www.thymeleaf.org/doc/articles/springsecurity.html
https://www.marcobehler.com/guides/spring-security

demo code:
https://github.com/imrexhuang/Spring-Boot-Security-Thymeleaf-Demo

2021年2月28日 星期日

Default Password Encoder in Spring Security 5

https://www.baeldung.com/spring-security-5-default-password-encoder

org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder


ref:
https://openhome.cc/Gossip/Spring/SpringSecurity.html

從 Spring Security 5 開始,強制必須對密碼進行編碼,具體而言,方式之一就是直接指定 PasswordEncoder,在這邊使用的是 BCryptPasswordEncoder,並透過 encode 對密碼編碼,實際上這會是在使用者註冊時進行這動作,不過這邊先暫且寫在設定檔裡。

BCryptPasswordEncoder 實作了 bcrypt 加密演算法,是 Spring 官方推薦的加密方式,它會使用一個加鹽的流程以防禦彩虹表攻擊,就算是相同的密碼,因為每次產生的鹽值不同,編碼後的結果也就不會相同(鹽值會包含在編碼後的結果之中,不過 bcrypt 屬於 Slow Hash Function 手法,也就是破解它的時間成本高,高到可以讓攻擊者放棄)。

Intro to Spring Security Expressions

https://www.baeldung.com/spring-security-expressions