Подтвердить что ты не робот

Библиотека для провайдера OAuth (Java)

Я ищу библиотеку Java, которая помогает мне создавать OAuth Provider. Я должен быть в состоянии получать запросы, подписанные OAuth, и определять, являются ли они действительными или нет (проверка значений подписи, временных меток и nonce).

Знаете ли вы, есть ли что-то, облегчающее эту задачу?

4b9b3361

Ответ 1

Scribe - это библиотека OAuth для Java, написанная самим айером.; -)

Примечание. Я размещаю это здесь как ответ, так что у других googlers есть выбор альтернатив. Для другой альтернативы, основанной на библиотеке, см. Мой другой ответ "Библиотека подписки на Джерси OAuth".

Некоторый код для иллюстрации использования:

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

Создание запроса:

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

Ответ 2

Одна библиотека, упомянутая в http://oauth.net/code, выглядит интересной (я исключаю OAuth для Spring Безопасность и OAuth Signpost, которые вы не ищете):

A Java-библиотека и примеры были внесенный Джоном Кристианом, Правееном Алавилли и Дирк Балфанц.

OAuth для Spring Безопасность также доступный, внесенный Райаном Хитон. Этот проект не размещен в Репозиторий OAuth.

OAuth Signpost предлагает простой OAuth подпись сообщения для Java и Apache HttpComponents (Google Android готов!). Автор Matthias Kaeppler.Забастовкa >

Я проверил Java-библиотеку немного дальше, и я думаю, что он предоставляет все необходимое для клиентского и серверного кода. Следующий пост в блоге имеет на самом деле полный пример, и я вставляю код сервера ниже (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"); %> 

Это похоже на то, что вы хотите.

Ответ 3

Вы можете использовать Библиотека подписей Джерси OAuth.

Простая аутентификация OAuth для сервлета или фильтра может быть настроена с использованием фильтра контейнеров, который фильтрует запрос до того, как запрос будет сопоставлен и отправлен в класс ресурсов root. Контейнерный фильтр регистрируется с использованием параметров инициализации, которые указывают на определенный пользователем класс, например:

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

Ответ 4

Существует плагин OAuth для Spring Безопасность

Ответ 5

Похоже, существует репозиторий Subversion для библиотеки в http://oauth.googlecode.com/svn/code/java/. Похоже, вам нужно будет проверить и запустить maven для получения исполняемых файлов.

Если вы перейдете к примеру /webapp/src/main/java, у них есть примеры использования Twitter, Yahoo и других.

Ответ 6

Jersey (эталонная реализация JAX-RS) поддерживает OAuth через удлинитель Jersey под названием OpenSSO Auth Filter. Однако для этого требуется дополнительный экземпляр сервера OpenSSO. Подробнее см. этот документ.

Обратите внимание, что OpenSSO был прекращен Oracle и теперь в ForgeRock как OpenAM.