grantType을 다르게(password) 해서 토큰을 받아보자
1. SecurityConfig 수정
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
2. Oauth2AuthorizationConfig 수정
endpoints
에 authenticationManager
설정해주고, authorizedGrantTypes
에 "password"
항목을 추가했다.
@AllArgsConstructor
@Configuration
@EnableAuthorizationServer // OAuth2 권한 서버
public class Oauth2AuthorizationConfig extends AuthorizationServerConfigurerAdapter {
private final AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("clientId") // 클라이언트 아이디
.secret("{noop}clientSecret") // 클라이언트 시크릿
.redirectUris("http://localhost:8081/oauth2/callback")
.authorizedGrantTypes("authorization_code", "password")
.scopes("read", "write") // 해당 클라이언트의 접근 범위
.accessTokenValiditySeconds(60 * 60 * 4) // access token 유효 기간 (초 단위)
.refreshTokenValiditySeconds(60 * 60 * 24 * 120) // refresh token 유효 기간 (초 단위)
.autoApprove(true); // OAuth Approval 화면 나오지 않게 처리
}
}
3. Postman으로 테스트하기
우선 Authorization의 Type은 Basic Auth로 설정하고, username(ClientId)과 password(ClientSecret)을 적는다.
헤더에는 Content-Type을 설정
Body에 값을 전달한다 grant_type이 password!
access_token을 발급받을 수 있다.
4. Curl로 테스트하기
Curl은 리눅스환경에서는 기본으로 사용할 수 있다.
헤더에 Authorization으로 Basic인증을 해야 하는데, Base64로 인코딩 된 값을 전송해야 한다.
clientID:clientSecret형식을 인코딩하면 된다.
DevPal - Online Base64 encoder
curl -X POST http://localhost:8081/oauth/token
-H 'Authorization: Basic [Base64로 인코딩된 값]'
-d 'username=[유저네임]&password=[비밀번호]&grant_type=password'
'STUDY > Spring' 카테고리의 다른 글
Spring Boot | Spring Security OAuth2 (4) JWT TokenStore (0) | 2021.03.09 |
---|---|
Spring Boot | Spring Security OAuth2 (3) JDBC방식으로 바꾸기 (0) | 2021.03.09 |
Spring Boot | Spring Security OAuth2 (1) 설정 및 테스트 (inMemory) (0) | 2021.03.08 |
Spring Boot | Swagger2 사용 (springfox-boot-starter:3.0.0) (0) | 2021.03.05 |
Spring Boot | MyBatis 연동 (0) | 2021.03.04 |