2015-08-04 5 views
0

У меня есть веб-приложение на основе Spring (3.2), в которое пользователь может войти. Сайт также предоставит API, защищенный через OAuth 2.0. Мой вопрос тогда, как я могу начать генерировать токен для зарегистрированного пользователя?Идентификатор выпуска для входа в систему пользователя через весну

Основная идея заключается в том, что на странице входа в систему появится мобильное приложение, которое откроет веб-фрейм, который в конечном итоге перенаправит на схему url с маркером oauth, который приложение поймает, а затем будет использовать для api звонки. Если посмотреть на код для TokenEndpoint, я вижу, что он отменяет создание токена в списке TokenGranter типов. Должен ли я создавать свой собственный расширенный класс TokenGranter, или я смотрю на это все неправильно?

ответ

0

Я закончил тем, что писал контроллер, как это:

OAuthClientRequest request = OAuthClientRequest 
       .authorizationLocation(csOauthAuthorizeUrl) 
       .setClientId(csClientId) 
       .setRedirectURI(
         UrlLocator.getBaseUrlBuilder().addSubpath(AUTH_CODE_HANDLER_URL).asUnEscapedString()) 
       .setResponseType("code") 
       .buildQueryMessage(); 

     UrlUtils.temporarilyRedirect(httpResponse, request.getLocationUri()); 
     return null; 

Затем обработка кода возвращается. Моя большая проблема заключалась в том, что у меня была конечная точка/oauth/authorize для использования учетных данных клиента. Как только я понял, что токены выдаются для идентификатора клиента вместо пользователя, это стало иметь смысл.

0

Итак, вы хотите использовать поток авторизации OAuth. Весна уже подтверждает, что если вы правильно настроили функцию spring-security-oauth, вам просто нужно перенаправить пользователя/ваши мобильные приложения на /oauth/authorize?client_id=xxx&response_type=code, это перенаправит пользователя на страницу авторизации, если пользователь еще не зашел в систему, он перенаправит пользователя для входа в систему, а затем на страницу авторизации.

После того, как пользователь завершит процесс авторизации, он перенаправит пользователя к уже зарегистрированному параметру redirect_url с помощью authorization_code 'yourapp.com/callback?code=xxxx'.

Ваше приложение должно обменять этот authorization_code с реальным токенов доступа к /oauth/token?grant_type=authorization_code&code=xxxx&client_id=xxxx&client_secret=xxxx

После этого вы получите маркер доступа, который может использоваться для доступа к серверу ресурсов.

Смежные вопросы