[WEB] HTTP μΈμ¦λ°©μ1_μΈμ /μΏ ν€
π± μΈμ¦?
μΈμ¦(Authentication)μ΄λ, μ¬μ©μκ° μκΈ°μμ μ μ¦λͺ νλ μΌμ λλ€.
μ¬μ©μ Aμ Bκ° νλμ μΉμ¬μ΄νΈλ₯Ό μ¬μ©νλ€λΌκ³ κ°μ ν΄λ΄ μλ€. λ μ¬μ©μκ° κ°μ§κ³ μλ νμμ 보μ 컨ν μΈ λ κ°κ° λ€λ₯Ό κ²μ΄λ€. λ°λΌμ μλ²μμλ A, Bκ° μμ²μ 보λμ λ λꡬμ μμ²μΈμ§λ₯Ό ꡬλΆν΄λ΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ Bμ λ―Όκ°ν κ°μΈμ λ³΄κ° Aμκ² λ³΄μ¬μ§λ μΌμ΄ λ°μν μ μκΈ° λλ¬Έμ λλ€. κ·Έλμ λΈλΌμ°μ μμλ μμ μ΄ λꡬμΈμ§λ₯Ό μ¦λͺ ν μ μλ μ 보λ₯Ό μλ²μ 보λ΄μΌνλ©°, μλ²λ κ·Έ λ¨μλ₯Ό λ°νμΌλ‘ μ¬μ©μμκ² λ§λ λ°μ΄ν°λ₯Ό 보λ΄μ£Όμ΄μΌ ν©λλ€.
π± HTTPμ μΈμ¦
νμ¬ μΉμμ κ°μ₯ λ§μ΄ μ¬μ©λλ ν΅μ λ°©μμ HTTP ν΅μ μ λλ€. HTTP ν΅μ μ κ°μ₯ ν° νΉμ§ μ€μλ λΉμ°κ²°μ±(connectionless)μ 무μν(stateless)κ° μμ΅λλ€. λΉμ°κ²°μ±μ΄λ ν΄λΌμ΄μΈνΈμ μλ²κ° νλ² μ°κ²°μ λ§Ίμ ν, ν΄λΌμ΄μΈνΈ μμ²μ λν΄ μλ²κ° μλ΅μ λ§μΉλ©΄ λ§Ίμλ μ°κ²°μ λμ΄λ²λ¦¬λ μ±μ§μ λλ€. λ§μ½ μλ²μμ λ€μμ ν΄λΌμ΄μΈνΈμ μ°κ²°μ κ³μ μ μ§ν΄μΌ νλ€λ©΄, μ°κ²°μ μ μ§νκΈ° μν λ§μ μμλ€μ΄ λλΉλ μ μκΈ°λλ¬Έμ νλ² λ§Ίμ μ°κ²°μ λμ΄λ²λ¦¬κ² λ©λλ€.
무μνλ μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ₯Ό μ μ μλ€λ μ±μ§μ λλ€. HTTPλ μ°κ²°μ΄ μ μ§λμ§ μκ³ λμ΄μ§λ λΉμ°κ²°μ±μ΄λΌλ νΉμ§ λλ¬Έμ κ³Όκ±°μ λν μ 보λ₯Ό μ μ§ν μ μμ΅λλ€. νμ¬ μμ²μ λ³΄λΈ ν΄λΌμ΄μΈνΈκ° μΈμ¦μ νλ μ¬μ©μμΈμ§, μλμ§ κΈ°μ΅ν μ μκΈ°λλ¬Έμ HTTP μμ²λ§λ€ μΈμ¦μ 보λ₯Ό ν¨κ» 보λ΄μΌν©λλ€.
HTTP μΈμ¦ λ°©μμλ λνμ μΌλ‘ μΏ ν€/μΈμ λ°©μκ³Ό ν ν° λ°©μμ΄ μμ΅λλ€. λ€μ ν ν°μ μ΄μ©νλ λνμ μΈ λ°©λ²μλ JWTμ OAuthκ° μμ΅λλ€. μ΄λ² ν¬μ€ν μμλ μΏ ν€/μΈμ μ μ΄μ©ν λ°©μμ λν΄μ μμλ³΄λ €κ³ ν©λλ€.
π± μΏ ν€ VS μΈμ
μΏ ν€λ μ¬μ΄νΈλ₯Ό λ°©λ¬Ένκ³ μ΄μ©ν λ λΈλΌμ°μ μ μ μ₯λλ λ΄μ©μ λλ€. νμ§λ§ μΏ ν€λ ν΄λΌμ΄μΈνΈκ° μ‘°μν μ μκ³ , μ¬μ§μ΄ λ¨μ΄ νμΉκ±°λ λλμ§νκΈ° μ¬μ 보μμ μ·¨μ½νλ€λ νκ³κ° μμ΅λλ€. μ΄μ λ°λλ‘ μΈμ μ λΈλΌμ°μ κ° μλ μλ²λ¨μμ μ¬μ©μ μ 보λ₯Ό μ μ₯νλ ꡬ쑰μ λλ€. μλ²κ° μ§μ μ μ₯νκΈ° λλ¬Έμ μΏ ν€λ³΄λ€ μμ νμ§λ§, μΈμ μ λ¨λ°νκ²λλ©΄ μλ²μ λΆνκ° μ¬ μ μμ΅λλ€. λλ¬Έμ μΏ ν€λ‘ λ ΈμΆνλ©΄ μλλ λ―Όκ°ν μ λ³΄λ§ μΈμ μ μ μ₯νλ©°, μΏ ν€μ μΈμ μ μ μ ν μ¬μ©ν΄μΌ ν©λλ€.
π± μΈμ /μΏ ν€ λ°©μ
[ νλ¦ ]
1. μ¬μ©μ λ‘κ·ΈμΈ
2. νμμ΄ λ§λμ§ νμDBμμ νμΈ
3. νμμ΄ λ§λ€λ©΄, μ¬μ©μμ κ³ μ ν IDκ°μ λΆμ¬νκ³ μΈμ IDμ λ§€ννμ¬ μΈμ μ μ₯μμ μ μ₯
4. μλ²λ λΈλΌμ°μ μκ² λ‘κ·ΈμΈ μμ²μ λν μλ΅κ³Ό ν¨κ» μΈμ IDλ₯Ό μ μ‘
5. λΈλΌμ°μ λ λ°μ μΈμ IDλ₯Ό μΏ ν€μ μ μ₯
6. λΈλΌμ°μ κ° λ°μ΄ν° μμ²κ³Ό ν¨κ» μΏ ν€(μΈμ ID)λ₯Ό μλ²λ‘ μ μ‘
7. μλ²λ λ°μ μΏ ν€(μΈμ ID)λ₯Ό κ²μ¦
8. μλ²λ μΈμ
IDμ λμλλ μ μ μ 보(μΈμ
)λ₯Ό νλ
π± μΈμ /μΏ ν€ λ°©μ νΉμ§κ³Ό μ₯λ¨μ
[ νΉμ§ ]
1. μλ²μμ ν΄λΌμ΄μΈνΈμ μΈμ μ 보λ₯Ό DBμ μ μ₯νκ³ μμ΅λλ€.(λ³λμ μΈμ μ μ₯μ)
2. μλ²κ° ν΄λΌμ΄μΈνΈμ μνλ₯Ό μλ²μμ κ³μ μ μ§νκ³ μ΄ μ 보λ₯Ό μλΉμ€μ μ΄μ©νλ Stateful μλ²μ λλ€.
[ μ₯μ ]
1. μλ²μμ ν΄λΌμ΄μΈνΈ μνλ₯Ό μ μ§νκ³ μμΌλ―λ‘ μ¬μ©μμ μνλ₯Ό μ§μ κ΄λ¦¬ν μ μμ΅λλ€.
(ex. κ°μ λ‘κ·Έμμ, μ¬μ©μμ λ‘μΈ μ¬λΆ νμΈ)
2. ν΄λΌμ΄μΈνΈκ° μμλ‘ μ 보λ₯Ό λ³κ²½μμΌλ μλ²μμ ν΄λΌμ΄μΈνΈ μν μ 보λ₯Ό κ°μ§κ³ μμ΄ μλμ μΌλ‘ μμ ν©λλ€.
[ λ¨μ ]
1. μλ²μμ μΆκ°μ μΈ μΈμ μ μ₯μλ₯Ό μ¬μ©νκΈ°λλ¬Έμ DBμ λΆνκ° μ¬ν΄μ§ μ μμ΅λλ€.
2. μΈμ νμ΄μ νΉ κ³΅κ²©μ μ·¨μ½ν©λλ€.
: μΈμ νμ΄μ νΉμ΄λ 곡격μκ° μ¬μ©μAμ HTTPμμ²μ νμ³ μΏ ν€(μΈμ ID)λ₯Ό μ»μ΄λ΄κ³ 곡격μκ° μ»μ΄λΈ μΏ ν€(μΈμ ID)λ‘ μμ²μ 보λ΄λ©΄ μλ²μμλ μ¬μ©μAλ‘ μ°©κ°νκ²λλ κ²μ μ΄μ©ν 곡격μ λλ€.
3. μλ²μ νμ₯μ±μ΄ μ΄λ €μμ§λλ€.
: μλ²μ νμ₯μ΄λ, λ λ§μ νΈλν½μ κ°λΉνκΈ° μνμ¬ μ¬λ¬κ°μ νλ‘μΈμ€λ₯Ό λ리거λ μ¬λ¬λμ μλ² μ»΄ν¨ν°λ₯Ό μΆκ° νλκ²μ μλ―Έν©λλ€.
π± μΈμ /μΏ ν€ λ°©μ μ€μ μμ
μ€μ μ κ° μΈμ /μΏ ν€ λ°©μμ μ¬μ©νμ¬ κ°λ°νμλ μ€νλ§ μν리ν°λ₯Ό μ΄μ©ν νλ‘μ νΈλ₯Ό μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.
[ λΈλΌμ°μ μ μΏ ν€ ]
λ‘κ·ΈμΈμ νκ²λλ©΄, λΈλΌμ°μ μ μΏ ν€μ μΈμ IDκ° μ‘΄μ¬ν©λλ€.
λ§μ½ ν΄λΉ μΏ ν€λ₯Ό μμ νκ²λλ©΄ λ‘κ·Έμμμ΄ λ©λλ€.
νμ§λ§ μΏ ν€λ₯Ό μμ νλ€κ³ μΈμ μ μ₯μμ κ°μ΄ μ¬λΌμ§μ§λ μμ΅λλ€.
[ μλ²μ μΈμ μ μ₯μ ]
spring_session ν μ΄λΈμ λ€μκ³Ό κ°μ΅λλ€.
λ§μ½ μΈμ μ μ₯μμ ν΄λΉ μ μ μ λ°μ΄ν°λ₯Ό μμ νκ² λλ©΄ κ°μ λ‘κ·Έμμμ΄λ©λλ€.
spring_session_attributesν μ΄λΈμ λ€μκ³Ό κ°μ΅λλ€.
μ€μ ꡬνν λ, μΈμ μ μ₯μμ λ°©μλ μ¬λ¬ μ’ λ₯κ° μλλ° λ€μ ν¬μ€ν μ νμΈνλ©΄ μ’μ κ²κ°λ€.
2021.04.11 - [spring] - [Spring Boot] μΈμ μ μ₯μ
[Spring Boot] μΈμ μ μ₯μ
μΈμ μ μ₯μμ λν΄ 3κ°μ§λ°©λ² μ€ νλλ₯Ό μ νν μ μλ€. 1. ν°μΊ£ μΈμ μ¬μ©νκΈ° : λν΄νΈλ‘ μ νλλ λ°©μ λ΄μ₯ ν°μΊ£(WAS)μ μΈμ μ μ μ₯νκ² λλ©΄ μ ν리μΌμ΄μ μ€νμ νμ μ΄κΈ°νκ°λλ€. λ 2
doing7.tistory.com
μΆμ² :
μ νλΈ μμ - μΏ ν€, μΈμ , μΊμκ° λκ°μ?
μ νλΈ μμ -Session vs Token authentication in 100 seconds
λΈλ‘κ·Έ ν¬μ€ν - HTTP νΉμ±
λΈλ‘κ·Έ ν¬μ€ν - μΈμ /μΏ ν€, ν ν°λ°©μ
λΈλ‘κ·Έ ν¬μ€ν - μ½κ² μμ보λ μλ² μΈμ¦ 1νΈ ( μΈμ /μΏ ν€, JWT )