정구리의 우주정복
[Keycloak] java 로 keycloak 에서 user 목록 가져오기 본문
반응형
원래 user 목록 조회하려면 admin 권한 줘야하는데
그럼 매번 유저 가입할때마다 admin 권한 일일히 줘야해서 현실적으로 불가능쓰 ..
그래서 Role 추가를 통해서 user 목록을 불러올 수 있는 방법을 써볼거임 ~~
1) create role
2) Action 클릭 > Add Associated roles
3) filter by clients
여기서 view-users, query-users 추가하기
4) Realm role 로 이동
5) default 에 추가
default-roles 에 Client Role 을 추가해준다 !!!!!
6) Test
6-1) token 발급 후
https://{{keycloak주소}}/admin/realms/{{realm명}}/users
을 넣고 get 으로 전달하기
결과가 나오면 굿키굿키 !!!
이제 자바에서 가져와보자
FriendsController.java
@RestController
@RequestMapping("/api/v1/friends")
@AllArgsConstructor
public class FriendsController {
private final FriendsService friendsService;
// 1) 사용자 조회 기능
@GetMapping("/users")
public ResponseEntity<String> getUserList(
@RequestHeader("Authorization") String token
) {
return ResponseEntity.ok(friendsService.getUserList(token));
}
}
FriendsService.java
@Service
@AllArgsConstructor
public class FriendsService {
private final KeycloakUserService keycloakUserService;
public String getUserList(String token) {
return keycloakUserService.getUserList(token);
}
}
KeycloakUserService.java
@Component
public class KeycloakUserService {
@Value("${keycloak.admin-uri}")
private String KEYCLOAK_ADMIN_URI;
public String getUserList(String accessToken) {
String url = KEYCLOAK_ADMIN_URI + "/users";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(accessToken.replace("Bearer",""));
HttpEntity<String> request = new HttpEntity<>(headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
return response.getBody();
}
}
admin-uri 는 알아서 넣어주기 (아까 postman 에서 호출한 주소임)
Authorization 으로 가져오니까 Bearer 를 두번 적어서 replace 해서 넣어줘야한다 .. 이거때문에 깩개개개고생함 ㅜㅜㅜ
반응형
'JAVA > PROJECT' 카테고리의 다른 글
Comments