2021. 6. 20. 21:39γπ Web
4xx λ μλ¬λ ν΄λΌμ΄μΈνΈ μΈ‘μμ μλͺ»λ μμ²(request)μ 보λμ λ λ°μνλ μλ¬μ λλ€. κ·Έ μ€ 401 μλ¬μ 403 μλ¬λ λͺ¨λ μΈμ¦μ΄ μλμ λ λ°μνλλ°, μ΄ μ°¨μ΄λ₯Ό μμλ³΄κ² μ΅λλ€.
1. 401 Unauthorized μλ¬
- HTTP μν μλ¬ μ€ 401μ, ν΄λΌμ΄μΈνΈκ° μΈμ¦λμ§ μμμ λ λ°μνλ μλ¬μ λλ€. μΈμ¦λμ§ μμ κ²½μ°λ, μ½κ² λ§ν΄ λ‘κ·ΈμΈμ νμ§ μμμ λ, μ΄λ ΅κ² λ§ν΄ request ν€λμ μ ν¨ν μΈμ¦ μ λ³΄κ° ν¬ν¨λμ§ μμμ λλ₯Ό μλ―Έν©λλ€. μ¦ ν΄λΌμ΄μΈνΈκ° ν΄λΉ μμ²μ κΆνμ΄ μμ λ, μ΄λ₯Ό κΈμ§(Forbidden)μν€λ μλ¬μ λλ€. μ°λ¦¬κ° νν λ‘κ·ΈμΈ νμ§ μμ μνμμ κΈμ μμ±νκ±°λ λ§μ΄νμ΄μ§λ₯Ό μ‘°ννλ €κ³ ν λ μλ²λ 401 μλ¬λ₯Ό λ°νν©λλ€.
AccessToken μμ΄ HTTP Patch μμ²μ 보λ΄λ©΄, status().isUnauthorized() λ©μμ§λ₯Ό μΆλ ₯ν©λλ€.
@Test
void updateUserWithoutAccessToken() throws Exception {
mockMvc.perform(
patch("/users/1")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\":\"TEST\",\"password\":\"test\"}")
)
.andExpect(status().isUnauthorized());
}
2. 403 Forbidden μλ¬
- 403 μλ¬λ, μλ²κ° μμ²(request)μ μ΄ν΄λ νμ§λ§, ν΄λΉ μμ²μ κ±°λΆν λ λ°μν©λλ€. μ¦ λ‘κ·ΈμΈμ νμ§λ§ κΆν λ°μ μΌμ μνν λ, μλ₯Ό λ€μ΄ λ€λ₯Έ μ¬λμ λκΈμ μμ νκ±°λ μμ ν λ λ°μνλ μλ¬(403 Forbidden) μ λλ€. λΉμ°ν μλ²λ μμ±μ λ³ΈμΈμ κΈλ§ μμ /μμ ν μ μλλ‘ μ μ΄λ₯Ό ν΄μΌκ² μ£ .
AccessTokenμ requestμ ν¬ν¨νμ¬ λ³΄λ΄λλΌλ, μ ν¨νμ§ μμ AccessToken,
μ¦ λ€λ₯Έ μ¬λμ AccessToken μ΄λΌλ©΄, updateκ° λΆκ°λ₯νλλ‘ status().isForbidden() μ μΆλ ₯ν©λλ€.
@Test
void updateUserWithOthersAccessToken() throws Exception {
mockMvc.perform(
patch("/users/1")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\":\"TEST\",\"password\":\"test\"}")
.header("Authorization", "Bearer " + OTHER_TOKEN)
)
.andExpect(status().isForbidden());
}
μΆκ°) Authentication, Authorization μ°¨μ΄
μΈμ¦(authentication)κ³Ό κΆν(authorization)μ λν΄μλ μΆκ°λ‘ λ€λ€λ΄ μλ€. Apache 곡μλ¬Έμμλ μλμ κ°μ΄ Authenticationκ³Ό authorizationμ μ€λͺ ν©λλ€.
"μΈμ¦(authentication)μ μμ μ΄ λꡬλΌκ³ μ£Όμ₯νλ μ¬λμ νμΈνλ μ μ°¨μ΄λ€. κΆνλΆμ¬(authorization)λ κ°κ³ μΆμ κ³³μΌλ‘ κ°λλ‘ νΉμ μνλ μ 보λ₯Ό μ»λλ‘ νμ©νλ κ³Όμ μ΄λ€."
νμ΄μ μκΈ°νμλ©΄, Authenticationμ 곧 λ‘κ·ΈμΈμ κ³Όμ μ΄κ³ , Authorizationμ λ‘κ·ΈμΈ ν, ν΄λΉ μ μ κ° κ΄λ¦¬μμΈμ§ μΌλ° μ¬μ©μμΈμ§ ꡬλΆνλ μ μ°¨μ λλ€.
'π Web' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
REST API λμμΈ 15κ°μ§ ν (0) | 2022.05.13 |
---|---|
ν¬μλ νλ‘μ μ 리λ²μ€ νλ‘μ (forward proxy, reverse proxy) (1) | 2021.08.24 |
7. HTTP ν€λ 2 - μΊμμ μ‘°κ±΄λΆ μμ² (2) | 2021.01.17 |
7. HTTP ν€λ 1 - μΌλ° ν€λ (0) | 2021.01.11 |
5. HTTP λ©μλ νμ© (0) | 2021.01.03 |