Skip to content
This repository was archived by the owner on May 29, 2025. It is now read-only.

Commit 866fde7

Browse files
authored
Merge pull request #1 from isccarrasco/update-auth-mechanism
Update auth mechanism
2 parents e729769 + 92afa95 commit 866fde7

File tree

15 files changed

+118
-161
lines changed

15 files changed

+118
-161
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
/.recommenders/
33
CE4IoTConnector/CE4IoTConnectorOAuthStore.xml
44
CE4IoTConnector/CE4IoTConnectorOAuthStore.xml
5+
.idea/

iotp-adaptor/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/target/
22
/build/
3+
.idea/
34

45
*.class
56

@@ -15,3 +16,6 @@
1516
hs_err_pid*
1617

1718
/OAuthStore.xml
19+
20+
overlays/
21+
*.iml

iotp-adaptor/pom.xml

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,6 @@
103103
<artifactId>ws-commons-util</artifactId>
104104
<version>1.0.2</version>
105105
</dependency>
106-
<dependency>
107-
<groupId>org.eclipse.lyo.oslc4j.core</groupId>
108-
<artifactId>oslc4j-core</artifactId>
109-
<version>${version.lyo.core}</version>
110-
</dependency>
111-
<dependency>
112-
<groupId>org.eclipse.lyo.oslc4j.core</groupId>
113-
<artifactId>oslc4j-jena-provider</artifactId>
114-
<version>${version.lyo.core}</version>
115-
</dependency>
116106
<dependency>
117107
<groupId>org.eclipse.lyo.oslc4j.core</groupId>
118108
<artifactId>oslc4j-wink</artifactId>
@@ -152,7 +142,7 @@
152142
<dependency>
153143
<groupId>javax.servlet</groupId>
154144
<artifactId>javax.servlet-api</artifactId>
155-
<version>3.1.0</version>
145+
<version>4.0.1</version>
156146
<scope>provided</scope>
157147
</dependency>
158148
<dependency>
@@ -173,7 +163,7 @@
173163
<dependency>
174164
<groupId>org.slf4j</groupId>
175165
<artifactId>slf4j-log4j12</artifactId>
176-
<version>1.6.4</version>
166+
<version>1.7.25</version>
177167
<scope>runtime</scope>
178168
</dependency>
179169
<dependency>
@@ -190,7 +180,7 @@
190180
<dependency>
191181
<groupId>com.google.code.gson</groupId>
192182
<artifactId>gson</artifactId>
193-
<version>2.8.1</version>
183+
<version>2.8.5</version>
194184
</dependency>
195185
<dependency>
196186
<groupId>org.dojotoolkit</groupId>
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.ibm.oslc.adaptor.iotp.impl;
2+
3+
import java.io.IOException;
4+
import javax.servlet.Filter;
5+
import javax.servlet.FilterChain;
6+
import javax.servlet.FilterConfig;
7+
import javax.servlet.ServletException;
8+
import javax.servlet.ServletRequest;
9+
import javax.servlet.ServletResponse;
10+
import javax.servlet.http.HttpServletRequest;
11+
import javax.servlet.http.HttpServletResponse;
12+
13+
/**
14+
* Servlet Filter implementation class CORSFilter
15+
*/
16+
// Enable it for Servlet 3.x implementations
17+
/* @ WebFilter(asyncSupported = true, urlPatterns = { "/*" }) */
18+
public class CORSFilter implements Filter {
19+
20+
/**
21+
* Default constructor.
22+
*/
23+
public CORSFilter() {
24+
// TODO Auto-generated constructor stub
25+
}
26+
27+
/**
28+
* @see Filter#destroy()
29+
*/
30+
public void destroy() {
31+
// TODO Auto-generated method stub
32+
}
33+
34+
/**
35+
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
36+
*/
37+
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
38+
throws IOException, ServletException {
39+
40+
HttpServletRequest request = (HttpServletRequest) servletRequest;
41+
System.out.println("CORSFilter HTTP Request: " + request.getMethod());
42+
43+
// Authorize (allow) all domains to consume the content
44+
((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Origin", "*");
45+
((HttpServletResponse) servletResponse).addHeader("Access-Control-Allow-Methods","GET, OPTIONS, HEAD, PUT, POST");
46+
47+
HttpServletResponse resp = (HttpServletResponse) servletResponse;
48+
49+
// For HTTP OPTIONS verb/method reply with ACCEPTED status code -- per CORS handshake
50+
if (request.getMethod().equals("OPTIONS")) {
51+
resp.setStatus(HttpServletResponse.SC_ACCEPTED);
52+
return;
53+
}
54+
55+
// pass the request along the filter chain
56+
chain.doFilter(request, servletResponse);
57+
}
58+
59+
/**
60+
* @see Filter#init(FilterConfig)
61+
*/
62+
public void init(FilterConfig fConfig) throws ServletException {
63+
// TODO Auto-generated method stub
64+
}
65+
66+
}

iotp-adaptor/src/main/java/com/ibm/oslc/adaptor/iotp/impl/CredentialsFilter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import javax.servlet.http.HttpServletResponse;
3333
import javax.servlet.http.HttpSession;
3434

35-
import org.apache.http.HttpStatus;
3635
import org.eclipse.lyo.server.oauth.consumerstore.FileSystemConsumerStore;
3736
import org.eclipse.lyo.server.oauth.core.Application;
3837
import org.eclipse.lyo.server.oauth.core.AuthenticationException;

iotp-adaptor/src/main/java/com/ibm/oslc/adaptor/iotp/impl/IoTPClient.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -216,28 +216,24 @@ public void checkServerTrusted(java.security.cert.X509Certificate[] certs, Strin
216216
*
217217
*/
218218
public void login() throws UnauthorizedException {
219-
String clientId = clientProperties.getProperty("clientId");
220-
String secret = clientProperties.getProperty("secret");
221-
219+
String apiKey = clientProperties.getProperty("apiKey");
220+
222221
String result = "login failed";
223222
HttpResponse response = null;
224223
int status_code = 0;
225-
224+
226225
try {
227226
HttpClient client = HttpClientBuilder.create().build();
228227

229-
URIBuilder builder = new URIBuilder("https://iam.bluemix.net/oidc/token");
230-
builder.setParameter("grant_type", "password");
231-
builder.addParameter("response_type", "cloud_iam");
232-
builder.addParameter("username", user);
233-
builder.addParameter("password", password);
228+
URIBuilder builder = new URIBuilder("https://iam.cloud.ibm.com/identity/token");
229+
builder.setParameter("grant_type", "urn:ibm:params:oauth:grant-type:apikey");
230+
builder.addParameter("apikey", apiKey);
234231

235232
HttpPost post = new HttpPost(builder.build());
236-
Header authHeader = new BasicHeader(HttpHeaders.AUTHORIZATION, "Basic "+Base64.getEncoder().encodeToString((clientId+":"+secret).getBytes()));
233+
Header authHeader = new BasicHeader("Content-Type", "application/x-www-form-urlencoded");
237234
post.addHeader(authHeader);
238-
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
239235
response = client.execute(post);
240-
236+
241237
status_code = response.getStatusLine().getStatusCode();
242238
if (status_code != HttpStatus.SC_OK) {
243239
log.error("Couldn't get access_token: "+status_code);

iotp-adaptor/src/main/java/com/ibm/oslc/adaptor/iotp/resources/DeviceType.java

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -194,26 +194,29 @@ public DeviceType(final HttpServletRequest httpServletRequest, final IotpService
194194
}
195195
this.setLogicalInterfaces(links);
196196
}
197-
198-
JsonObject devInfo = deviceTypeO.get("deviceInfo").getAsJsonObject();
199-
if (element != null) {
200-
element = devInfo.get("serialNumber");
201-
if (element != null) deviceInfo.setSerialNumber(element.getAsString());
202-
element = devInfo.get("manufacturer");
203-
if (element != null) deviceInfo.setManufacturer(element.getAsString());
204-
element = devInfo.get("model");
205-
if (element != null) deviceInfo.setModel(element.getAsString());
206-
element = devInfo.get("deviceClass");
207-
if (element != null) deviceInfo.setDeviceClass(element.getAsString());
208-
element = devInfo.get("description");
209-
if (element != null) deviceInfo.setDescription(element.getAsString());
210-
element = devInfo.get("fwVersion");
211-
if (element != null) deviceInfo.setFwVersion(element.getAsString());
212-
element = devInfo.get("hwVersion");
213-
if (element != null) deviceInfo.setHwVersion(element.getAsString());
214-
element = devInfo.get("descriptiveLocation");
215-
if (element != null) deviceInfo.setDescriptiveLocation(element.getAsString());
216-
}
197+
198+
if (deviceTypeO.has("deviceInfo")) {
199+
JsonObject devInfo = deviceTypeO.get("deviceInfo").getAsJsonObject();
200+
if (element != null) {
201+
element = devInfo.get("serialNumber");
202+
if (element != null) deviceInfo.setSerialNumber(element.getAsString());
203+
element = devInfo.get("manufacturer");
204+
if (element != null) deviceInfo.setManufacturer(element.getAsString());
205+
element = devInfo.get("model");
206+
if (element != null) deviceInfo.setModel(element.getAsString());
207+
element = devInfo.get("deviceClass");
208+
if (element != null) deviceInfo.setDeviceClass(element.getAsString());
209+
element = devInfo.get("description");
210+
if (element != null) deviceInfo.setDescription(element.getAsString());
211+
element = devInfo.get("fwVersion");
212+
if (element != null) deviceInfo.setFwVersion(element.getAsString());
213+
element = devInfo.get("hwVersion");
214+
if (element != null) deviceInfo.setHwVersion(element.getAsString());
215+
element = devInfo.get("descriptiveLocation");
216+
if (element != null) deviceInfo.setDescriptiveLocation(element.getAsString());
217+
}
218+
}
219+
217220

218221
element = deviceTypeO.get("metadata");
219222
if (element != null) {

iotp-adaptor/src/main/java/com/ibm/oslc/adaptor/iotp/resources/RdfsClass.java

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,50 +28,27 @@
2828

2929
import java.net.URI;
3030
import java.net.URISyntaxException;
31-
import java.util.ArrayList;
32-
import java.util.Arrays;
33-
import java.util.Date;
34-
import java.util.HashMap;
35-
import java.util.Map;
36-
import java.text.SimpleDateFormat;
37-
import java.util.HashSet;
38-
import java.util.List;
39-
import java.util.Set;
40-
import java.util.TreeSet;
41-
import java.util.Iterator;
4231
import javax.servlet.http.HttpServletRequest;
43-
import java.io.UnsupportedEncodingException;
44-
import java.net.URLEncoder;
45-
import javax.ws.rs.core.UriBuilder;
4632

4733
import org.eclipse.lyo.oslc4j.core.OSLC4JUtils;
4834
import org.eclipse.lyo.oslc4j.core.exception.OslcCoreApplicationException;
49-
import org.eclipse.lyo.oslc4j.core.annotation.OslcAllowedValue;
5035
import org.eclipse.lyo.oslc4j.core.annotation.OslcDescription;
51-
import org.eclipse.lyo.oslc4j.core.annotation.OslcMemberProperty;
5236
import org.eclipse.lyo.oslc4j.core.annotation.OslcName;
5337
import org.eclipse.lyo.oslc4j.core.annotation.OslcNamespace;
5438
import org.eclipse.lyo.oslc4j.core.annotation.OslcOccurs;
5539
import org.eclipse.lyo.oslc4j.core.annotation.OslcPropertyDefinition;
5640
import org.eclipse.lyo.oslc4j.core.annotation.OslcRange;
5741
import org.eclipse.lyo.oslc4j.core.annotation.OslcReadOnly;
58-
import org.eclipse.lyo.oslc4j.core.annotation.OslcRepresentation;
5942
import org.eclipse.lyo.oslc4j.core.annotation.OslcResourceShape;
60-
import org.eclipse.lyo.oslc4j.core.annotation.OslcTitle;
6143
import org.eclipse.lyo.oslc4j.core.annotation.OslcValueType;
6244
import org.eclipse.lyo.oslc4j.core.model.AbstractResource;
6345
import org.eclipse.lyo.oslc4j.core.model.Link;
6446
import org.eclipse.lyo.oslc4j.core.model.Occurs;
6547
import org.eclipse.lyo.oslc4j.core.model.OslcConstants;
66-
import org.eclipse.lyo.oslc4j.core.model.Representation;
6748
import org.eclipse.lyo.oslc4j.core.model.ValueType;
6849
import org.eclipse.lyo.oslc4j.core.model.ResourceShape;
6950
import org.eclipse.lyo.oslc4j.core.model.ResourceShapeFactory;
7051

71-
import com.ibm.oslc.adaptor.iotp.resources.RdfsDomainConstants;
72-
import com.ibm.oslc.adaptor.iotp.resources.RdfsDomainConstants;
73-
import com.ibm.oslc.adaptor.iotp.resources.RdfsClass;
74-
7552
// Start of user code imports
7653
// End of user code
7754

iotp-adaptor/src/main/java/com/ibm/oslc/adaptor/iotp/resources/Resource.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,60 +30,35 @@
3030

3131
import java.net.URI;
3232
import java.net.URISyntaxException;
33-
import java.util.ArrayList;
34-
import java.util.Arrays;
3533
import java.util.Date;
36-
import java.util.HashMap;
37-
import java.util.Map;
3834
import java.text.SimpleDateFormat;
3935
import java.util.HashSet;
40-
import java.util.List;
41-
import java.util.Set;
42-
import java.util.TreeSet;
4336
import java.util.Iterator;
4437
import javax.servlet.http.HttpServletRequest;
45-
import java.io.UnsupportedEncodingException;
46-
import java.net.URLEncoder;
47-
import javax.ws.rs.core.UriBuilder;
4838

4939
import org.eclipse.lyo.oslc4j.core.OSLC4JUtils;
5040
import org.eclipse.lyo.oslc4j.core.exception.OslcCoreApplicationException;
51-
import org.eclipse.lyo.oslc4j.core.annotation.OslcAllowedValue;
5241
import org.eclipse.lyo.oslc4j.core.annotation.OslcDescription;
53-
import org.eclipse.lyo.oslc4j.core.annotation.OslcMemberProperty;
5442
import org.eclipse.lyo.oslc4j.core.annotation.OslcName;
5543
import org.eclipse.lyo.oslc4j.core.annotation.OslcNamespace;
5644
import org.eclipse.lyo.oslc4j.core.annotation.OslcOccurs;
5745
import org.eclipse.lyo.oslc4j.core.annotation.OslcPropertyDefinition;
5846
import org.eclipse.lyo.oslc4j.core.annotation.OslcRange;
5947
import org.eclipse.lyo.oslc4j.core.annotation.OslcReadOnly;
60-
import org.eclipse.lyo.oslc4j.core.annotation.OslcRepresentation;
6148
import org.eclipse.lyo.oslc4j.core.annotation.OslcResourceShape;
6249
import org.eclipse.lyo.oslc4j.core.annotation.OslcTitle;
6350
import org.eclipse.lyo.oslc4j.core.annotation.OslcValueType;
6451
import org.eclipse.lyo.oslc4j.core.model.AbstractResource;
6552
import org.eclipse.lyo.oslc4j.core.model.Link;
6653
import org.eclipse.lyo.oslc4j.core.model.Occurs;
6754
import org.eclipse.lyo.oslc4j.core.model.OslcConstants;
68-
import org.eclipse.lyo.oslc4j.core.model.Representation;
6955
import org.eclipse.lyo.oslc4j.core.model.ValueType;
7056
import org.eclipse.lyo.oslc4j.core.model.ResourceShape;
7157
import org.eclipse.lyo.oslc4j.core.model.ResourceShapeFactory;
7258

73-
import com.ibm.oslc.adaptor.iotp.resources.Oslc_amDomainConstants;
74-
import com.ibm.oslc.adaptor.iotp.resources.DctermsDomainConstants;
75-
import com.ibm.oslc.adaptor.iotp.resources.FoafDomainConstants;
76-
import com.ibm.oslc.adaptor.iotp.resources.OslcDomainConstants;
77-
import com.ibm.oslc.adaptor.iotp.resources.RdfDomainConstants;
78-
import com.ibm.oslc.adaptor.iotp.resources.Person;
79-
import com.ibm.oslc.adaptor.iotp.resources.Person;
80-
import com.ibm.oslc.adaptor.iotp.resources.Discussion;
81-
8259
// Start of user code imports
8360
import com.google.gson.JsonElement;
8461
import com.google.gson.JsonObject;
85-
import com.google.gson.JsonArray;
86-
import java.text.SimpleDateFormat;
8762
import java.text.DateFormat;
8863
import java.text.ParseException;
8964
// End of user code

0 commit comments

Comments
 (0)