55 votes

Bibliothèque pour le fournisseur OAuth (Java)

Je recherche une bibliothèque Java qui m'aide à créer un fournisseur OAuth. Je dois pouvoir recevoir les demandes signées OAuth et déterminer si elles sont valides ou non (vérification des valeurs de signature, d'horodatage et de non-respect).

Savez-vous s'il existe quelque chose qui facilite cette tâche?

31voto

Hendy Irawan Points 4635

Scribe est une bibliothèque OAuth pour Java, écrite par le demandeur lui-même. ;-)

Note: Je poste ceci ici comme réponse pour que les autres googlers aient un choix d'alternatives. Pour une autre alternative basée sur une bibliothèque, voir mon autre réponse "Bibliothèque de signatures Jersey OAuth".

Quelques codes pour illustrer l'utilisation:

 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);
 

Création de la demande:

 OAuthRequest request = OAuthRequest(Verb.GET, "http://api.twitter.com/1/direct_messages.json");
service.signRequest(accessToken, request);
Response response = request.send();
 

12voto

Pascal Thivent Points 295221

Une bibliothèque mentionné sur http://oauth.net/code air intéressant (je suis à l'exclusion de l' OAuth pour le Printemps de Sécurité et d'authentification OAuth d'orientation qui ne sont pas ce que vous cherchez):

Une bibliothèque Java et des exemplesont été contribué par John Kristian, Praveen Alavilli et Dirk Balfanz.

OAuth pour le Printemps de Sécurité est également disponible, a contribué par Ryan Heaton. Ce projet n'est pas hébergé dans le OAuth référentiel.

OAuth Panneau offre simple OAuth la signature du message pour Java et Apache HttpComponents (Google Android prêt!). Contribué par Matthias Kaeppler.

J'ai vérifié la bibliothèque Java un peu plus loin et je pense que sa fournissant tout le nécessaire pour la côté client et côté serveur code. La suite de blog est en fait un exemple et je suis coller le code du serveur ci-dessous (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"); %>

Cela semble proche de ce que vous voulez.

4voto

Hendy Irawan Points 4635

Vous pouvez utiliser la bibliothèque de signatures Jersey OAuth .

L'authentification OAuth simple pour un servlet ou un filtre peut être configurée à l'aide d'un filtre de conteneur, qui filtre la demande avant qu'elle ne soit mise en correspondance et envoyée à une classe de ressources racine. Le filtre de conteneur est enregistré à l'aide de paramètres d'initialisation qui pointent vers une classe définie par l'utilisateur, tels que:

 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;
    }
}
 

1voto

Kevin Points 19613

Il y a un plugin OAuth pour Spring Security

0voto

Jason Gritman Points 3339

On dirait qu'il y a un repo Subversion pour une bibliothèque sur http://oauth.googlecode.com/svn/code/java/ . On dirait que vous devrez vérifier et exécuter maven pour obtenir les exécutables.

Si vous allez dans exemple / webapp / src / main / java, ils ont des exemples d'utilisation de Twitter, Yahoo, etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X