티스토리 뷰
기능
POST /oauth/check_token
요청은 클라이언트가 요청한 access_token 파라메터가 유효한지 확인하고 access_token이 참조하는 상세 정보를 응답한다.
실행조건
- 클라이언트는
POST /oauth/token
요청으로 access_token 값을 발급 받은 상태이어야 한다.
요청사양
curl -X POST \
'http://localhost:8080/oauth/check_token' \
-d 'token=a1849c64-2ca6-4d32-8f15-6cf01029dfb6'
실행순서
1: CharacterEncodingFilter.doFilter()
2: HiddenHttpMethodFilter.doFilter()
3: HttpPutFormContentFilter.doFilter()
4: RequestContextFilter.doFilter()
5: WebAsyncManagerIntegrationFilter.doFilter()
6: SecurityContextPersistenceFilter().doFilter()
7: HeaderWriterFilter.doFilter()
8: CsrfFilter.doFilter()
9: LogoutFilter.doFilter()
10: UsernamePasswordAuthenticationFilter.doFilter()
11: DefaultLoginPageGeneratingFilter.doFilter()
12: BasicAuthenticationFilter.doFilter()
13: RequestCacheAwareRequestFilter.doFilter()
14: SecurityContextHolderAwareRequestFilter.doFilter()
15: AnonymousAuthenticationFilter.doFilter()
16: SessionManagementFilter.doFilter()
17: ExceptionTranslationFilter.doFilter()
18: FilterSecurityInterceptor.doFilter()
19: CheckTokenEndpoint.checkToken()
- access_token의 확인은 서비스 레이어의
DefaultTokenService
의 readAccessToken(accessToken) 호출 및 DAO 레이어의InMemoryTokenStore
(ConcurrentHashMap)의 readAccessToken(tokenValue) 호출로 획득한다. - 토큰 저장소의 access_token이 가진 정보는 기본적으로 아래와 같다.
{
"value": "a1849c64-2ca6-4d32-8f15-6cf01029dfb6",
"expiration": "Tue Jul 18 02:50:59 KST 2017",
"tokenType": "bearer",
"refreshToken": "9c2d4115-ebd2-4ff5-8f69-1c2e1198cf52",
"scope": [
"read:users"
]
"additionalInformation": []
}
- access_token이 존재하지 않으면
InvalidTokenException
예외를 발생시킨다. - access_token이 만료되었으면
InvalidTokenException
예외를 발생시킨다. - access_token이 참조하는 username이 유효하지 않을 경우
InvalidTokenException
예외를 발생시킨다. - access_token이 참조하는 client_id가 유효하지 않을 경우
InvalidTokenException
예외를 발생시킨다.
응답사양
### 성공 응답
200 OK
{
"exp": 1500313858,
"user_name": "user",
"authorities": [
"ROLE_USER"
],
"client_id": "some_client_id",
"scope": [
"read:users"
]
}
### token 파라메터가 존재하지 않을 경우
400 Bad Request
{
"timestamp": 1500275505030,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.MissingServletRequestParameterException",
"message": "Required String parameter 'token' is not present",
"path": "/oauth/check_token"
}
### token 파라메터가 유효하지 않을 경우
400 Bad Request
{
"error": "invalid_token",
"error_description": "Token was not recognised"
}
### token 파라메터 만료되었을 경우
400 Bad Request
{
"error": "invalid_token",
"error_description": "Token has expired"
}
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DynamoDB
- 자전거
- jpa
- CentOS
- bootstrap
- Eclipse
- graylog
- 평속
- Spring MVC 3
- JHipster
- spring
- JavaScript
- 로드 바이크
- Docker
- 알뜰폰
- maven
- 태그를 입력해 주세요.
- kotlin
- jstl
- Kendo UI
- jsp
- Kendo UI Web Grid
- Tomcat
- 로드바이크
- chrome
- 구동계
- Spring Boot
- MySQL
- node.js
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함