【问题标题】:How to integrate Spring OAuth2 Server into Liferay如何将 Spring OAuth2 Server 集成到 Liferay
【发布时间】:2015-03-17 06:07:42
【问题描述】:

我正在尝试将 Spring OAuth2 服务器集成到 Liferay 中。尽管存在一些问题,但执行此操作的基本方法似乎很明确:

  1. 使用 DispatcherServlet 将 URL 映射到 servlet
  2. 使用<context:component-scan> 标记配置此servlet 以查找和初始化Spring OAuth2 服务器
  3. 实现AuthorizationServerConfigurer 并添加@EnableAuthorizationServer 标签。

但是,这似乎还不够,OAuth 服务器永远不会初始化,并且对服务器应该侦听的 URL 的调用只是以错误 404 回答。

为了定位问题,我(几乎)成功地添加了一个小 REST 服务。这是我使用的代码:

第一步:web.xml

<servlet>
    <servlet-name>springwebservice</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springwebservice</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

第二步:springwebservice-servlet.xml

<context:component-scan base-package="mypackage" />

第三步:MyRestController.java

@RestController
public class MyRestController {

    @RequestMapping("/test")
    public String testRest() {
        return "Hello World!";
    }
}

奇怪的是,这不起作用。它似乎忽略了@RestController 标签,只是把它当作普通的@Controller 处理,因此搜索了一个名为“Hello World!”的视图。而不是仅仅返回该文本:

WARN  
[PageNotFound:1114] No mapping found for HTTP request with URI 
[/TestLiferaySpring-1.0-SNAPSHOT/rest/Hello World!] 
in DispatcherServlet with name 'springwebservice'

但除此之外,它确实表明第 1 步和第 2 步不应该是问题所在。但是,我的 OAuth2 服务器配置根本不会被调用!为什么会这样,我错过了什么?

这是OAuth2服务器配置的代码:

@EnableAuthorizationServer
public class OAuth2Config implements AuthorizationServerConfigurer {

    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        System.out.println("configure1");
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        System.out.println("configure2");
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        System.out.println("configure3");
    }

}

【问题讨论】:

    标签: java spring servlets spring-security liferay


    【解决方案1】:

    多么愚蠢的错误(也是一个愚蠢的问题) 我只是忘记了@EnableAuthorizationServer 注释上方的@Configuration 注释。

    现在至少可以识别授权服务器:

    Mapped "{[/oauth/authorize],methods=[POST], ... onto ...

    我可以删除这个问题,但也许它会帮助其他想要实现类似目标的人(我至少无法为 Liferay 或 Spring Security 找到太多文档)。请注意,我仍然对自动装配有一个例外,所以这不是让一切正常工作的最终解决方案。

    【讨论】:

    • 我想知道如何将 spring oauth2 与 liferay6.2 集成 ....如果可能的话,你能给我一些网上的东西或你做过的一些示例代码
    猜你喜欢
    • 2016-03-30
    • 2017-12-30
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2018-02-08
    • 2017-10-27
    • 2018-04-10
    • 2020-09-18
    相关资源
    最近更新 更多