Spring Security OAuth - Client Credentials 인증 방식
반응형
https://github.com/syakuis/spring-security-oauth
코드를 함께 보면서 작업하시면 도움이 됩니다.
목차
- 메인 페이지 - Spring Security OAuth with JWT
ClientId 와 ClientSecret 으로 액세스 토큰을 발급받을 수 있다. 작업 흐름도 매우 심플하다. 보안적으로 취약할 수 있으며 ClientSecret 이 유출되지 않도록 주의해야 한다.
서버대 서버 통신시 인증 방식으로 사용할 수 있으며 장비 애플리케이션과의 통신을 위한 인증 방식으로도 사용할 수 있으나 폐쇄망에서만 사용하는 것을 권장한다.
refresh token 을 제공하지 않으며 Client 정보를 기반으로 하므로 사용자 정보를 제공하지 않는 다.
작업 흐름
애플리케이션에 액세스 토큰 요청을 직접 구현하지 않고 모든 애플리케이션은 BFF로 통하게 하여 BFF에 액세스 토큰을 발급받을 수 있도록 구현하는 것이 효과적일 수 있다.
요청 예시
POST /oauth/token?grant_type=client_credentials
Authorization: Basic ClientId ClientSecret
테스트 코드
@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
class ClientCredentialsRestControllerTest {
@Autowired
private MockMvc mvc;
@Autowired
private TestProperties props;
private String clientId;
private String clientSecret;
@BeforeEach
void init() {
clientId = props.getClientId();
clientSecret = props.getClientSecret();
}
@Test
void accessToken() throws Exception {
mvc.perform(post("/oauth/token")
.param("grant_type", GrantType.CLIENT_CREDENTIALS.getValue())
.with(httpBasic(clientId, clientSecret))
)
.andExpect(status().isOk())
.andExpect(jsonPath("$.access_token").isNotEmpty())
.andExpect(jsonPath("$.uid").doesNotExist())
.andExpect(jsonPath("$.name").doesNotExist())
.andDo(print())
;
}
}
반응형
LIST
'Tech' 카테고리의 다른 글
Spring Security OAuth with JWT (0) | 2021.11.11 |
---|---|
Spring Security OAuth - Resource Server (0) | 2021.11.11 |
Spring Security OAuth - Authorization Code 인증 방식 (0) | 2021.11.11 |
Spring Security OAuth - Authorization Server (0) | 2021.11.11 |