2014-10-23 3 views
1

Я пытаюсь настроить oauth2 с помощью spring-security (2.0.3.RELEASE) в приложении spring-mvc с типом типа гранта.oauth2 spring-security вы должны войти в систему, прежде чем запрашивать токен или код

При выполнении следующего запроса на доступ к фишке:

curl -X POST "http://localhost:8080/oauth/authorize?client_id=testclient&grant_type=password&username=user&password=test123&response_type=token" 

Я получаю:

org.springframework.security.authentication.InsufficientAuthenticationException: User must be authenticated with Spring Security before authorization can be completed. 

При отслеживании этого исключения, я заметил, она возникла в AuthorizationEndpoint.java линии 137 если код аутентифицирован:

if (!(principal instanceof Authentication) || !((Authentication) principal).isAuthenticated()) { 

I найти этот нечетный, должен ли я сначала войти в систему и сообщение в ресурс/oauth/authorize, прежде чем пытаться получить доступ к токену? Если да, то почему? Я уже добавляю свой пароль и имя пользователя в запрос/oauth/authorize. Я не вижу преимущества входа в систему, прежде чем пытаться получить токен, если вы снова должны ввести пароль и имя пользователя?

+0

У меня такая же ошибка при использовании версии 2.0.6. для 'grant_type = authorization_code' и 'response_type = code'. Можете ли вы помочь мне в этом деле? –

+0

Уверен, какой URL-адрес вы используете? Я использовал неправильную конечную точку/url ... –

+1

У меня такая же проблема, как и у Kumar, пытаясь получить код auth из oauth/authorize, но запрос не выполняется с помощью InsceptionAuthenticationException, хотя я не могу найти что-то не так с моей конфигурацией. удалось решить это? –

ответ

2

Вы используете неправильную конечную точку. Если вы используете грант password, вы должны отправить запрос на конечную точку маркера. Подробности см. На странице OAuth2 spec.

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