小编Tim*_*Tim的帖子

如何测试spring-security-oauth2资源服务器安全性?

在Spring Security 4发布之后,它改进了对测试支持,我想更新我当前的Spring security oauth2资源服务器测试.

目前,我有一个帮助器类,它OAuth2RestTemplate使用连接到实际ResourceOwnerPasswordResourceDetails的测试ClientId来设置一个使用,以便AccessTokenUri为我的测试请求一个有效的令牌.这个resttemplate然后用于在我的@WebIntegrationTests中发出请求.

我想通过利用Spring Security 4中的新测试支持,放弃对实际AuthorizationServer的依赖,并在我的测试中使用有效(如果有限)用户凭据.

到现在为止我都在尝试使用@WithMockUser,@WithSecurityContext,SecurityMockMvcConfigurers.springSecurity()SecurityMockMvcRequestPostProcessors.*都没能进入通过身份验证的电话MockMvc,我找不到在Spring示例项目的任何这样的工作的例子.

任何人都可以帮助我使用某种模拟凭证来测试我的oauth2资源服务器,同时仍然测试所施加的安全限制吗?

**编辑**示例代码可在此处获取:https://github.com/timtebeek/resource-server-testing 对于每个测试类,我理解为什么它不能正常工作,但我正在寻找方法这将允许我轻松测试安全设置.

我现在正在考虑创建一个非常宽松的OAuthServer src/test/java,这可能会有所帮助.有没有人有任何其他建议?

java spring-security spring-security-oauth2

48
推荐指数
5
解决办法
4万
查看次数

Maven使用gmaven-plugin编译混合Java + Groovy 1.7项目

根据前两个答案:maven dependencies groovy.我正在尝试使用来自org.codehaus.gmaven的GMaven-plugin,使用Maven编译混合Java 6 + Groovy项目.直到昨天我们使用的是旧1.6.0版本的Groovy(在我们最终完成它之后从未改变它),但由于1.7.0现在稳定,我认为我们会改用它.

如果只是那么简单......我现在遇到的问题似乎有两个方面:

  • Groovy 1.6以某种方式仍然被选为默认值.(如下面的stacktrace中所示)
  • groovy:generateStubs因构建错误而停止:意外节点:节点[7:1,64,注释]

有谁知道如何解决上述两个问题,或者可以提供一个工作pom来编译与Maven Java 6代码混合的Groovy 1.7代码?

使用gmaven/groovy.maven/groovy.maven.gmaven编译旧版本的Groovy时,有很多令人困惑/矛盾/过时的文档,现在真的没有帮助.

作为参考,这是我的pom.xml和Maven -e输出的一部分:

<dependencies>
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>1.7.0</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.gmaven</groupId>
            <artifactId>gmaven-plugin</artifactId>
            <version>1.2</version>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.gmaven.runtime</groupId>
                    <artifactId>gmaven-runtime-1.7</artifactId>
                    <version>1.2</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                    <version>1.7.0</version>
                </dependency>
            </dependencies>
            <executions>
                <execution>
                    <goals>
                        <goal>generateStubs</goal>
                        <goal>compile</goal>
                        <goal>generateTestStubs</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

[INFO] ------------------------------------------------------------------------
[INFO] Building Client
[INFO]    task-segment: [clean, package]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: …
Run Code Online (Sandbox Code Playgroud)

java groovy compilation maven gmaven-plugin

32
推荐指数
2
解决办法
2万
查看次数

Apache Wicket vs Apache Click

Apache Wicket和Apache Click有什么区别?Apache Click是否得到维护?最新版本似乎是从2008年11月起感谢Achilleas

java wicket click-framework

18
推荐指数
1
解决办法
1万
查看次数

如何测试DeferredResult timeoutResult

从一段时间以前,我正在按照Spring博客实施长轮询.

这里我的转换方法具有与以前相同的响应签名,但它现在使用长轮询而不是立即响应:

private Map<String, DeferredResult<ResponseEntity<?>>> requests = new ConcurrentHashMap<>();

@RequestMapping(value = "/{uuid}", method = RequestMethod.GET)
public DeferredResult<ResponseEntity<?>> poll(@PathVariable("uuid") final String uuid) {
    // Create & store a new instance
    ResponseEntity<?> pendingOnTimeout = ResponseEntity.accepted().build();
    DeferredResult<ResponseEntity<?>> deferredResult = new DeferredResult<>(TWENTYFIVE_SECONDS, pendingOnTimeout);
    requests.put(uuid, deferredResult);

    // Clean up poll requests when done
    deferredResult.onCompletion(() -> {
        requests.remove(deferredResult);
    });

    // Set result if already available
    Task task = taskHolder.retrieve(uuid);
    if (task == null)
        deferredResult.setResult(ResponseEntity.status(HttpStatus.GONE).build());
    else
        // Done (or canceled): Redirect to …
Run Code Online (Sandbox Code Playgroud)

spring-mvc spring-mvc-test spring-web

14
推荐指数
2
解决办法
4179
查看次数

使用Hibernate Search自动完成

我正在尝试为我的网站构建更好的自动完成功能.我想使用Hibernate Search这个,但就我实验而言,它只能为我找到完整的单词.

所以,我的问题是:是否可以只搜索一些字符?

例如.用户输入3个字母并使用休眠搜索向他显示我的db对象的所有单词,其中包含这3个字母?

PS.现在我正在使用"喜欢"的查询...但我的数据库增长了很多,我还希望将搜索功能扩展到另一个表...

java mysql hibernate autocomplete hibernate-search

11
推荐指数
2
解决办法
6468
查看次数

tomcat 5.5 - 读取资源文件的问题

我正在使用Tomcat 5.5作为我的servlet容器.我的Web应用程序通过.jar部署,并在其WEB-INF目录下有一些资源文件(带有字符串和配置参数的文本文件).Tomcat 5.5在ubuntu linux上运行.使用文件读取器读取资源文件:
fr = new FileReader("messages.properties");

问题是有时servlet找不到资源文件,但如果我重新启动它几次就可以了,那么经过一段时间它再次停止工作.有人可以建议从servlet读取资源字符串的最佳方法是什么?或解决此问题的方法?将资源文件放在WEB-INF/classes下也无济于事.

java resources tomcat servlets

8
推荐指数
2
解决办法
1万
查看次数

ZuulProxy未从Brixton.RC1开始传递授权标头

从Spring Cloud切换Brixton.M5Brixton.RC1我的ZuulProxy时,不再将Authorization标头下游传递给我的代理服务.

在我的设置中有各种各样的演员,但大多数都非常简单: - AuthorizationServer:单独运行; 向客户发放JWT - 客户:从OAuth服务器获取JWT; 每个人都可以访问一部分资源. - ResourceServers:使用JWT进行访问决策 - MyZuulProxy:代理各种资源服务器; 应该转发JWT.

应该注意的是,MyZuulProxy没有任何安全依赖性; 它将Authorization: Bearer {JWT}它收到的头传递给ResourceServers,前RC1.MyZuulProxy显然不是客户端本身,目前不使用@EnableOAuth2SSO或类似.

在使用Spring Cloud Brixton.RC1时,如何让MyZuulProxy再次将JWT中继到ResourceServers?

有很少的代码后:这只是@EnableZuulProxy,@EnableAuthorizationServer@EnableResourceServer在三个不同的罐子.我的客户端不是Spring应用程序.

java spring-security-oauth2 spring-cloud spring-cloud-netflix

8
推荐指数
2
解决办法
8541
查看次数

使用CXF捕获webservice异常:NoClassDefFoundError:SOAPFaultBuilder

我一直在使用Apache CXF wsdl2java生成的代码从web服务调用方法已经有一段时间了,到目前为止一直工作正常..我遇到的问题是当webservice(在我的大厅下面实现)合法地抛出一个soap异常,CXF出现以下错误信息:

无法初始化类com.sun.xml.internal.ws.fault.SOAPFaultBuilder

我使用的是Ubuntu 9.04,OpenJDK(IcedTea6 1.4.1)6b14-1.1.1-0ubuntu11,Maven2和CXF 2.2.3.我目前对如何解决这个问题感到茫然,因为我使用的代码和设置似乎很简单..任何人都能指出我在正确的方向吗?如果我可以发布任何进一步的细节,请告诉我..

这是返回的完整堆栈跟踪:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.internal.ws.fault.SOAPFaultBuilder
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
    at $Proxy36.downloadPDB(Unknown Source)
    at path.to.my.code.downloadInvalidFileID(SingleMethodTest.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
    at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
    at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
Run Code Online (Sandbox Code Playgroud)

java cxf soapfault

6
推荐指数
2
解决办法
2万
查看次数

如何在Glassfish上的Metro上选择CXF

我在Glassfish下运行我的企业应用程序时遇到以下问题(由其他人报告).在Jetty下它工作正常.

javax/xml/ws/spi/Provider提到创建META-INF/services/javax.xml.ws.spi.Provider资源,但这已经提供给CXF并且创建一个额外的资源文件并不能解决Glassfish下的这个问题.

有谁知道如何确保在GlassFish下使用CXF?
(我正在使用具有CXF依赖性2.2.5的Maven多模块项目)

谢谢!
蒂姆


编辑#1

暂时解决问题,只是使用Metro,但我真的很想知道如何使用CXF,如果有人有任何指示..如果没有任何作用我可能必须切换Web应用程序容器(或看看Metro填补我的要求)


编辑#2

一些解决方案通过添加<class-loader delegate="false"/>到sun-web.xml文件来详细说明war的修复.但是,这对非战争ee应用程序不起作用.

cxf glassfish java-metro-framework jax-ws classpath

6
推荐指数
2
解决办法
6542
查看次数

Wicket:如何处理长时间运行的任务

我设置了一个Wicket + Hibernate + Spring Web应用程序,它涉及收集一些数据(生成并返回一些文件),将其存储在数据库中,创建一些图像并在网页上显示所有这些.

这一切都适用于短期运行,但有时收集数据(涉及一些远程数字运算)需要太长时间(20多分钟)和超时.我尝试使用两种方法来解决这个问题,但它们都显示出一些问题.

第一种方法是使用AjaxLazyLoadPanel,只是在getLazyLoadComponent中执行所有操作.这在短期运行中运行良好,但是对于20多分钟的运行,由于超时,LazyLoadComponents不会加载(那里有好的矛盾).

第二种方法涉及使用添加的AjaxSelfUpdatingTimerBehavior创建一个中间片段,其 持续时间设置为10秒,轮询在数字运算中创建的文件.这似乎使任务在后台运行没有问题,但是当返回的数据需要存储在数据库中时失败.我在View模式中使用Open Session,但是在20分钟后尝试存储数据时可能会失败?(解决方案可能在于解决这个问题......).

由于上述问题,我现在正在阅读处理这些长期运行任务的替代方法,并遇到:

我现在想知道这些中的任何一个是否更适合解决我在运行任务和之后将数据存储在数据库中的超时问题,或者是否有任何其他解决方案可能对此有帮助情况.

我真的很想知道一种新的方法是否可行,然后我再花一天时间实现可能最终无法工作的东西.

最好的问候,
蒂姆

java wicket hibernate timeout

6
推荐指数
1
解决办法
2407
查看次数