oauth2를 발견했습니다. 나는이 토큰에 의해 보호 된 JWToken과 REST를 리턴하는 샘플을 생성 할 수 있었다. 이제 보호 된 REST 인터페이스에 액세스 제어를 추가하여이 점을 개선하고 싶습니다. 왜? 내가 ADMIN과 같은 사용자를 원하기 때문에 독자는 URL에 액세스할지 여부를 결정합니다.스프링 보안이 oauth2 토큰으로 액세스 제어를 설정했습니다.
다음으로 http://projects.spring.io/spring-security-oauth/docs/oauth2.html http 노드의 over expression-handler가 가능합니다.
<sec:global-method-security
pre-post-annotations="enabled" />
<sec:http pattern="/protected/**" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint">
<sec:anonymous enabled="false" />
<sec:intercept-url pattern="/protected/**" />
<sec:custom-filter ref="resourceServerFilter"
before="PRE_AUTH_FILTER" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
<sec:expression-handler ref="myexpressionHandler" />
</sec:http>
<bean id="myexpressionHandler" class="org.springframework.security.oauth2.provider.expression.OAuth2WebSecurityExpressionHandler">
</bean>
로그 : févr 여기 난 내 XML의 구성에 추가 한 구성입니다. 04, 2015 4:09:31 PM org.springframework.security.config.method.GlobalMethodSecurityBeanDefinitionParser parse INFOS : 메서드 보안에 대해식이 활성화되었지만 SecurityExpressionHandler가 구성되지 않았습니다. 모든 hasPermision() 표현식은 false로 평가됩니다. févr. 04, 2015 4:09:31 PM org.springframework.security.config.http.HttpSecurityBeanDefinitionParser checkFilterChainOrder
그러나 JWTtoken을 사용하여 보호 된 리소스를 성공적으로 가져 왔습니다.
내 컨트롤러 :
@Component
@RestController
@RequestMapping(value = "/protected")
public class HelloWorldRest {
private static final Logger LOG = LoggerFactory
.getLogger(HelloWorldRest.class);
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@PreAuthorize("#oauth2.clientHasRole('ROLE_ADMIN')")
@RequestMapping(value = "/greeting/{name}")
public Greeting greeting(@PathVariable String name) {
LOG.info("Fonction greeting : " + name);
return new Greeting(counter.incrementAndGet(), String.format(template,
name + ", I am Mister Toto"));
}
}
나는 authoritiesGrant = {ROLE_NONE}
감사합니다, 어떤 아이디어를 내려면 사용자와 테스트 한?