2015-04-23 2 views
-1

Как настроить Spring Security так, чтобы можно было получить доступ к некоторому ресурсу как для не прошедших проверку подлинности, так и для аутентифицированных пользователей? В случае аутентификации пользователя необходимо получить контекст аутентификации в методе обработки ресурсов.Spring Security: разрешить доступ к защищенному ресурсу без проверки подлинности

Нельзя использовать анонимную аутентификацию, потому что мы должны различать неавторизованные (401 Unauthorized (неназванное имя HTTP)) и неавторизованные (403 Запрещенные) для других ресурсов.

Если мы добавим ресурс в web.ignoring(), тогда контекст аутентификации недоступен даже для аутентифицированных пользователей.

Если ресурс не web.ignoring() то для непроверенных пользователей Spring возвращает HTTP 401.

+0

Проблема, о которой идет речь, вызвана внутренней реализацией. –

ответ

0

в файле конфигурация безопасности пружинных вы должны иметь что-то вроде этого или эквивалента ...

<http use-expressions="true"> 
<intercept-url pattern="/app/**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER','ROLE_CUST_ADMIN')" /> 
<intercept-url pattern="/app2/**" access="hasRole('ROLE_ADMIN')" /> 
</http> 

Если вы добавьте разрешение. Все это позволит пользователям просматривать ресурс ...

<http use-expressions="true"> 
<intercept-url pattern="/app/**" access="permitAll" /> 
</http> 
0

Возможно, я нашел проблему и, возможно, анонимную будет возможна аутентификация. Проблема, похоже, связана с нашим обычным ExceptionTranslationFilter, который отвечает за 403 вместо 401 для анонимного. Извините за недопустимый вопрос.

+0

Вы можете подумать об удалении этого вопроса, поскольку он является недействительным и не имеет ответа, навсегда оставаясь в качестве неотвеченного вопроса. – Shaggy

+0

Я не могу удалить его, поэтому я отметил его закрытие. –

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