wiremock身份验证oauth2resttemplate

cmssoen2  于 2021-07-15  发布在  Java
关注(0)|答案(1)|浏览(355)

我使用wiremock来模拟一个端点,如果我给oauth2restemplate提供正确的属性以获得实际的身份验证令牌,那么它就可以成功地工作。如果我给出了一些模拟细节,那么我的rest模板就没有模拟调用那么远。
我知道我可能需要模拟验证url,但不确定返回什么。。
这是我在属性文件中的属性

my.service.clientId=<real-ID>
my.service.clientSecret=<real-secret>
my.service.audience=<real-audience>
my.service.BaseUrl=http://<real token url>/as/token.oauth2
my.service.url=http://localhost:8080/something/ #this stubs the actual endpoint
my.service.grantType=client_credentials
my.service.scopes=something.read

在我的代码中,我使用它们属性创建模板

OAuth2RestTemplate oAuth2RestTemplate = OauthTemplateUtil.createOauthRestTemplate(oauthProperties);

在我的测试中,我这样配置存根

private void configureStubs() {
        configureFor("localhost", 8080);

        stubFor(get(urlEqualTo("/<path>"))
                .willReturn(aResponse().withBody("<my-json-response>");
}

这工作正常,但我显然不想使用真正的客户机和密码,并为我的测试进行实际调用,我认为我需要存根my.service.baseurl,但不确定我应该返回什么,只是一个200?我需要归还假代币吗?它应该是什么样子?
谢谢

wa7juj8i

wa7juj8i1#

这是如何配置用rest模板模拟oauthproperties的

my.service.clientId=mock-id
my.service.clientSecret=mock-secret
my.service.audience=mock-audience
my.service.BaseUrl=http://http://localhost:8080/as/token.oauth2
my.service.url=http://localhost:8080/something/ 
my.service.grantType=client_credentials
my.service.scopes=some.scope
stubFor(post(urlEqualTo("/as/token.oauth2?aud=https://mock-audience"))
            .willReturn(okJson("{\"token_type\": \"Bearer\",\"access_token\":\"{{randomValue length=20 type='ALPHANUMERIC'}}\"}")));

相关问题