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 권한 수여 코드 로그 인 을 실현 하 는 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기