You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/10/17 19:22:32 UTC
svn commit: r1185295 - in /cxf/trunk:
distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/
rt/rs/security/oauth-parent/oauth-test/src/main/java/org/apache/cxf/rs/security/oauth/test/
rt/rs/security/oauth-paren...
Author: sergeyb
Date: Mon Oct 17 17:22:31 2011
New Revision: 1185295
URL: http://svn.apache.org/viewvc?rev=1185295&view=rev
Log:
[CXF-2759] Adding initial java docs, plus few minor refactorings
Added:
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientUtils.java
- copied, changed from r1184927, cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientSupport.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5SequenceGenerator.java
- copied, changed from r1184927, cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5TokenGenerator.java
Removed:
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientSupport.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5TokenGenerator.java
Modified:
cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/ApplicationController.java
cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/MemoryOAuthDataProvider.java
cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/SampleOAuthDataProvider.java
cxf/trunk/rt/rs/security/oauth-parent/oauth-test/src/main/java/org/apache/cxf/rs/security/oauth/test/MemoryOAuthDataProvider.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/AccessToken.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Client.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthAuthorizationData.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthPermission.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Permission.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestToken.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestTokenRegistration.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Token.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/AbstractAuthFilter.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthInfo.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthRequestFilter.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthServletFilter.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/DefaultOAuthValidator.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthDataProvider.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthServiceException.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AbstractOAuthService.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenHandler.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenService.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AuthorizationRequestHandler.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/RequestTokenHandler.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthConstants.java
cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthUtils.java
Modified: cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/ApplicationController.java
URL: http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/ApplicationController.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/ApplicationController.java (original)
+++ cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/ApplicationController.java Mon Oct 17 17:22:31 2011
@@ -27,7 +27,7 @@ import javax.servlet.http.HttpServletReq
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.rs.security.oauth.data.Client;
-import org.apache.cxf.rs.security.oauth.provider.MD5TokenGenerator;
+import org.apache.cxf.rs.security.oauth.provider.MD5SequenceGenerator;
import org.apache.cxf.rs.security.oauth.provider.OAuthDataProvider;
import org.apache.cxf.rs.security.oauth.utils.OAuthUtils;
@@ -63,15 +63,15 @@ public class ApplicationController imple
return handleInternalRedirect(clientApp);
}
- MD5TokenGenerator tokenGen = new MD5TokenGenerator();
+ MD5SequenceGenerator tokenGen = new MD5SequenceGenerator();
Principal principal = SecurityContextHolder.getContext().getAuthentication();
String consumerKey = clientApp.getConsumerKey();
if (StringUtils.isEmpty(consumerKey)) {
consumerKey = tokenGen
- .generateToken((principal.getName() + clientApp.getClientName()).getBytes("UTF-8"));
+ .generate((principal.getName() + clientApp.getClientName()).getBytes("UTF-8"));
}
- String secretKey = tokenGen.generateToken(new SecureRandom().generateSeed(20));
+ String secretKey = tokenGen.generate(new SecureRandom().generateSeed(20));
Client clientInfo =
new Client(consumerKey, secretKey, clientApp.getClientName(), clientApp.getCallbackURL());
Modified: cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/MemoryOAuthDataProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/MemoryOAuthDataProvider.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/MemoryOAuthDataProvider.java (original)
+++ cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/MemoryOAuthDataProvider.java Mon Oct 17 17:22:31 2011
@@ -37,7 +37,7 @@ import org.apache.cxf.rs.security.oauth.
import org.apache.cxf.rs.security.oauth.data.RequestTokenRegistration;
import org.apache.cxf.rs.security.oauth.data.Token;
import org.apache.cxf.rs.security.oauth.provider.DefaultOAuthValidator;
-import org.apache.cxf.rs.security.oauth.provider.MD5TokenGenerator;
+import org.apache.cxf.rs.security.oauth.provider.MD5SequenceGenerator;
import org.apache.cxf.rs.security.oauth.provider.OAuthDataProvider;
import org.apache.cxf.rs.security.oauth.provider.OAuthServiceException;
@@ -67,7 +67,7 @@ public class MemoryOAuthDataProvider imp
protected ConcurrentHashMap<String, Token> oauthTokens = new ConcurrentHashMap<String, Token>();
- protected MD5TokenGenerator tokenGenerator = new MD5TokenGenerator();
+ protected MD5SequenceGenerator tokenGenerator = new MD5SequenceGenerator();
protected DefaultOAuthValidator validator = new DefaultOAuthValidator();
@@ -123,17 +123,17 @@ public class MemoryOAuthDataProvider imp
return requestToken;
}
- public String createRequestTokenVerifier(RequestToken requestToken) throws
+ public String setRequestTokenVerifier(RequestToken requestToken) throws
OAuthServiceException {
- requestToken.setOauthVerifier(generateToken());
- return requestToken.getOauthVerifier();
+ requestToken.setVerifier(generateToken());
+ return requestToken.getVerifier();
}
public AccessToken createAccessToken(RequestToken requestToken) throws
OAuthServiceException {
Client client = requestToken.getClient();
- requestToken = getRequestToken(requestToken.getTokenString());
+ requestToken = getRequestToken(requestToken.getTokenKey());
String accessTokenString = generateToken();
String tokenSecretString = generateToken();
@@ -144,7 +144,7 @@ public class MemoryOAuthDataProvider imp
accessToken.setUris(requestToken.getUris());
synchronized (oauthTokens) {
- oauthTokens.remove(requestToken.getTokenString());
+ oauthTokens.remove(requestToken.getTokenKey());
oauthTokens.put(accessTokenString, accessToken);
synchronized (userAuthorizedClients) {
userAuthorizedClients.add(client.getConsumerKey(), client.getConsumerKey());
@@ -179,7 +179,7 @@ public class MemoryOAuthDataProvider imp
for (Token token : oauthTokens.values()) {
Client authNInfo = token.getClient();
if (consumerKey.equals(authNInfo.getConsumerKey())) {
- oauthTokens.remove(token.getTokenString());
+ oauthTokens.remove(token.getTokenKey());
}
}
}
@@ -188,7 +188,7 @@ public class MemoryOAuthDataProvider imp
protected String generateToken() throws OAuthServiceException {
String token;
try {
- token = tokenGenerator.generateToken(UUID.randomUUID().toString().getBytes("UTF-8"));
+ token = tokenGenerator.generate(UUID.randomUUID().toString().getBytes("UTF-8"));
} catch (Exception e) {
throw new OAuthServiceException("Unable to create token ", e.getCause());
}
Modified: cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/SampleOAuthDataProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/SampleOAuthDataProvider.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/SampleOAuthDataProvider.java (original)
+++ cxf/trunk/distribution/src/main/release/samples/oauth/server/src/main/java/demo/oauth/server/controllers/SampleOAuthDataProvider.java Mon Oct 17 17:22:31 2011
@@ -78,7 +78,7 @@ public class SampleOAuthDataProvider ext
for (Token token : oauthTokens.values()) {
Client authNInfo = token.getClient();
if (consumerKey.equals(authNInfo.getConsumerKey())) {
- oauthTokens.remove(token.getTokenString());
+ oauthTokens.remove(token.getTokenKey());
}
}
}
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth-test/src/main/java/org/apache/cxf/rs/security/oauth/test/MemoryOAuthDataProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth-test/src/main/java/org/apache/cxf/rs/security/oauth/test/MemoryOAuthDataProvider.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth-test/src/main/java/org/apache/cxf/rs/security/oauth/test/MemoryOAuthDataProvider.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth-test/src/main/java/org/apache/cxf/rs/security/oauth/test/MemoryOAuthDataProvider.java Mon Oct 17 17:22:31 2011
@@ -37,7 +37,7 @@ import org.apache.cxf.rs.security.oauth.
import org.apache.cxf.rs.security.oauth.data.RequestTokenRegistration;
import org.apache.cxf.rs.security.oauth.data.Token;
import org.apache.cxf.rs.security.oauth.provider.DefaultOAuthValidator;
-import org.apache.cxf.rs.security.oauth.provider.MD5TokenGenerator;
+import org.apache.cxf.rs.security.oauth.provider.MD5SequenceGenerator;
import org.apache.cxf.rs.security.oauth.provider.OAuthDataProvider;
import org.apache.cxf.rs.security.oauth.provider.OAuthServiceException;
@@ -62,7 +62,8 @@ public class MemoryOAuthDataProvider imp
protected ConcurrentHashMap<String, Token> oauthTokens = new ConcurrentHashMap<String, Token>();
- protected MD5TokenGenerator tokenGenerator = new MD5TokenGenerator();
+ protected MD5SequenceGenerator tokenGenerator =
+ new MD5SequenceGenerator();
protected DefaultOAuthValidator validator = new DefaultOAuthValidator();
@@ -121,17 +122,17 @@ public class MemoryOAuthDataProvider imp
return requestToken;
}
- public String createRequestTokenVerifier(RequestToken requestToken) throws
+ public String setRequestTokenVerifier(RequestToken requestToken) throws
OAuthServiceException {
- requestToken.setOauthVerifier(generateToken());
- return requestToken.getOauthVerifier();
+ requestToken.setVerifier(generateToken());
+ return requestToken.getVerifier();
}
public AccessToken createAccessToken(RequestToken requestToken) throws
OAuthServiceException {
Client client = requestToken.getClient();
- requestToken = getRequestToken(requestToken.getTokenString());
+ requestToken = getRequestToken(requestToken.getTokenKey());
String accessTokenString = generateToken();
String tokenSecretString = generateToken();
@@ -142,7 +143,7 @@ public class MemoryOAuthDataProvider imp
accessToken.setUris(requestToken.getUris());
synchronized (oauthTokens) {
- oauthTokens.remove(requestToken.getTokenString());
+ oauthTokens.remove(requestToken.getTokenKey());
oauthTokens.put(accessTokenString, accessToken);
synchronized (userAuthorizedClients) {
userAuthorizedClients.add(client.getConsumerKey(), client.getConsumerKey());
@@ -177,7 +178,7 @@ public class MemoryOAuthDataProvider imp
for (Token token : oauthTokens.values()) {
Client authNInfo = token.getClient();
if (consumerKey.equals(authNInfo.getConsumerKey())) {
- oauthTokens.remove(token.getTokenString());
+ oauthTokens.remove(token.getTokenKey());
}
}
}
@@ -186,7 +187,7 @@ public class MemoryOAuthDataProvider imp
protected String generateToken() throws OAuthServiceException {
String token;
try {
- token = tokenGenerator.generateToken(UUID.randomUUID().toString().getBytes("UTF-8"));
+ token = tokenGenerator.generate(UUID.randomUUID().toString().getBytes("UTF-8"));
} catch (Exception e) {
throw new OAuthServiceException("Unable to create token ", e.getCause());
}
Copied: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientUtils.java (from r1184927, cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientSupport.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientUtils.java?p2=cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientUtils.java&p1=cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientSupport.java&r1=1184927&r2=1185295&rev=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientSupport.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/client/OAuthClientUtils.java Mon Oct 17 17:22:31 2011
@@ -34,16 +34,37 @@ import net.oauth.OAuthMessage;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.jaxrs.ext.form.Form;
-public final class OAuthClientSupport {
- private OAuthClientSupport() {
+/**
+ * The utility class for simplifying making OAuth request and access token
+ * requests as well as for creating Authorization OAuth headers
+ */
+public final class OAuthClientUtils {
+ private OAuthClientUtils() {
}
- public static URI getAuthorizationServiceURI(String authorizationServiceURI, String token) {
+
+ /**
+ * Returns URI of the authorization service with the query parameter containing
+ * the request token key
+ * @param authorizationServiceURI the service URI
+ * @param requestToken the request token key
+ * @return
+ */
+ public static URI getAuthorizationURI(String authorizationServiceURI, String requestToken) {
return UriBuilder.fromUri(authorizationServiceURI).
- queryParam("oauth_token", token).build();
+ queryParam("oauth_token", requestToken).build();
}
+ /**
+ * Returns a simple representation of the Request token
+ * @param requestTokenService initialized RequestToken service client
+ * @param consumer Consumer bean containing the consumer key and secret
+ * @param callback the callback URI where the request token verifier will
+ * be returned
+ * @param extraParams additional parameters such as state, scope, etc
+ * @return the token
+ */
public static Token getRequestToken(WebClient requestTokenService,
Consumer consumer,
URI callback,
@@ -63,6 +84,14 @@ public final class OAuthClientSupport {
OAuthAccessor accessor = new OAuthAccessor(oAuthConsumer);
return getToken(requestTokenService, accessor, parameters);
}
+
+ /**
+ * Returns a simple representation of the Access token
+ * @param accessTokenService initialized AccessToken service client
+ * @param consumer Consumer bean containing the consumer key and secret
+ * @param verifier the verifier/authorization key
+ * @return the token
+ */
public static Token getAccessToken(WebClient accessTokenService,
Consumer consumer,
Token requestToken,
@@ -81,14 +110,22 @@ public final class OAuthClientSupport {
return getToken(accessTokenService, accessor, parameters);
}
+ /**
+ * Creates OAuth Authorization header
+ * @param consumer Consumer bean containing the consumer key and secret
+ * @param token Access token representation
+ * @param method HTTP method
+ * @param requestURI request URI
+ * @return the header value
+ */
public static String createAuthorizationHeader(Consumer consumer,
- Token token,
+ Token accessToken,
String method,
String requestURI) {
Map<String, String> parameters = new HashMap<String, String>();
parameters.put(OAuth.OAUTH_CONSUMER_KEY, consumer.getKey());
- if (token != null) {
- parameters.put(OAuth.OAUTH_TOKEN, token.getToken());
+ if (accessToken != null) {
+ parameters.put(OAuth.OAUTH_TOKEN, accessToken.getToken());
}
parameters.put(OAuth.OAUTH_SIGNATURE_METHOD, "HMAC-SHA1");
parameters.put(OAuth.OAUTH_NONCE, UUID.randomUUID().toString());
@@ -97,9 +134,9 @@ public final class OAuthClientSupport {
OAuthConsumer oAuthConsumer =
new OAuthConsumer(null, consumer.getKey(), consumer.getSecret(), null);
OAuthAccessor accessor = new OAuthAccessor(oAuthConsumer);
- if (token != null) {
- accessor.accessToken = token.getToken();
- accessor.tokenSecret = token.getSecret();
+ if (accessToken != null) {
+ accessor.accessToken = accessToken.getToken();
+ accessor.tokenSecret = accessToken.getSecret();
}
return doGetAuthorizationHeader(accessor, method, requestURI, parameters);
}
@@ -128,6 +165,10 @@ public final class OAuthClientSupport {
throw new WebApplicationException(500);
}
}
+
+ /**
+ * Simple token representation
+ */
public static class Token {
private String token;
private String secret;
@@ -146,6 +187,9 @@ public final class OAuthClientSupport {
}
+ /**
+ * Simple consumer representation
+ */
public static class Consumer {
private String key;
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/AccessToken.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/AccessToken.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/AccessToken.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/AccessToken.java Mon Oct 17 17:22:31 2011
@@ -18,7 +18,9 @@
*/
package org.apache.cxf.rs.security.oauth.data;
-
+/**
+ * Access Token representation
+ */
public class AccessToken extends Token {
public AccessToken(Client client, String tokenString,
String tokenSecret) {
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Client.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Client.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Client.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Client.java Mon Oct 17 17:22:31 2011
@@ -20,7 +20,9 @@ package org.apache.cxf.rs.security.oauth
import java.util.Collections;
import java.util.List;
-
+/**
+ * Represents a registered third-party consumer
+ */
public class Client {
private String consumerKey;
private String secretKey;
@@ -32,68 +34,120 @@ public class Client {
private List<String> uris = Collections.emptyList();
private List<String> scopes = Collections.emptyList();
- public Client(String consumerKey,
+ public Client(String consumerId,
String secretKey,
String applicationName,
String applicationURI) {
- this.consumerKey = consumerKey;
+ this.consumerKey = consumerId;
this.secretKey = secretKey;
this.applicationURI = applicationURI;
this.applicationName = applicationName;
}
- public Client(String consumerKey, String secretKey) {
- this(consumerKey, secretKey, null, null);
+ public Client(String consumerId, String secretKey) {
+ this(consumerId, secretKey, null, null);
}
+ /**
+ * Gets the consumer registration id
+ * @return the consumer key
+ */
public String getConsumerKey() {
return consumerKey;
}
+ /**
+ * Gets the secret key
+ * @return the secret key
+ */
public String getSecretKey() {
return secretKey;
}
+ /**
+ * Gets the name of the third-party application
+ * this client represents
+ * @return the application name
+ */
public String getApplicationName() {
return applicationName;
}
+ /**
+ * Sets the name of the third-party application
+ * this client represents
+ * @param applicationName the name
+ */
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
-
+
+ /**
+ * Gets the public URI of the third-party application.
+ * For example, this property can be used to validate
+ * request token callbacks
+ * @return the application URI
+ */
public String getApplicationURI() {
return applicationURI;
}
+ /**
+ * Sets the public URI of the third-party application.
+ */
public void setApplicationURI(String applicationURI) {
this.applicationURI = applicationURI;
}
+ /**
+ * Gets the optional login name; can be used
+ * for enforcing the RBAC rules
+ * @return the login name
+ */
public String getLoginName() {
return loginName == null ? consumerKey : loginName;
}
+ /**
+ * Sets the optional login name
+ * @param name the login name
+ */
public void setLoginName(String name) {
this.loginName = name;
}
- public List<String> getUris() {
- return uris;
- }
-
- public void setUris(List<String> uris) {
- this.uris = uris;
- }
-
+ /**
+ * Returns a list of opaque permissions/scopes
+ * @return the scopes
+ */
public List<String> getScopes() {
return scopes;
}
+ /**
+ * Sets a list of opaque permissions/scopes
+ * @param scopes the scopes
+ */
public void setScopes(List<String> scopes) {
this.scopes = scopes;
}
+ /**
+ * Returns a list of relative URIs the consumer wishes to access
+ * @return the uris
+ */
+ public List<String> getUris() {
+ return uris;
+ }
+
+ /**
+ * Sets a list of relative URIs the consumer wishes to access
+ * @param uris the uris
+ */
+ public void setUris(List<String> uris) {
+ this.uris = uris;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthAuthorizationData.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthAuthorizationData.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthAuthorizationData.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthAuthorizationData.java Mon Oct 17 17:22:31 2011
@@ -23,6 +23,11 @@ import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
+/**
+ * This bean represents a resource owner authorization challenge.
+ * Typically, an HTML view will be returned to a resource owner who
+ * will authorize or deny the third-party consumer
+ */
@XmlRootElement(name = "authorizationData",
namespace = "http://org.apache.cxf.rs.security.oauth")
public class OAuthAuthorizationData implements Serializable {
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthPermission.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthPermission.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthPermission.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/OAuthPermission.java Mon Oct 17 17:22:31 2011
@@ -21,6 +21,9 @@ package org.apache.cxf.rs.security.oauth
import java.util.Collections;
import java.util.List;
+/**
+ * Provides the complete information about a given opaque permission.
+ */
public class OAuthPermission extends Permission {
private List<String> roles = Collections.emptyList();
private List<String> httpVerbs = Collections.emptyList();
@@ -36,30 +39,59 @@ public class OAuthPermission extends Per
this.roles = roles;
}
+ /**
+ * Returns an optional list of role names
+ * @return the roles
+ */
public List<String> getRoles() {
return roles;
}
+ /**
+ * Sets an optional list of HTTP verbs
+ * @param httpVerbs the verbs
+ */
public void setHttpVerbs(List<String> httpVerbs) {
this.httpVerbs = httpVerbs;
}
+ /**
+ * Returns an optional list of HTTP verbs
+ * @return the list of verbs
+ */
public List<String> getHttpVerbs() {
return httpVerbs;
}
+ /**
+ * Sets an optional URI
+ * @param uri the uri
+ */
public void setUri(String uri) {
this.uri = uri;
}
+ /**
+ * Returns an optional URI
+ * @return the uri
+ */
public String getUri() {
return uri;
}
+ /**
+ * Can be used to disable the default requirement for all
+ * consumer requests to contain an access token
+ * @param authorizationKeyRequired the boolean value
+ */
public void setAuthorizationKeyRequired(boolean authorizationKeyRequired) {
this.authorizationKeyRequired = authorizationKeyRequired;
}
+ /**
+ * Indicates if the access token must be present or not
+ * @return the boolean value
+ */
public boolean isAuthorizationKeyRequired() {
return authorizationKeyRequired;
}
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Permission.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Permission.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Permission.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Permission.java Mon Oct 17 17:22:31 2011
@@ -18,7 +18,11 @@
*/
package org.apache.cxf.rs.security.oauth.data;
-
+/**
+ * Base permission description which is visible to
+ * authorization handlers
+ * @see OAuthAuthorizationData
+ */
public class Permission {
private String permission;
private String description;
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestToken.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestToken.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestToken.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestToken.java Mon Oct 17 17:22:31 2011
@@ -18,6 +18,9 @@
*/
package org.apache.cxf.rs.security.oauth.data;
+/**
+ * Request Token representation
+ */
public class RequestToken extends Token {
private String oauthVerifier;
@@ -34,26 +37,51 @@ public class RequestToken extends Token
super(client, tokenString, tokenSecret, lifetime);
}
- public void setOauthVerifier(String oauthVerifier) {
- this.oauthVerifier = oauthVerifier;
+ /**
+ * Sets the token verifier
+ * @param oauthVerifier
+ */
+ public void setVerifier(String verifier) {
+ this.oauthVerifier = verifier;
}
- public String getOauthVerifier() {
+ /**
+ * Gets the token verifier
+ * @return the verifier
+ */
+ public String getVerifier() {
return oauthVerifier;
}
+ /**
+ * Sets the callback URI
+ * @param callback the callback
+ */
public void setCallback(String callback) {
this.callback = callback;
}
+ /**
+ * Gets the callback URI
+ * @return the callback
+ */
public String getCallback() {
return callback;
}
+ /**
+ * Sets the state - it will be reported back to the consumer
+ * after the authorization decision on this token has been made.
+ * @param state
+ */
public void setState(String state) {
this.state = state;
}
+ /**
+ * Gets the state
+ * @return the state
+ */
public String getState() {
return state;
}
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestTokenRegistration.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestTokenRegistration.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestTokenRegistration.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/RequestTokenRegistration.java Mon Oct 17 17:22:31 2011
@@ -20,6 +20,10 @@ package org.apache.cxf.rs.security.oauth
import java.util.List;
+/**
+ * Captures the information associated with the request token registration request.
+ * @see RequestToken
+ */
public class RequestTokenRegistration {
private Client client;
private String state;
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Token.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Token.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Token.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/data/Token.java Mon Oct 17 17:22:31 2011
@@ -21,7 +21,9 @@ package org.apache.cxf.rs.security.oauth
import java.util.Collections;
import java.util.List;
-
+/**
+ * Base Token representation
+ */
public abstract class Token {
protected String tokenString;
@@ -32,17 +34,17 @@ public abstract class Token {
protected List<String> scopes = Collections.emptyList();
protected List<String> uris = Collections.emptyList();
- protected Token(Client client, String tokenString,
+ protected Token(Client client, String tokenKey,
String tokenSecret, long lifetime) {
this.client = client;
- this.tokenString = tokenString;
+ this.tokenString = tokenKey;
this.tokenSecret = tokenSecret;
initTokenLifeTime(lifetime);
}
- protected Token(Client client, String tokenString,
+ protected Token(Client client, String tokenKey,
String tokenSecret) {
- this(client, tokenString, tokenSecret, -1);
+ this(client, tokenKey, tokenSecret, -1);
}
private void initTokenLifeTime(Long lifetm) {
@@ -50,39 +52,74 @@ public abstract class Token {
issuedAt = System.currentTimeMillis() / 1000;
}
+ /**
+ * Returns the Client associated with this token
+ * @return the client
+ */
public Client getClient() {
return client;
}
- public String getTokenString() {
+ /**
+ * Returns the token key
+ * @return the key
+ */
+ public String getTokenKey() {
return tokenString;
}
+ /**
+ * Returns the token secret
+ * @return the secret
+ */
public String getTokenSecret() {
return tokenSecret;
}
+ /**
+ * Returns the time (in seconds) when this token was issued at
+ * @return the seconds
+ */
public long getIssuedAt() {
return issuedAt;
}
+ /**
+ * Returns the number of seconds this token can be valid after it was issued
+ * @return the seconds
+ */
public long getLifetime() {
return lifetime;
}
+ /**
+ * Returns a list of opaque permissions/scopes
+ * @return the scopes
+ */
public List<String> getScopes() {
return scopes;
}
+ /**
+ * Sets a list of opaque permissions/scopes
+ * @param scopes the scopes
+ */
public void setScopes(List<String> scopes) {
this.scopes = scopes;
}
-
-
+
+ /**
+ * Returns a list of relative URIs the consumer wishes to access
+ * @return the uris
+ */
public List<String> getUris() {
return uris;
}
+ /**
+ * Sets a list of relative URIs the consumer wishes to access
+ * @param uris the uris
+ */
public void setUris(List<String> uris) {
this.uris = uris;
}
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/AbstractAuthFilter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/AbstractAuthFilter.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/AbstractAuthFilter.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/AbstractAuthFilter.java Mon Oct 17 17:22:31 2011
@@ -41,7 +41,9 @@ import org.apache.cxf.rs.security.oauth.
import org.apache.cxf.rs.security.oauth.utils.OAuthUtils;
import org.apache.cxf.security.SecurityContext;
-
+/**
+ * Base OAuth filter which can be used to protect end-user endpoints
+ */
public class AbstractAuthFilter {
private static final Logger LOG = LogUtils.getL7dLogger(AbstractAuthFilter.class);
@@ -61,10 +63,23 @@ public class AbstractAuthFilter {
}
+ /**
+ * Sets {@link OAuthDataProvider} provider.
+ * @param provider the provider
+ */
public void setDataProvider(OAuthDataProvider provider) {
dataProvider = provider;
}
+ /**
+ * Authenticates the third-party consumer and returns
+ * {@link OAuthInfo} bean capturing the information about the request.
+ * @param req http request
+ * @return OAuth info
+ * @see OAuthInfo
+ * @throws Exception
+ * @throws OAuthProblemException
+ */
public OAuthInfo handleOAuthRequest(HttpServletRequest req) throws
Exception, OAuthProblemException {
if (LOG.isLoggable(Level.FINE)) {
@@ -82,7 +97,8 @@ public class AbstractAuthFilter {
//check if access token is not null
if (accessToken == null) {
- throw new OAuthProblemException();
+ LOG.warning("Access token is unavailable");
+ throw new OAuthProblemException(OAuth.Problems.TOKEN_REJECTED);
}
client = accessToken.getClient();
@@ -91,28 +107,28 @@ public class AbstractAuthFilter {
String consumerSecret = oAuthMessage.getParameter("oauth_consumer_secret");
client = dataProvider.getClient(consumerKey);
if (client == null || consumerSecret == null || !consumerSecret.equals(client.getSecretKey())) {
- throw new OAuthProblemException();
+ LOG.warning("Client is invalid");
+ throw new OAuthProblemException(OAuth.Problems.CONSUMER_KEY_UNKNOWN);
}
}
OAuthUtils.validateMessage(oAuthMessage, client, accessToken);
//check valid URI
- if (!checkRequestURI(req, getAllUris(client, accessToken))) {
- throw new OAuthProblemException();
- }
+ checkRequestURI(req, getAllUris(client, accessToken));
List<OAuthPermission> permissions = dataProvider.getPermissionsInfo(
getAllScopes(client, accessToken));
for (OAuthPermission perm : permissions) {
- if (perm.getUri() != null
- && !checkRequestURI(req, Collections.singletonList(perm.getUri()))) {
- throw new OAuthProblemException();
+ if (perm.getUri() != null) {
+ checkRequestURI(req, Collections.singletonList(perm.getUri()));
}
if (!perm.getHttpVerbs().isEmpty()
&& !perm.getHttpVerbs().contains(req.getMethod())) {
- throw new OAuthProblemException();
+ String message = "Invalid http verb";
+ LOG.warning(message);
+ throw new OAuthProblemException(message);
}
checkNoAccessTokenIsAllowed(client, accessToken, perm);
}
@@ -146,10 +162,11 @@ public class AbstractAuthFilter {
return uris;
}
- protected boolean checkRequestURI(HttpServletRequest request, List<String> uris) {
+ protected void checkRequestURI(HttpServletRequest request, List<String> uris)
+ throws OAuthProblemException {
if (uris.isEmpty()) {
- return true;
+ return;
}
String servletPath = request.getPathInfo();
boolean foundValidScope = false;
@@ -167,7 +184,11 @@ public class AbstractAuthFilter {
}
}
}
- return foundValidScope;
+ if (!foundValidScope) {
+ String message = "Invalid request URI";
+ LOG.warning(message);
+ throw new OAuthProblemException(message);
+ }
}
protected SecurityContext createSecurityContext(HttpServletRequest request,
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthInfo.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthInfo.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthInfo.java Mon Oct 17 17:22:31 2011
@@ -25,6 +25,9 @@ import org.apache.cxf.rs.security.oauth.
import org.apache.cxf.rs.security.oauth.data.Client;
import org.apache.cxf.rs.security.oauth.data.OAuthPermission;
+/**
+ * Captures the information about the current request
+ */
public class OAuthInfo {
private Client client;
private AccessToken token;
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthRequestFilter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthRequestFilter.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthRequestFilter.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthRequestFilter.java Mon Oct 17 17:22:31 2011
@@ -30,6 +30,9 @@ import org.apache.cxf.jaxrs.model.ClassR
import org.apache.cxf.message.Message;
import org.apache.cxf.security.SecurityContext;
+/**
+ * JAX-RS OAuth filter which can be used to protect end user endpoints
+ */
@Provider
public class OAuthRequestFilter extends AbstractAuthFilter implements RequestHandler {
@Context
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthServletFilter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthServletFilter.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthServletFilter.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/filters/OAuthServletFilter.java Mon Oct 17 17:22:31 2011
@@ -37,7 +37,9 @@ import net.oauth.server.OAuthServlet;
import org.apache.cxf.rs.security.oauth.utils.OAuthUtils;
import org.apache.cxf.security.SecurityContext;
-
+/**
+ * HTTP Servlet filter which can be used to protect end user endpoints
+ */
public class OAuthServletFilter extends AbstractAuthFilter implements javax.servlet.Filter {
public void init(FilterConfig filterConfig) throws ServletException {
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/DefaultOAuthValidator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/DefaultOAuthValidator.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/DefaultOAuthValidator.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/DefaultOAuthValidator.java Mon Oct 17 17:22:31 2011
@@ -30,7 +30,11 @@ import net.oauth.SimpleOAuthValidator;
import org.apache.cxf.rs.security.oauth.data.Token;
-
+/**
+ * The utility OAuth validator which is primarily used
+ * by the runtime to validate that the issued tokens have not expired.
+ * Note that the runtime does validate OAuth signatures separately.
+ */
public class DefaultOAuthValidator extends SimpleOAuthValidator {
public DefaultOAuthValidator() {
Copied: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5SequenceGenerator.java (from r1184927, cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5TokenGenerator.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5SequenceGenerator.java?p2=cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5SequenceGenerator.java&p1=cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5TokenGenerator.java&r1=1184927&r2=1185295&rev=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5TokenGenerator.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/MD5SequenceGenerator.java Mon Oct 17 17:22:31 2011
@@ -23,9 +23,13 @@ import java.security.NoSuchAlgorithmExce
import net.oauth.OAuthException;
-
-public class MD5TokenGenerator {
- public String generateToken(byte[] input) throws OAuthException {
+/**
+ * The utility MD5 sequence generator which can be used for generating
+ * request or access token keys and secrets as well as request token
+ * verifiers
+ */
+public class MD5SequenceGenerator {
+ public String generate(byte[] input) throws OAuthException {
if (input == null) {
throw new OAuthException("You have to pass input to Token Generator");
}
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthDataProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthDataProvider.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthDataProvider.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthDataProvider.java Mon Oct 17 17:22:31 2011
@@ -21,29 +21,87 @@ package org.apache.cxf.rs.security.oauth
import java.util.List;
-
import org.apache.cxf.rs.security.oauth.data.AccessToken;
import org.apache.cxf.rs.security.oauth.data.Client;
import org.apache.cxf.rs.security.oauth.data.OAuthPermission;
import org.apache.cxf.rs.security.oauth.data.RequestToken;
import org.apache.cxf.rs.security.oauth.data.RequestTokenRegistration;
-
+/**
+ * OAuth provider responsible for persisting the information about
+ * OAuth consumers, request and access tokens.
+ */
public interface OAuthDataProvider {
+ /**
+ * Returns the previously registered third-party {@link Client}
+ * @param clientId the client id
+ * @return Client
+ * @throws OAuthServiceException
+ */
Client getClient(String clientId) throws OAuthServiceException;
+ /**
+ * Creates a temporarily request token which will capture the
+ * information about the {@link Client} attempting to access or
+ * modify the resource owner's resource
+ * @param reg RequestTokenRegistration
+ * @return new request token
+ * @see RequestTokenRegistration
+ * @throws OAuthServiceException
+ */
RequestToken createRequestToken(RequestTokenRegistration reg) throws OAuthServiceException;
+ /**
+ * Returns the previously registered {@link RequestToken}
+ * @param requestToken the token key
+ * @return RequestToken
+ * @throws OAuthServiceException
+ */
RequestToken getRequestToken(String requestToken) throws OAuthServiceException;
- String createRequestTokenVerifier(RequestToken requestToken) throws OAuthServiceException;
+ /**
+ * Sets the verifier confirming the resource owner's agreement for
+ * the {@link Client} to perform the action as represented by
+ * the provided {@link RequestToken}. The runtime will report
+ * this verifier to the client who will exchange it for
+ * a new {@link AccessToken}
+ *
+ * @param requestToken the request token
+ * @return the generated verifier
+ * @throws OAuthServiceException
+ */
+ String setRequestTokenVerifier(RequestToken requestToken) throws OAuthServiceException;
+ /**
+ * Creates a new {@link AccessToken}
+ * @param requestToken the request token approved by the resource owner
+ * @return new AccessToken
+ * @throws OAuthServiceException
+ */
AccessToken createAccessToken(RequestToken requestToken) throws OAuthServiceException;
+ /**
+ * Returns the {@link AccessToken}
+ * @param accessToken the token key
+ * @return AccessToken
+ * @throws OAuthServiceException
+ */
AccessToken getAccessToken(String accessToken) throws OAuthServiceException;
+ /**
+ * Removes the tokens associated with a given client id
+ * @param clientId the client id
+ * @throws OAuthServiceException
+ */
void removeTokens(String clientId) throws OAuthServiceException;;
+ /**
+ * Returns the list of {@link OAuthPermission} beans describing opaque
+ * permissions (aka scopes) such as "read_data", etc
+ * @param requestPermissions the list of opaque scopes/permissions
+ * @see OAuthPermission
+ * @return permissions
+ */
List<OAuthPermission> getPermissionsInfo(List<String> requestPermissions);
}
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthServiceException.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthServiceException.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthServiceException.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/provider/OAuthServiceException.java Mon Oct 17 17:22:31 2011
@@ -19,6 +19,9 @@
package org.apache.cxf.rs.security.oauth.provider;
+/**
+ * Encapsulates OAuth-related problems
+ */
public class OAuthServiceException extends RuntimeException {
public OAuthServiceException(String message) {
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AbstractOAuthService.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AbstractOAuthService.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AbstractOAuthService.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AbstractOAuthService.java Mon Oct 17 17:22:31 2011
@@ -26,7 +26,9 @@ import org.apache.cxf.jaxrs.ext.MessageC
import org.apache.cxf.rs.security.oauth.provider.OAuthDataProvider;
import org.apache.cxf.rs.security.oauth.utils.OAuthUtils;
-
+/**
+ * Abstract utility class which OAuth services extend
+ */
public abstract class AbstractOAuthService {
private MessageContext mc;
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenHandler.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenHandler.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenHandler.java Mon Oct 17 17:22:31 2011
@@ -63,7 +63,7 @@ public class AccessTokenHandler {
throw new OAuthProblemException(OAuth.Problems.TOKEN_REJECTED);
}
String oauthVerifier = oAuthMessage.getParameter(OAuth.OAUTH_VERIFIER);
- if (oauthVerifier == null || !oauthVerifier.equals(requestToken.getOauthVerifier())) {
+ if (oauthVerifier == null || !oauthVerifier.equals(requestToken.getVerifier())) {
throw new OAuthProblemException(OAuthConstants.VERIFIER_INVALID);
}
@@ -73,7 +73,7 @@ public class AccessTokenHandler {
//create response
Map<String, Object> responseParams = new HashMap<String, Object>();
- responseParams.put(OAuth.OAUTH_TOKEN, accessToken.getTokenString());
+ responseParams.put(OAuth.OAUTH_TOKEN, accessToken.getTokenKey());
responseParams.put(OAuth.OAUTH_TOKEN_SECRET, accessToken.getTokenSecret());
String responseString = OAuth.formEncode(responseParams.entrySet());
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenService.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenService.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenService.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AccessTokenService.java Mon Oct 17 17:22:31 2011
@@ -27,7 +27,9 @@ import javax.ws.rs.core.Response;
/**
- * This resource will replace a request token with a new access token
+ * This resource will replace a request token with a new access token which
+ * will complete the OAuth flow. The third-party consumer will use the access
+ * token to access end user resources.
*/
@Path("/token")
public class AccessTokenService extends AbstractOAuthService {
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AuthorizationRequestHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AuthorizationRequestHandler.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AuthorizationRequestHandler.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/AuthorizationRequestHandler.java Mon Oct 17 17:22:31 2011
@@ -78,10 +78,10 @@ public class AuthorizationRequestHandler
Map<String, String> queryParams = new HashMap<String, String>();
if (allow) {
- String verifier = dataProvider.createRequestTokenVerifier(token);
+ String verifier = dataProvider.setRequestTokenVerifier(token);
queryParams.put(OAuth.OAUTH_VERIFIER, verifier);
}
- queryParams.put(OAuth.OAUTH_TOKEN, token.getTokenString());
+ queryParams.put(OAuth.OAUTH_TOKEN, token.getTokenKey());
if (token.getState() != null) {
queryParams.put("state", token.getState());
}
@@ -126,7 +126,7 @@ public class AuthorizationRequestHandler
protected OAuthAuthorizationData addAdditionalParams(OAuthAuthorizationData secData,
OAuthDataProvider dataProvider,
RequestToken token) {
- secData.setOauthToken(token.getTokenString());
+ secData.setOauthToken(token.getTokenKey());
secData.setApplicationName(token.getClient().getApplicationName());
secData.setApplicationURI(token.getClient().getApplicationURI());
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/RequestTokenHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/RequestTokenHandler.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/RequestTokenHandler.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/services/RequestTokenHandler.java Mon Oct 17 17:22:31 2011
@@ -100,7 +100,7 @@ public class RequestTokenHandler {
}
//create response
Map<String, Object> responseParams = new HashMap<String, Object>();
- responseParams.put(OAuth.OAUTH_TOKEN, requestToken.getTokenString());
+ responseParams.put(OAuth.OAUTH_TOKEN, requestToken.getTokenKey());
responseParams.put(OAuth.OAUTH_TOKEN_SECRET, requestToken.getTokenSecret());
responseParams.put(OAuth.OAUTH_CALLBACK_CONFIRMED, Boolean.TRUE);
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthConstants.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthConstants.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthConstants.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthConstants.java Mon Oct 17 17:22:31 2011
@@ -19,6 +19,9 @@
package org.apache.cxf.rs.security.oauth.utils;
+/**
+ * Miscellaneous constants
+ */
public final class OAuthConstants {
public static final String OAUTH_DATA_PROVIDER_CLASS = "oauth.data.provider-class";
Modified: cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthUtils.java?rev=1185295&r1=1185294&r2=1185295&view=diff
==============================================================================
--- cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthUtils.java (original)
+++ cxf/trunk/rt/rs/security/oauth-parent/oauth/src/main/java/org/apache/cxf/rs/security/oauth/utils/OAuthUtils.java Mon Oct 17 17:22:31 2011
@@ -48,6 +48,9 @@ import org.apache.cxf.rs.security.oauth.
import org.apache.cxf.rs.security.oauth.provider.DefaultOAuthValidator;
import org.apache.cxf.rs.security.oauth.provider.OAuthDataProvider;
+/**
+ * Various utility methods
+ */
public final class OAuthUtils {
private OAuthUtils() {
@@ -60,9 +63,9 @@ public final class OAuthUtils {
OAuthAccessor accessor = new OAuthAccessor(consumer);
if (token != null) {
if (token instanceof RequestToken) {
- accessor.requestToken = token.getTokenString();
+ accessor.requestToken = token.getTokenKey();
} else {
- accessor.accessToken = token.getTokenString();
+ accessor.accessToken = token.getTokenKey();
}
accessor.tokenSecret = token.getTokenSecret();
}