Spring-Security OAuth2 设置 - 无法找到 oauth2 命名空间处理程序

Posted

技术标签:

【中文标题】Spring-Security OAuth2 设置 - 无法找到 oauth2 命名空间处理程序【英文标题】:Spring-Security OAuth2 setup - unable to locate oauth2 namespace handler 【发布时间】:2012-12-17 16:50:57 【问题描述】:

我正在尝试使用 spring-security 为 OAuth2 设置我们的 REST 服务器。 (服务器已经支持没有 OAuth 的 spring-security)。现在我尝试按照 sparklr 示例并将 spring-security-oauth 工件添加到我的 maven(mvn 依赖项:tree 显示它可用)以及命名空间配置到我的 spring-security-context.xml 但我得到的是:

Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security/oauth2]

浏览到http://www.springframework.org/schema/security/ 我看到的只是 .xsd 文件,但没有 oauth2 文件夹。这怎么可能?我假设 sparklr 示例是一个工作版本,那么我做错了什么?

这是我的 spring-security-context 标头:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
    xmlns:sec="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="
http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

如果需要,这里是 maven 设置:

    <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth</artifactId>
        <version>1.0.0.RC2</version>
    </dependency>

【问题讨论】:

更新:springframework.org/schema/security/spring-security-oauth2.xsd 【参考方案1】:

你引用了 OAuth2 但导入了 OAuth 1. 将依赖替换为

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

【讨论】:

天啊,为什么在无休止的搜索之后发布一个问题后,您只需要再搜索一次并找到答案?!刚刚在forum.springsource.org/… 找到它,但还是谢谢 ;)【参考方案2】:

您需要确保 spring-security-oauth2 jar 存在于类路径中并且它可以工作

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

【讨论】:

以上是关于Spring-Security OAuth2 设置 - 无法找到 oauth2 命名空间处理程序的主要内容,如果未能解决你的问题,请参考以下文章

oauth2 spring-security 如果您在请求令牌或代码之前登录

带有 spring-security 的 OAuth2 - 通过 HTTP 方法限制 REST 访问

如何使用spring-security,oauth2调整实体的正确登录?

spring-security oauth2.0简单集成

spring-security oauth2.0简单集成

spring-security oauth2 REST 服务器在错误凭据(400)错误响应中不需要的 Stacktrace