如何使用 XML 使用 Spring Security Oauth2 启用 /oauth/check_token

Posted

技术标签:

【中文标题】如何使用 XML 使用 Spring Security Oauth2 启用 /oauth/check_token【英文标题】:How to enable /oauth/check_token with Spring Security Oauth2 using XML 【发布时间】:2015-04-22 04:32:43 【问题描述】:

我已经使用 spring-security 3.2.* 和 javaconfig 成功启用了“/oauth/check_token”端点,但目前我仅限于 spring-security 3.1.4,然后我被困在 XML 配置中。 '/oauth/token' 端点正在按我的意愿工作,但我无法启用 check_token 端点,也找不到任何(非 javaconfig)文档来解释该怎么做。

Vanila 授权服务器配置:

<oauth:authorization-server 
        client-details-service-ref="client-service" 
        token-services-ref="tokenServices" >
    <oauth:refresh-token disabled="false" />
    <oauth:client-credentials disabled="false" />
    <oauth:password authentication-manager-ref="userAuthenticationManager"  />       
</oauth:authorization-server>

http 安全配置:

<sec:http 
        auto-config="true"
        pattern="/oauth/token" 
        create-session="stateless"
        authentication-manager-ref="clientAuthenticationManager">
    <sec:intercept-url pattern="/oauth/token" access="IS_AUTHENTICATED_FULLY" />
    <sec:anonymous enabled="false"/>
    <sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
</sec:http>

我尝试添加以下 http 配置但没有成功。

<sec:http 
        auto-config="true"
        pattern="/oauth/check_token" 
        create-session="stateless"
        authentication-manager-ref="clientAuthenticationManager">
    <sec:intercept-url pattern="/oauth/check_token" access="IS_AUTHENTICATED_FULLY" />
    <sec:anonymous enabled="false"/>
    <sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
</sec:http>

请有任何建议。一个可行的例子会很棒。

最好的 ./克里斯托弗

【问题讨论】:

最后一个 sn-p 有利于保护端点。要将其公开给 HTTP 客户端,您还需要创建一个 CheckTokenEndpoint 类型的 bean。 【参考方案1】:

您需要创建一个 CheckTokenEndpoint (org.springframework.security.oauth2.provider.endpoint.CheckTokenEndpoint) 类型的 bean。

【讨论】:

【参考方案2】:

使用最新版本的spring oauth2:

<dependency>
  <groupId>org.springframework.security.oauth</groupId>
  <artifactId>spring-security-oauth2</artifactId>
  <version>2.0.10.RELEASE</version>
</dependency>

确保在spring security oauth文件配置中使用了正确版本的xsd:

http://www.springframework.org/schema/security/spring-security-oauth2-2.0.xsd

在元素authorization-server中插入选项check-token-enabled="true"

<oauth:authorization-server ... check-token-enabled="true">
... 
</oauth:authorization-server>

【讨论】:

以上是关于如何使用 XML 使用 Spring Security Oauth2 启用 /oauth/check_token的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 grails 1.3.2 和插件 spring-security-core 1 实现自定义 FilterSecurityInterceptor?

Spring Security常用过滤器介绍

如何使用 spring 集成 dsl 解组 xml

如何使用xml在spring security中禁用注销确认?

xml 一个如何使用Spring WebServiceTemplate的示例

如何使用spring将查询外部化到xml文件