2016-09-28 3 views
1

나머지 API를 보호하기 위해 봄 oauth2를 구현하고 있습니다. 기본적으로 모든 사용자에게 제한하는 대신 특정 사용자에게 나머지 API 사용을 제한합니다.javacript를 사용하여 HTML 프런트 엔드와 Spring Oauth2 구현을 통합합니다.

나는 백엔드를 구현했고 봄 oauth2를 사용하여 API를 보호했다.

다음 단계를 따르고 있습니다.
1) 5 가지 매개 변수로 GET 요청을 보냅니다.

로컬 호스트 : 8080/SpringRestSecurityOauth/OAuth를/토큰 grant_type = 비밀번호 & CLIENT_ID = Awyi123nasdk89 & client_secret = asdj39m32 @ # $의 & 이름 = 라훌 @ gmail을 & 암호 = 라훌 9831 @

2) 서버의 유효성을 검사하는 사용자에게 스프링 보안을 지원하고 액세스 코드로 json 응답을 반환합니다.

{ "access_token이": "22cb0d50-5bb9-463d-8c4a-8ddd680f553f",
"token_type": "베어러",
"refresh_token도": "7ac7940a-d29d-4a4c-9a47-25a2167c8c49"
는 "expires_in"119
}


3) 내가 매개 변수로이 액세스 토큰을 전달하여 보호 된 리소스에 액세스는 요청은 다음과 같이 간다 :

로컬 호스트 : 8080/SpringRestSecurityOauth/API/사용자/? access_token = 8c191a0f-ebe8-42cb-bc18-8e80f2c4238e

4) 토큰이 만료 된 경우 사용자는 단계 (2)에서 승인 한 새로 고치는 토큰을 사용하여 새 토큰을 가져와야합니다.

로컬 호스트 : 8080/SpringRestSecurityOauth/OAuth를/토큰 grant_type = refresh_token도 & CLIENT_ID = restapp & client_secret = restapp & refresh_token도 = 7ac7940a-d29d-4a4c-9a47-25a2167c8c49 만료 후 새로운 액세스 토큰 요청은 다음과 같이 보입니다

위의 모든 단계가 정상적으로 작동합니다. 이제 클라이언트 측에서이를 구현해야합니다. 따라서 특정 클라이언트가이 호출에 액세스 할 수 있습니다. HTML/CSS를 클라이언트 측 기술로 사용하고 있습니다.

클라이언트가 액세스 토큰을 얻는 방법은 무엇입니까? 브라우저 로컬 저장소에 저장해야합니까? 또는 나머지 전화가 걸릴 때마다 생성되어야합니다.

어떤 예도 더 진행할 수 있습니다.

답변

0

저는 여러분과 같은 프로젝트를 구현하고 있습니다. angularjs를 사용하고 응답 json에서 액세스 토큰을 얻은 다음 쿠키에 저장합니다. 이 링크는 샘플 코드를 제공합니다 : http://www.baeldung.com/rest-api-spring-oauth2-angularjs. (Frontend - Password Flow를 보라).

새로 고침 토큰을 비공개로 유지해야하고 클라이언트가 html 앱이므로 새로 고침 토큰을 처리하려면이 링크 http://www.baeldung.com/spring-security-oauth2-refresh-token-angular-js이 표시되어야합니다.

html 클라이언트의 경우 액세스 토큰이 만료되었을 때 새로 고침 토큰을 사용하여 액세스 토큰을 얻은 후 http-auth-interceptor ([http] : //witoldsz.github.io/angular-http-auth/)를 사용하여 다시 시도합니다 만료 된 액세스 토큰으로 인해 모든 나머지 요청이 실패했습니다.

2 개 이상의 링크를 게시 할만큼 충분한 평판을 얻지 못해 죄송합니다.

관련 문제