Skip to content
This repository was archived by the owner on Dec 12, 2018. It is now read-only.

Commit c8cd0e7

Browse files
committed
Merge branch 'okta' of github.com:stormpath/stormpath-sdk-java into okta
2 parents 28a770a + 8a33a19 commit c8cd0e7

File tree

7 files changed

+172
-0
lines changed

7 files changed

+172
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.stormpath.sdk.application.okta;
2+
3+
import com.stormpath.sdk.resource.Resource;
4+
5+
/**
6+
*
7+
*/
8+
public interface ApplicationCredentials extends Resource {
9+
10+
String getClientId();
11+
12+
ApplicationCredentials setClientId(String clientId);
13+
14+
String getClientSecret();
15+
16+
ApplicationCredentials setClientSecret(String clientSecret);
17+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.stormpath.sdk.application.okta;
2+
3+
import com.stormpath.sdk.api.ApiKey;
4+
import com.stormpath.sdk.client.Client;
5+
6+
/**
7+
*
8+
*/
9+
public interface ClientApiKeyResolver {
10+
11+
12+
ApiKey getClientApiKey(Client client, String baseHref, String applicationId);
13+
14+
}

extensions/spring/stormpath-spring/src/main/java/com/stormpath/spring/config/AbstractStormpathConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.stormpath.sdk.api.ApiKeyBuilder;
2020
import com.stormpath.sdk.api.ApiKeys;
2121
import com.stormpath.sdk.application.Application;
22+
import com.stormpath.sdk.application.okta.ClientApiKeyResolver;
2223
import com.stormpath.sdk.cache.Caches;
2324
import com.stormpath.sdk.client.AuthenticationScheme;
2425
import com.stormpath.sdk.client.Client;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.stormpath.sdk.impl.application.okta;
2+
3+
import com.stormpath.sdk.application.okta.ApplicationCredentials;
4+
import com.stormpath.sdk.impl.ds.InternalDataStore;
5+
import com.stormpath.sdk.impl.resource.AbstractInstanceResource;
6+
import com.stormpath.sdk.impl.resource.Property;
7+
import com.stormpath.sdk.impl.resource.StringProperty;
8+
9+
import java.util.Map;
10+
11+
/**
12+
*
13+
*/
14+
public class DefaultApplicationCredentials extends AbstractInstanceResource implements ApplicationCredentials {
15+
16+
private final static StringProperty CLIENT_ID = new StringProperty("client_id");
17+
private final static StringProperty CLIENT_SECRET = new StringProperty("client_secret");
18+
19+
private static final Map<String, Property> PROPERTY_DESCRIPTORS = createPropertyDescriptorMap(CLIENT_ID, CLIENT_SECRET);
20+
21+
public DefaultApplicationCredentials(InternalDataStore dataStore) {
22+
super(dataStore);
23+
}
24+
25+
public DefaultApplicationCredentials(InternalDataStore dataStore, Map<String, Object> properties) {
26+
super(dataStore, properties);
27+
}
28+
29+
@Override
30+
public Map<String, Property> getPropertyDescriptors() {
31+
return PROPERTY_DESCRIPTORS;
32+
}
33+
34+
public String getClientId() {
35+
return getString(CLIENT_ID);
36+
}
37+
38+
public ApplicationCredentials setClientId(String clientId) {
39+
setProperty(CLIENT_ID, clientId);
40+
return this;
41+
}
42+
43+
public String getClientSecret() {
44+
return getString(CLIENT_SECRET);
45+
}
46+
47+
public ApplicationCredentials setClientSecret(String clientSecret) {
48+
setProperty(CLIENT_SECRET, clientSecret);
49+
return this;
50+
}
51+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.stormpath.sdk.impl.application.okta;
2+
3+
import com.stormpath.sdk.api.ApiKey;
4+
import com.stormpath.sdk.application.okta.ApplicationCredentials;
5+
import com.stormpath.sdk.application.okta.ClientApiKeyResolver;
6+
import com.stormpath.sdk.client.Client;
7+
import com.stormpath.sdk.impl.api.ClientApiKeyBuilder;
8+
9+
/**
10+
*
11+
*/
12+
public class OktaClientApiKeyResolver implements ClientApiKeyResolver {
13+
14+
@Override
15+
public ApiKey getClientApiKey(Client client, String baseHref, String applicationId) {
16+
String applicationCredentialsHref = baseHref + "/internal/apps/" + applicationId + "/settings/clientcreds";
17+
ApplicationCredentials applicationCredentials = client.getResource(applicationCredentialsHref, ApplicationCredentials.class);
18+
19+
return new ClientApiKeyBuilder()
20+
.setId(applicationCredentials.getClientId())
21+
.setSecret(applicationCredentials.getClientSecret())
22+
.build();
23+
}
24+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.stormpath.sdk.impl.application.okta
2+
3+
import com.stormpath.sdk.impl.application.okta.DefaultApplicationCredentials
4+
import org.testng.annotations.Test
5+
6+
import static org.hamcrest.MatcherAssert.*
7+
import static org.hamcrest.Matchers.*
8+
9+
/**
10+
*Tests for {@link DefaultApplicationCredentials}.
11+
*/
12+
class DefaultApplicationCredentialsTest {
13+
14+
@Test
15+
void buildFromMapTest() {
16+
17+
def map = [
18+
client_id : "the_client_id",
19+
client_secret : "the_client_secret",
20+
token_endpoint_auth_method : "client_secret_basic"
21+
]
22+
23+
def applicationCredentials = new DefaultApplicationCredentials(null, map);
24+
25+
assertThat(applicationCredentials.clientId, is("the_client_id"))
26+
assertThat(applicationCredentials.clientSecret, is("the_client_secret"))
27+
}
28+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.stormpath.sdk.impl.application.okta
2+
3+
import com.stormpath.sdk.application.okta.ApplicationCredentials
4+
import com.stormpath.sdk.client.Client
5+
import org.testng.annotations.Test
6+
7+
import static org.easymock.EasyMock.*
8+
import static org.hamcrest.MatcherAssert.*
9+
import static org.hamcrest.Matchers.*
10+
11+
/**
12+
* Tests for {@link OktaClientApiKeyResolver}.
13+
*/
14+
class OktaClientApiKeyResolverTest {
15+
16+
@Test
17+
void basicCreationTest() {
18+
19+
def resolver = new OktaClientApiKeyResolver()
20+
def baseHref = "http://example.com/api/v1"
21+
def applicationId = "the_app_id"
22+
def appCredentials = new DefaultApplicationCredentials(null, new HashMap<String, Object>())
23+
appCredentials.setClientId("client_id")
24+
appCredentials.setClientSecret("client_secret")
25+
26+
def client = createStrictMock(Client)
27+
expect(client.getResource(baseHref + "/internal/apps/"+ applicationId +"/settings/clientcreds", ApplicationCredentials)).andReturn(appCredentials)
28+
replay client
29+
30+
def apiKey = resolver.getClientApiKey(client, baseHref, applicationId)
31+
assertThat(apiKey.id, is("client_id"))
32+
assertThat(apiKey.secret, is("client_secret"))
33+
34+
verify client
35+
36+
}
37+
}

0 commit comments

Comments
 (0)