@Override public GSuiteGroup getGroup(String groupKey) { String path = MessageFormat.format("groups/{0}", new Object[]{groupKey}); WebClient webClient = WebClient.fromClient(directoryApiClient, true); webClient.authorization(tokenCache.get()); GSuiteGroup group = webClient.path(path).get(GSuiteGroup.class); return group; }
@Override public GSuiteUser getUser(String userKey) { String path = MessageFormat.format("users/{0}", new Object[]{userKey}); WebClient webClient = WebClient.fromClient(directoryApiClient, true); ClientAccessToken accessToken = tokenCache.get(); webClient.authorization(accessToken); GSuiteUser user = webClient.path(path).get(GSuiteUser.class); return user; }
@Override public void updateUserPassword(String userKey, String password) throws InvalidPasswordException { String path = MessageFormat.format("users/{0}", new Object[]{userKey}); WebClient webClient = WebClient.fromClient(directoryApiClient, true); ClientAccessToken accessToken = tokenCache.get(); webClient.authorization(accessToken); GSuiteUser user = new GSuiteUser(); user.setPassword(password); Response response = webClient.path(path).put(user); if (response.getStatus() != Response.Status.OK.getStatusCode()) { throw new InvalidPasswordException("Can't change password. Response: " + response.readEntity(String.class)); } }
@Override public GroupList getUserGroups(String userKey) { WebClient webClient = WebClient.fromClient(directoryApiClient, true).path("groups"); webClient.authorization(tokenCache.get()); if (userKey != null) { webClient.query("userKey", userKey); } GroupList groupList = webClient.query("domain", config.getGSuiteDomain()).get(GroupList.class); return groupList; }
private GroupMembership readGroupMembers(String groupKey, GroupMembership parent) throws ResourceNotFoundException { String path = MessageFormat.format("groups/{0}/members", new Object[]{groupKey}); WebClient webClient = WebClient.fromClient(directoryApiClient, true).path(path); ClientAccessToken accessToken = tokenCache.get(); webClient.authorization(accessToken); GroupMembership result; try { if (parent != null && parent.getNextPageToken() != null) { result = webClient.query("pageToken", parent.getNextPageToken()).get(GroupMembership.class); result.getMembers().addAll(parent.getMembers()); } else { result = webClient.get(GroupMembership.class); } return result.getNextPageToken() != null ? readGroupMembers(groupKey, result) : result; } catch (NotFoundException e) { throw new ResourceNotFoundException("Group " + groupKey + " not found.", e); } }
private GSuiteUsers readAllUsers(GSuiteUsers parent) { WebClient webClient = WebClient.fromClient(directoryApiClient, true).path("users"); ClientAccessToken accessToken = tokenCache.get(); webClient.authorization(accessToken); GSuiteUsers result; webClient.query("domain", config.getGSuiteDomain()); if (parent != null && parent.getNextPageToken() != null) { result = webClient.query("pageToken", parent.getNextPageToken()).get(GSuiteUsers.class); result.getUsers().addAll(parent.getUsers()); } else { result = webClient.get(GSuiteUsers.class); } return result.getNextPageToken() != null ? readAllUsers(result) : result; }
private WebClient createRsWebClient(String address, ClientAccessToken at, String clientContext) { JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean(); bean.setAddress(address); SpringBusFactory bf = new SpringBusFactory(); URL busFile = JAXRSOAuth2TlsTest.class.getResource(clientContext); Bus springBus = bf.createBus(busFile.toString()); bean.setBus(springBus); WebClient wc = bean.createWebClient(); wc.accept(MediaType.APPLICATION_XML); wc.authorization(at); return wc; }
@Test public void testRegisterClientTwoWayTLSClientIdBoundDynReg() throws Exception { String dynRegAddress = "https://localhost:" + PORT + "/oauth2Jwt/register"; WebClient wcDynReg = createDynRegWebClient(dynRegAddress); wcDynReg.accept("application/json").type("application/json"); ClientRegistration reg = newClientRegistration(); wcDynReg.authorization(new ClientAccessToken("Bearer", "123456789")); ClientRegistrationResponse resp = wcDynReg.post(reg, ClientRegistrationResponse.class); doTestTwoWayTLSClientIdBoundJwt(resp.getClientId()); // delete the client String regAccessToken = resp.getRegistrationAccessToken(); assertNotNull(regAccessToken); wcDynReg.path(resp.getClientId()); wcDynReg.authorization(new ClientAccessToken("Bearer", regAccessToken)); assertEquals(200, wcDynReg.delete().getStatus()); assertNotNull(regAccessToken); }
@org.junit.Test public void testRegisterClientInitialAccessTokenCodeGrant() throws Exception { URL busFile = OIDCDynamicRegistrationTest.class.getResource("client.xml"); String address = "https://localhost:" + PORT + "/services/dynamicWithAt/register"; WebClient wc = WebClient.create(address, Collections.singletonList(new JsonMapObjectProvider()), busFile.toString()); wc.accept("application/json").type("application/json"); ClientRegistration reg = newClientRegistrationCodeGrant(); ClientRegistrationResponse resp = null; assertEquals(401, wc.post(reg).getStatus()); wc.authorization(new ClientAccessToken("Bearer", "123456789")); resp = wc.post(reg, ClientRegistrationResponse.class); assertNotNull(resp.getClientId()); assertNotNull(resp.getClientSecret()); assertEquals(address + "/" + resp.getClientId(), resp.getRegistrationClientUri()); String regAccessToken = resp.getRegistrationAccessToken(); assertNotNull(regAccessToken); wc.reset(); wc.path(resp.getClientId()); assertEquals(401, wc.get().getStatus()); wc.authorization(new ClientAccessToken("Bearer", regAccessToken)); ClientRegistration clientRegResp = wc.get(ClientRegistration.class); testCommonRegCodeGrantProperties(clientRegResp); assertNull(clientRegResp.getTokenEndpointAuthMethod()); assertEquals(200, wc.delete().getStatus()); }
assertEquals(401, wc.post(reg).getStatus()); wc.authorization(new ClientAccessToken("Bearer", "123456789")); resp = wc.post(reg, ClientRegistrationResponse.class); assertEquals(401, wc.get().getStatus()); wc.authorization(new ClientAccessToken("Bearer", regAccessToken)); ClientRegistration clientRegResp = wc.get(ClientRegistration.class); testCommonRegCodeGrantProperties(clientRegResp);
reg.setGrantTypes(Collections.singletonList(OAuthConstants.RESOURCE_OWNER_GRANT)); wc.authorization(new ClientAccessToken("Bearer", "123456789")); ClientRegistrationResponse resp = wc.post(reg, ClientRegistrationResponse.class); wc.path(resp.getClientId()); wc.authorization(new ClientAccessToken("Bearer", regAccessToken)); ClientRegistration clientRegResp = wc.get(ClientRegistration.class); assertEquals("web", clientRegResp.getApplicationType());
reg.setGrantTypes(Collections.singletonList(OAuthConstants.RESOURCE_OWNER_GRANT)); reg.setTokenEndpointAuthMethod(OAuthConstants.TOKEN_ENDPOINT_AUTH_NONE); wc.authorization(new ClientAccessToken("Bearer", "123456789")); ClientRegistrationResponse resp = wc.post(reg, ClientRegistrationResponse.class); wc.path(resp.getClientId()); wc.authorization(new ClientAccessToken("Bearer", regAccessToken)); ClientRegistration clientRegResp = wc.get(ClientRegistration.class); assertEquals("native", clientRegResp.getApplicationType());