springboot2.x oauth 2 인증 코드 로그 인 방법
브 라 우 저 입력http://localhost:8081/oauth/authorize?response_type=code&redirect_uri=http://localhost:8081/callback&client_id=android1&scop=all
자원 사이트 사용자 로그 인
자원 로그 인 페이지 에 자동 으로 넘 어가 먼저 로그 인 합 니 다.
3 권한 부여 자원 유형
로그 인 에 성공 하면 자원 을 권한 을 부여 합 니 다.이 자원 들 은
AuthorizationServerConfig.configure
방법 에서 설정 되 어 있 습 니 다.
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient(ClientID)
.secret(passwordEncoder.encode(ClientSecret))
.authorizedGrantTypes("authorization_code", "refresh_token",
"password", "implicit")
.scopes("read","write","del","userinfo")
.redirectUris(RedirectURLs);
}
쿼 드 코드
권한 을 부여 한 후,시스템 은 당신 의 redirect 로 다시 정 해 집 니 다.uri 이 페이지 에 유일한 code 를 가 져 옵 니 다.
5 획득 accesstoken
우 리 는 code 를 들 고 서버 에 token 을 가 져 올 수 있 는 권한 을 부여 해 야 합 니 다.코드 에 이것 을 쓸 수도 있 고 수 동 으로 code 를 들 고 url 을 만 들 수도 있 습 니 다.그리고 token 을 가 져 올 수도 있 습 니 다.이 아래 의 인 스 턴 스 와 같 습 니 다.
oauth/token 에 post 요청 을 보 냈 습 니 다.clientid 와 clientsecret 가 url 에 전달 되면
AuthorizationServerConfig
류 의 configure 방법 에서 열 리 면allowFormAuthenticationForClients
코드 는 다음 과 같 습 니 다.
@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.tokenKeyAccess("permitAll()")
.checkTokenAccess("isAuthenticated()")
.allowFormAuthenticationForClients();// secret clientid url ,
}
그리고 요청 후 다음 응답 을 드 리 겠 습 니 다.
Authorization Ccode------RFRLFY
access_token_url http://localhost:8081/oauth/token?client_id=android1&code=RFRLFY&grant_type=authorization_code&redirect_uri=http://localhost:8081/callback&client_secret=android1
Access Token Response ---------{"access_token":"faadf3bf-6488-4036-bc3b-21b0a979602c","token_type":"bearer","refresh_token":"1b01f133-c5ab-419f-8125-088c85916ecb","expires_in":43187,"scope":"read"}
페이지 코드 를 리 셋 하여 코드 에 대한 획득 을 실 현 했 습 니 다.accesstoken 의 조직,그리고 요청 시 accesstoken 테이프 에 이 방법 은 일반적으로 공용 필터 로 만들어 집 니 다.
@Controller
public class UserController {
@RequestMapping(value = "/callback", method = RequestMethod.GET)
public ResponseEntity<String> callback(@RequestParam("code") String code) throws JsonProcessingException, IOException {
ResponseEntity<String> response = null;
System.out.println("Authorization Ccode------" + code);
RestTemplate restTemplate = new RestTemplate();
String access_token_url = "http://localhost:8081/oauth/token";
access_token_url += "?client_id=android1&code=" + code;
access_token_url += "&grant_type=authorization_code";
access_token_url += "&redirect_uri=http://localhost:8081/callback";
access_token_url += "&client_secret=android1";
System.out.println("access_token_url " + access_token_url);
response = restTemplate.exchange(access_token_url, HttpMethod.POST, null, String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(response.getBody());
String token = node.path("access_token").asText(); System.out.println("access_token" +access_token);
String url = "http://localhost:8081/index"; HttpHeaders headers1 = new HttpHeaders(); headers1.add("Authorization", "Bearer " + token); HttpEntity<String> entity = new HttpEntity<>(headers1); ResponseEntity<String> result = restTemplate.exchange(url, HttpMethod.GET, entity, String.class); return result; }
여섯 가지 들 고 accesstoken 에서 구체 적 인 자원 을 요청 합 니 다.url 주소 에서 직접:http://localhost:8081/index?access_token=faadf3bf-6488-4036-bc3b-21b0a979602c
총결산
위 에서 말 한 것 은 소 편 이 소개 한 springboot 2.x 가 oauth 2 권한 수여 코드 로그 인 을 실현 하 는 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.