在Spring Security 4发布之后,它改进了对测试的支持,我想更新我当前的Spring security oauth2资源服务器测试.
目前,我有一个帮助器类,它OAuth2RestTemplate
使用连接到实际ResourceOwnerPasswordResourceDetails
的测试ClientId
来设置一个使用,以便AccessTokenUri
为我的测试请求一个有效的令牌.这个resttemplate然后用于在我的@WebIntegrationTest
s中发出请求.
我想通过利用Spring Security 4中的新测试支持,放弃对实际AuthorizationServer的依赖,并在我的测试中使用有效(如果有限)用户凭据.
到现在为止我都在尝试使用@WithMockUser
,@WithSecurityContext
,SecurityMockMvcConfigurers.springSecurity()
和SecurityMockMvcRequestPostProcessors.*
都没能进入通过身份验证的电话MockMvc
,我找不到在Spring示例项目的任何这样的工作的例子.
任何人都可以帮助我使用某种模拟凭证来测试我的oauth2资源服务器,同时仍然测试所施加的安全限制吗?
**编辑**示例代码可在此处获取:https://github.com/timtebeek/resource-server-testing 对于每个测试类,我理解为什么它不能正常工作,但我正在寻找方法这将允许我轻松测试安全设置.
我现在正在考虑创建一个非常宽松的OAuthServer src/test/java
,这可能会有所帮助.有没有人有任何其他建议?
根据前两个答案:maven dependencies groovy.我正在尝试使用来自org.codehaus.gmaven的GMaven-plugin,使用Maven编译混合Java 6 + Groovy项目.直到昨天我们使用的是旧1.6.0
版本的Groovy(在我们最终完成它之后从未改变它),但由于1.7.0
现在稳定,我认为我们会改用它.
如果只是那么简单......我现在遇到的问题似乎有两个方面:
Groovy 1.6
以某种方式仍然被选为默认值.(如下面的stacktrace中所示)有谁知道如何解决上述两个问题,或者可以提供一个工作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) Apache Wicket和Apache Click有什么区别?Apache Click是否得到维护?最新版本似乎是从2008年11月起感谢Achilleas
从一段时间以前,我正在按照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) 我正在尝试为我的网站构建更好的自动完成功能.我想使用Hibernate Search这个,但就我实验而言,它只能为我找到完整的单词.
所以,我的问题是:是否可以只搜索一些字符?
例如.用户输入3个字母并使用休眠搜索向他显示我的db对象的所有单词,其中包含这3个字母?
PS.现在我正在使用"喜欢"的查询...但我的数据库增长了很多,我还希望将搜索功能扩展到另一个表...
我正在使用Tomcat 5.5作为我的servlet容器.我的Web应用程序通过.jar部署,并在其WEB-INF目录下有一些资源文件(带有字符串和配置参数的文本文件).Tomcat 5.5在ubuntu linux上运行.使用文件读取器读取资源文件:
fr = new FileReader("messages.properties");
问题是有时servlet找不到资源文件,但如果我重新启动它几次就可以了,那么经过一段时间它再次停止工作.有人可以建议从servlet读取资源字符串的最佳方法是什么?或解决此问题的方法?将资源文件放在WEB-INF/classes下也无济于事.
从Spring Cloud切换Brixton.M5
到Brixton.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
我一直在使用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) 我在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应用程序不起作用.
我设置了一个Wicket + Hibernate + Spring Web应用程序,它涉及收集一些数据(生成并返回一些文件),将其存储在数据库中,创建一些图像并在网页上显示所有这些.
这一切都适用于短期运行,但有时收集数据(涉及一些远程数字运算)需要太长时间(20多分钟)和超时.我尝试使用两种方法来解决这个问题,但它们都显示出一些问题.
第一种方法是使用AjaxLazyLoadPanel,只是在getLazyLoadComponent中执行所有操作.这在短期运行中运行良好,但是对于20多分钟的运行,由于超时,LazyLoadComponents不会加载(那里有好的矛盾).
第二种方法涉及使用添加的AjaxSelfUpdatingTimerBehavior创建一个中间片段,其 持续时间设置为10秒,轮询在数字运算中创建的文件.这似乎使任务在后台运行没有问题,但是当返回的数据需要存储在数据库中时失败.我在View模式中使用Open Session,但是在20分钟后尝试存储数据时可能会失败?(解决方案可能在于解决这个问题......).
由于上述问题,我现在正在阅读处理这些长期运行任务的替代方法,并遇到:
我现在想知道这些中的任何一个是否更适合解决我在运行任务和之后将数据存储在数据库中的超时问题,或者是否有任何其他解决方案可能对此有帮助情况.
我真的很想知道一种新的方法是否可行,然后我再花一天时间实现可能最终无法工作的东西.
最好的问候,
蒂姆
java ×8
cxf ×2
hibernate ×2
wicket ×2
autocomplete ×1
classpath ×1
compilation ×1
glassfish ×1
groovy ×1
jax-ws ×1
maven ×1
mysql ×1
resources ×1
servlets ×1
soapfault ×1
spring-cloud ×1
spring-mvc ×1
spring-web ×1
timeout ×1
tomcat ×1