java - google - oauth c#
Biblioteca para OAuth Provider(Java) (6)
Estoy buscando una biblioteca de Java que me ayude a crear un proveedor de OAuth. Debo poder recibir solicitudes firmadas por OAuth y determinar si son válidas o no (verificando la firma, la marca de tiempo y los valores nonce).
¿Sabes si hay algo por ahí que hace que esta tarea sea más fácil?
Hay un complemento OAuth para Spring Security
Parece que hay un repositorio de Subversion para una biblioteca en http://oauth.googlecode.com/svn/code/java/ . Parece que tendrás que pagar y ejecutar Maven para obtener ejecutables.
Si ingresas a example / webapp / src / main / java, tienen algunos ejemplos de consumo de Twitter, Yahoo y otros.
Puede usar la Biblioteca de firmas Jersey OAuth .
La autenticación simple de OAuth para un servlet o filtro puede configurarse utilizando un Filtro de contenedor, que filtra la solicitud antes de que la solicitud coincida y se envíe a una clase de recurso raíz. El filtro de contenedor se registra utilizando parámetros de inicialización que apuntan a una clase definida por el usuario, como la siguiente:
public class OAuthAuthenticationFilter implements ContainerRequestFilter {
@Override
public ContainerRequest filter(ContainerRequest containerRequest) {
// Read the OAuth parameters from the request
OAuthServerRequest request = new OAuthServerRequest(containerRequest);
OAuthParameters params = new OAuthParameters();
params.readRequest(request);
// Set the secret(s), against which we will verify the request
OAuthSecrets secrets = new OAuthSecrets();
// ... secret setting code ...
// Check that the timestamp has not expired
String timestampStr = params.getTimestamp();
// ... timestamp checking code ...
// Verify the signature
try {
if(!OAuthSignature.verify(request, params, secrets)) {
throw new WebApplicationException(401);
}
} catch (OAuthSignatureException e) {
throw new WebApplicationException(e, 401);
}
// Return the request
return containerRequest;
}
}
Una biblioteca mencionada en http://oauth.net/code parece interesante (excluyo OAuth for Spring Security y OAuth Signpost, que no son lo que estás buscando):
Una biblioteca de Java y examples fueron aportados por John Kristian, Praveen Alavilli y Dirk Balfanz.
OAuth for Spring Security también está disponible, contribuido por Ryan Heaton.Este proyecto no está alojado en el repositorio de OAuth.OAuth Signpost ofrece una firma simple de mensajes OAuth para Java y Apache HttpComponents (¡Google Android listo!). Contribuido por Matthias Kaeppler.
Revisé la biblioteca de Java un poco más y creo que proporciona todo lo necesario para el código del lado del cliente y del lado del servidor. La siguiente publicación de blog tiene un ejemplo completo y estoy pegando el código del servidor a continuación (un JSP):
<%@ page import="net.oauth.server.*"%>
<%@ page import="net.oauth.*"%>
<%
//Presumably this should actually be looked up for a given key.
String consumerSecret="uynAeXiWTisflWX99KU1D2q5";
//Presumably the key is sent by the client. This is part of the URL, after all.
String consumerKey="orkut.com:623061448914";
//Construct the message object. Use null for the URL and let the code construct it.
OAuthMessage message=OAuthServlet.getMessage(request,null);
//Construct an accessor and a consumer
OAuthConsumer consumer=new OAuthConsumer(null, consumerKey, consumerSecret, null);
OAuthAccessor accessor=new OAuthAccessor(consumer);
//Now validate. Weirdly, validator has a void return type. It throws exceptions
//if there are problems.
SimpleOAuthValidator validator=new SimpleOAuthValidator();
validator.validateMessage(message,accessor);
//Now what? Generate some JSON here for example.
System.out.println("It must have worked"); %>
Esto se ve cerca de lo que quieres.
Jersey (la implementación de referencia de JAX-RS) es compatible con OAuth a través de una extensión de Jersey llamada OpenSSO Auth Filter. Sin embargo, esto requiere una instancia de servidor OpenSSO adicional. Vea este documento para más información .
Tenga en cuenta que OpenSSO ha sido suspendido por Oracle y ahora se encuentra bajo ForgeRock como OpenAM .
github.com/fernandezpablo85/scribe-java es una biblioteca de OAuth para Java, escrita por el propio asker. ;-)
Nota: publico aquí como una respuesta para que otros usuarios de Google tengan una opción de alternativas. Para otra alternativa basada en bibliotecas, vea mi otra respuesta "Biblioteca de firmas Jersey OAuth".
Algunos códigos para ilustrar el uso:
OAuthService service = new ServiceBuilder()
.provider(TwitterApi.class)
.apiKey("your_api_key")
.apiSecret("your_api_secret")
.build();
...
Token requestToken = service.getRequestToken();
String your_token = requestToken.getToken();
...
Verifier verifier = new Verifier("your_previously_retrieved_verifier");
Token accessToken = service.getAccessToken(requestToken, verifier);
Creando la solicitud:
OAuthRequest request = OAuthRequest(Verb.GET, "http://api.twitter.com/1/direct_messages.json");
service.signRequest(accessToken, request);
Response response = request.send();