Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
commons
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DevOps
commons
Commits
77eec696
Commit
77eec696
authored
Feb 21, 2020
by
杨锐
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RestTemplate/HttpClient auth add token.
parent
4a6d0577
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
203 additions
and
12 deletions
+203
-12
pom.xml
brave-spring-boot-starter/pom.xml
+1
-1
HttpClientRequestInterceptor.java
.../tech/brave/interceptor/HttpClientRequestInterceptor.java
+22
-0
RequestInterceptor.java
...quantgroup/tech/brave/interceptor/RequestInterceptor.java
+36
-0
RestTemplateRequestInterceptor.java
...ech/brave/interceptor/RestTemplateRequestInterceptor.java
+26
-0
TokenJob.java
...va/cn/quantgroup/tech/brave/interceptor/job/TokenJob.java
+72
-0
TechHttpClientNoTrace.java
...tgroup/tech/brave/service/impl/TechHttpClientNoTrace.java
+10
-1
TechHttpClientTrace.java
...antgroup/tech/brave/service/impl/TechHttpClientTrace.java
+9
-1
TechRestTemplateBuilderTrace.java
...tech/brave/service/impl/TechRestTemplateBuilderTrace.java
+5
-0
TechRestTemplateBuliderNoTrace.java
...ch/brave/service/impl/TechRestTemplateBuliderNoTrace.java
+14
-1
pom.xml
commons-core/pom.xml
+1
-1
pom.xml
commons-spring/pom.xml
+1
-1
pom.xml
elastic-job-lite-spring-boot-starter/pom.xml
+1
-1
pom.xml
enoch-agent-spring-boot-starter/pom.xml
+1
-1
pom.xml
idgenerator-spring-boot-starter/pom.xml
+1
-1
pom.xml
pom.xml
+2
-2
pom.xml
shutdown-spring-boot-starter/pom.xml
+1
-1
No files found.
brave-spring-boot-starter/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
...
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/interceptor/HttpClientRequestInterceptor.java
0 → 100644
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
interceptor
;
import
cn.quantgroup.tech.brave.interceptor.job.TokenJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.HttpRequest
;
import
org.apache.http.HttpRequestInterceptor
;
import
org.apache.http.client.methods.HttpRequestWrapper
;
import
org.apache.http.protocol.HttpContext
;
import
org.springframework.stereotype.Component
;
@Slf4j
@Component
public
class
HttpClientRequestInterceptor
extends
RequestInterceptor
implements
HttpRequestInterceptor
{
@Override
public
void
process
(
HttpRequest
httpRequest
,
HttpContext
httpContext
)
{
if
(
auth
(((
HttpRequestWrapper
)
httpRequest
).
getTarget
().
getHostName
()))
{
log
.
info
(
"cn.quantgroup.tech.brave.interceptor.HttpClientRequestInterceptor.process token = 【{}】 "
,
TokenJob
.
token
);
httpRequest
.
addHeader
(
AUTH
,
TokenJob
.
token
);
}
}
}
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/interceptor/RequestInterceptor.java
0 → 100644
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
interceptor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
java.util.List
;
import
java.util.Optional
;
@Slf4j
public
abstract
class
RequestInterceptor
{
static
final
String
AUTH
=
"quant-auth"
;
// 内网
@Value
(
"#{'${quant.auth.http}'.split(',')}"
)
List
<
String
>
authHttpList
;
boolean
auth
(
String
host
)
{
if
(
authHttpList
==
null
||
authHttpList
.
isEmpty
())
{
return
false
;
}
return
authHttpList
.
stream
()
.
map
(
http
->
{
URL
url
=
null
;
try
{
url
=
new
URL
(
http
);
}
catch
(
MalformedURLException
e
)
{
log
.
error
(
"无效quant.auth.http = 【{}】"
,
http
);
}
return
Optional
.
ofNullable
(
url
);
})
.
filter
(
Optional:
:
isPresent
)
.
anyMatch
(
url
->
url
.
get
().
getHost
().
equals
(
host
));
}
}
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/interceptor/RestTemplateRequestInterceptor.java
0 → 100644
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
interceptor
;
import
cn.quantgroup.tech.brave.interceptor.job.TokenJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.HttpRequest
;
import
org.springframework.http.client.ClientHttpRequestExecution
;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.http.client.ClientHttpResponse
;
import
org.springframework.stereotype.Component
;
import
java.io.IOException
;
@Slf4j
@Component
public
class
RestTemplateRequestInterceptor
extends
RequestInterceptor
implements
ClientHttpRequestInterceptor
{
@Override
public
ClientHttpResponse
intercept
(
HttpRequest
request
,
byte
[]
body
,
ClientHttpRequestExecution
execution
)
throws
IOException
{
if
(
auth
(
request
.
getURI
().
getHost
()))
{
log
.
info
(
"cn.quantgroup.tech.brave.interceptor.RestTemplateRequestInterceptor.intercept token = 【{}】 "
,
TokenJob
.
token
);
request
.
getHeaders
().
add
(
AUTH
,
TokenJob
.
token
);
}
return
execution
.
execute
(
request
,
body
);
}
}
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/interceptor/job/TokenJob.java
0 → 100644
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
interceptor
.
job
;
import
cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.web.client.RestTemplate
;
import
javax.annotation.Resource
;
import
java.util.Base64
;
import
java.util.Map
;
@Data
class
TokenResp
{
private
Integer
code
;
@JsonProperty
(
"access_token"
)
private
String
token
;
@JsonProperty
(
"expires_in"
)
private
Integer
expires
;
}
@Slf4j
@Configuration
@EnableScheduling
@ConditionalOnProperty
(
prefix
=
"quant.auth"
,
name
=
{
"http"
,
"clientId"
,
"secret"
,
"tokenUrl"
})
public
class
TokenJob
{
private
static
final
String
CREDENTIAL
=
"credential"
;
private
static
final
int
SUCCESS
=
200
;
public
static
String
token
;
@Value
(
"${quant.auth.clientId}"
)
private
String
clientId
;
@Value
(
"${quant.auth.secret}"
)
private
String
secret
;
@Value
(
"${quant.auth.tokenUrl}"
)
private
String
tokenUrl
;
@Resource
private
ITechRestTemplateBuilder
techRestTemplateBuilder
;
@Bean
public
RestTemplate
restTemplate
()
{
return
techRestTemplateBuilder
.
createRestTemplate
();
}
@Scheduled
(
fixedRate
=
1000
*
60
*
30
)
public
void
getToken
()
{
HttpHeaders
requestHeaders
=
new
HttpHeaders
();
requestHeaders
.
add
(
CREDENTIAL
,
base64ForCredential
());
HttpEntity
<
Map
<
String
,
Object
>>
httpEntity
=
new
HttpEntity
<>(
requestHeaders
);
TokenResp
tokenResp
=
restTemplate
().
postForObject
(
tokenUrl
,
httpEntity
,
TokenResp
.
class
);
log
.
info
(
"getToken tokenResp = 【{}】"
,
tokenResp
);
if
(
tokenResp
!=
null
&&
SUCCESS
==
tokenResp
.
getCode
()
&&
StringUtils
.
isNotBlank
(
tokenResp
.
getToken
()))
{
token
=
tokenResp
.
getToken
();
}
}
private
String
base64ForCredential
()
{
String
credential
=
clientId
+
":"
+
secret
;
return
Base64
.
getEncoder
().
encodeToString
(
credential
.
getBytes
());
}
}
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/service/impl/TechHttpClientNoTrace.java
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
service
.
impl
;
package
cn
.
quantgroup
.
tech
.
brave
.
service
.
impl
;
import
cn.quantgroup.tech.brave.interceptor.HttpClientRequestInterceptor
;
import
cn.quantgroup.tech.brave.service.ITechHttpClient
;
import
cn.quantgroup.tech.brave.service.ITechHttpClient
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
javax.annotation.Resource
;
/**
/**
* @author zhangheng
* @author zhangheng
* create on 2018.05.17
* create on 2018.05.17
*/
*/
@Slf4j
@Slf4j
public
class
TechHttpClientNoTrace
implements
ITechHttpClient
{
public
class
TechHttpClientNoTrace
implements
ITechHttpClient
{
@Resource
private
HttpClientRequestInterceptor
httpClientRequestInterceptor
;
@Override
@Override
public
HttpClientBuilder
createHttpClientBuilder
()
{
public
HttpClientBuilder
createHttpClientBuilder
()
{
log
.
info
(
"构建HttpClientBuilder"
);
log
.
info
(
"构建HttpClientBuilder"
);
return
HttpClientBuilder
.
create
();
HttpClientBuilder
httpClientBuilder
=
HttpClientBuilder
.
create
();
httpClientBuilder
.
addInterceptorFirst
(
httpClientRequestInterceptor
);
return
httpClientBuilder
;
}
}
}
}
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/service/impl/TechHttpClientTrace.java
View file @
77eec696
...
@@ -2,10 +2,13 @@ package cn.quantgroup.tech.brave.service.impl;
...
@@ -2,10 +2,13 @@ package cn.quantgroup.tech.brave.service.impl;
import
brave.Tracing
;
import
brave.Tracing
;
import
brave.httpclient.TracingHttpClientBuilder
;
import
brave.httpclient.TracingHttpClientBuilder
;
import
cn.quantgroup.tech.brave.interceptor.HttpClientRequestInterceptor
;
import
cn.quantgroup.tech.brave.service.ITechHttpClient
;
import
cn.quantgroup.tech.brave.service.ITechHttpClient
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
javax.annotation.Resource
;
/**
/**
* @author zhangheng
* @author zhangheng
* create on 2018.05.17
* create on 2018.05.17
...
@@ -18,9 +21,14 @@ public class TechHttpClientTrace implements ITechHttpClient {
...
@@ -18,9 +21,14 @@ public class TechHttpClientTrace implements ITechHttpClient {
this
.
tracing
=
tracing
;
this
.
tracing
=
tracing
;
}
}
@Resource
private
HttpClientRequestInterceptor
httpClientRequestInterceptor
;
@Override
@Override
public
HttpClientBuilder
createHttpClientBuilder
()
{
public
HttpClientBuilder
createHttpClientBuilder
()
{
log
.
info
(
"构建brave-HttpClientBuilder"
);
log
.
info
(
"构建brave-HttpClientBuilder"
);
return
TracingHttpClientBuilder
.
create
(
tracing
);
HttpClientBuilder
httpClientBuilder
=
TracingHttpClientBuilder
.
create
(
tracing
);
httpClientBuilder
.
addInterceptorFirst
(
httpClientRequestInterceptor
);
return
httpClientBuilder
;
}
}
}
}
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/service/impl/TechRestTemplateBuilderTrace.java
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
service
.
impl
;
package
cn
.
quantgroup
.
tech
.
brave
.
service
.
impl
;
import
brave.spring.web.TracingClientHttpRequestInterceptor
;
import
brave.spring.web.TracingClientHttpRequestInterceptor
;
import
cn.quantgroup.tech.brave.interceptor.RestTemplateRequestInterceptor
;
import
cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder
;
import
cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -8,6 +9,7 @@ import org.springframework.context.annotation.Import;
...
@@ -8,6 +9,7 @@ import org.springframework.context.annotation.Import;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -20,6 +22,8 @@ import java.util.List;
...
@@ -20,6 +22,8 @@ import java.util.List;
public
class
TechRestTemplateBuilderTrace
implements
ITechRestTemplateBuilder
{
public
class
TechRestTemplateBuilderTrace
implements
ITechRestTemplateBuilder
{
@Autowired
@Autowired
private
TracingClientHttpRequestInterceptor
clientInterceptor
;
private
TracingClientHttpRequestInterceptor
clientInterceptor
;
@Resource
private
RestTemplateRequestInterceptor
restTemplateRequestInterceptor
;
@Override
@Override
public
RestTemplate
createRestTemplate
()
{
public
RestTemplate
createRestTemplate
()
{
...
@@ -27,6 +31,7 @@ public class TechRestTemplateBuilderTrace implements ITechRestTemplateBuilder {
...
@@ -27,6 +31,7 @@ public class TechRestTemplateBuilderTrace implements ITechRestTemplateBuilder {
RestTemplate
restTemplate
=
new
RestTemplate
();
RestTemplate
restTemplate
=
new
RestTemplate
();
List
<
ClientHttpRequestInterceptor
>
interceptors
=
new
ArrayList
<>(
restTemplate
.
getInterceptors
());
List
<
ClientHttpRequestInterceptor
>
interceptors
=
new
ArrayList
<>(
restTemplate
.
getInterceptors
());
interceptors
.
add
(
clientInterceptor
);
interceptors
.
add
(
clientInterceptor
);
interceptors
.
add
(
restTemplateRequestInterceptor
);
restTemplate
.
setInterceptors
(
interceptors
);
restTemplate
.
setInterceptors
(
interceptors
);
return
restTemplate
;
return
restTemplate
;
}
}
...
...
brave-spring-boot-starter/src/main/java/cn/quantgroup/tech/brave/service/impl/TechRestTemplateBuliderNoTrace.java
View file @
77eec696
package
cn
.
quantgroup
.
tech
.
brave
.
service
.
impl
;
package
cn
.
quantgroup
.
tech
.
brave
.
service
.
impl
;
import
cn.quantgroup.tech.brave.interceptor.RestTemplateRequestInterceptor
;
import
cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder
;
import
cn.quantgroup.tech.brave.service.ITechRestTemplateBuilder
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
/**
* @author zhangheng
* @author zhangheng
* create on 2018.05.17
* create on 2018.05.17
*/
*/
@Slf4j
@Slf4j
public
class
TechRestTemplateBuliderNoTrace
implements
ITechRestTemplateBuilder
{
public
class
TechRestTemplateBuliderNoTrace
implements
ITechRestTemplateBuilder
{
@Resource
private
RestTemplateRequestInterceptor
restTemplateRequestInterceptor
;
@Override
@Override
public
RestTemplate
createRestTemplate
()
{
public
RestTemplate
createRestTemplate
()
{
log
.
info
(
"构建RestTemplate"
);
log
.
info
(
"构建RestTemplate"
);
return
new
RestTemplate
();
RestTemplate
restTemplate
=
new
RestTemplate
();
List
<
ClientHttpRequestInterceptor
>
interceptors
=
new
ArrayList
<>(
restTemplate
.
getInterceptors
());
interceptors
.
add
(
restTemplateRequestInterceptor
);
restTemplate
.
setInterceptors
(
interceptors
);
return
restTemplate
;
}
}
}
}
commons-core/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
...
commons-spring/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
...
elastic-job-lite-spring-boot-starter/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
...
enoch-agent-spring-boot-starter/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<artifactId>
enoch-agent-spring-boot-starter
</artifactId>
<artifactId>
enoch-agent-spring-boot-starter
</artifactId>
...
...
idgenerator-spring-boot-starter/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
...
pom.xml
View file @
77eec696
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
<parent>
<parent>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
<lombok.version>
1.16.20
</lombok.version>
<lombok.version>
1.16.20
</lombok.version>
<guava.version>
23.0
</guava.version>
<guava.version>
23.0
</guava.version>
<apollo.client.version>
0.10.2
</apollo.client.version>
<apollo.client.version>
0.10.2
</apollo.client.version>
<common.parent.version>
0.
2.6
</common.parent.version>
<common.parent.version>
0.
3.0
</common.parent.version>
</properties>
</properties>
<dependencies>
<dependencies>
...
...
shutdown-spring-boot-starter/pom.xml
View file @
77eec696
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<parent>
<parent>
<artifactId>
commons-parent
</artifactId>
<artifactId>
commons-parent
</artifactId>
<groupId>
cn.quantgroup
</groupId>
<groupId>
cn.quantgroup
</groupId>
<version>
0.
2.6
</version>
<version>
0.
3.0
</version>
</parent>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment