Люди в Stormpath имеют довольно простое решение для достижения Oauth. Пожалуйста, взгляните на Using Stormpath for API Authentication.
качестве резюме, ваше решение будет выглядеть следующим образом:
- Вы будете использовать Stormpath Java SDK легко делегировать все свои потребности управления пользователями.
Когда пользователь нажимает кнопку входа в систему, ваш интерфейс будет безопасно отправлять учетные данные на ваш backend-end через свой REST API.
2.1. Кстати, Stormpath значительно расширяет все возможности здесь. Вместо своей собственной страницы входа вы можете полностью делегировать функцию входа/регистрации в Stormpath через свой IDSite, или вы также можете делегировать его Servlet Plugin. Stormpath также поддерживает логин Google, Facebook, LinkedIn и Github.
Ваш бэкэнд будет пытаться проверить подлинность пользователя против Stormpath Backend и возвращает access token
в результате:
/** This code will throw an Exception if the authentication fails */
public void postOAuthToken(HttpServletRequest request, HttpServletResponse response) {
Application application = client.getResource(applicationRestUrl, Application.class);
//Getting the authentication result
AccessTokenResult result = (AccessTokenResult) application.authenticateApiRequest(request);
//Here you can get all the user data stored in Stormpath
Account account = accessTokenResult.getAccount();
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/json");
//Return the Access Token
response.getWriter().print(token.toJson());
response.getWriter().flush();
}
Тогда для каждого аутентифицированного запроса, ваш бэкэнд будет делать:
/** This is your protected API */
public void sayHello(HttpServletRequest request, HttpServletResponse response) {
Application application = client.getResource(applicationRestUrl, Application.class);
OauthAuthenticationResult result = (OauthAuthenticationResult) application.authenticateOauthRequest(request).execute();
System.out.println(result.getApiKey());
System.out.println(result.getAccount());
//At this point the authorization was successful, you can now allow the actual operation to be executed
doSayHello();
}
Все это не потребует специальной конфигурации Spring Security, это простой Java-код, который можно запускать в любой среде.
Просьба посмотреть here для получения дополнительной информации.
Надеюсь, что это поможет!
Отказ от ответственности, я активный участник Stormpath.
Что вы подразумеваете под концепцией Authtoken? Вы имеете в виду [OAuth2] (http://oauth.net/2/)? –
Я имею в виду Обычно, когда мы подключаемся к API, они дают токен и обновляют токен для клиента. Когда время токена истекло, мы можем получить новый токен, указав токен обновления. Мне нужно, как это достигается в Spring Security. :) –
Возможно [Spring Security OAuth2 samples] (https://github.com/spring-projects/spring-security-oauth/tree/2.0.7.RELEASE/samples/oauth2) может вам помочь. У них есть образцы для стороннего клиента и сервера. –