Skip to content

Commit d2201cf

Browse files
therepanicdsyer
authored andcommitted
add MethodDescriptor parameter to GrpcAuthenticationExtractor#extract
Closes: gh-254 Signed-off-by: Andrey Litvitski <[email protected]>
1 parent 2c3339c commit d2201cf

File tree

6 files changed

+12
-7
lines changed

6 files changed

+12
-7
lines changed

spring-grpc-core/src/main/java/org/springframework/grpc/server/security/AuthenticationProcessInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public AuthenticationProcessInterceptor(AuthenticationManager authenticationMana
6666
public <ReqT, RespT> Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers,
6767
ServerCallHandler<ReqT, RespT> next) {
6868
SecurityContext securityContext = SecurityContextHolder.getContext();
69-
Authentication user = this.extractor.extract(headers, call.getAttributes());
69+
Authentication user = this.extractor.extract(headers, call.getAttributes(), call.getMethodDescriptor());
7070
if (user != null) {
7171
user = this.authenticationManager.authenticate(user);
7272
securityContext.setAuthentication(user);

spring-grpc-core/src/main/java/org/springframework/grpc/server/security/BearerTokenAuthenticationExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import io.grpc.Attributes;
2525
import io.grpc.Metadata;
26+
import io.grpc.MethodDescriptor;
2627

2728
/**
2829
* Extracts the HTTP Basic authentication credentials from the gRPC request headers. If
@@ -36,7 +37,7 @@
3637
public class BearerTokenAuthenticationExtractor implements GrpcAuthenticationExtractor {
3738

3839
@Override
39-
public Authentication extract(Metadata headers, Attributes attributes) {
40+
public Authentication extract(Metadata headers, Attributes attributes, MethodDescriptor<?, ?> method) {
4041
String auth = headers.get(GrpcSecurity.AUTHORIZATION_KEY);
4142
if (auth == null) {
4243
return null;

spring-grpc-core/src/main/java/org/springframework/grpc/server/security/GrpcAuthenticationExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@
1919

2020
import io.grpc.Attributes;
2121
import io.grpc.Metadata;
22+
import io.grpc.MethodDescriptor;
2223

2324
public interface GrpcAuthenticationExtractor {
2425

25-
Authentication extract(Metadata headers, Attributes attributes);
26+
Authentication extract(Metadata headers, Attributes attributes, MethodDescriptor<?, ?> method);
2627

2728
}

spring-grpc-core/src/main/java/org/springframework/grpc/server/security/GrpcSecurity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import io.grpc.Attributes;
3737
import io.grpc.Metadata;
38+
import io.grpc.MethodDescriptor;
3839
import io.micrometer.observation.ObservationRegistry;
3940

4041
/**
@@ -196,9 +197,9 @@ private static class CompositeAuthenticationExtractor implements GrpcAuthenticat
196197
}
197198

198199
@Override
199-
public Authentication extract(Metadata headers, Attributes attributes) {
200+
public Authentication extract(Metadata headers, Attributes attributes, MethodDescriptor<?, ?> method) {
200201
for (GrpcAuthenticationExtractor extractor : this.extractors) {
201-
Authentication authentication = extractor.extract(headers, attributes);
202+
Authentication authentication = extractor.extract(headers, attributes, method);
202203
if (authentication != null) {
203204
return authentication;
204205
}

spring-grpc-core/src/main/java/org/springframework/grpc/server/security/HttpBasicAuthenticationExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import io.grpc.Attributes;
2626
import io.grpc.Metadata;
27+
import io.grpc.MethodDescriptor;
2728

2829
/**
2930
* Extracts the HTTP Basic authentication credentials from the gRPC request headers. If
@@ -37,7 +38,7 @@
3738
public class HttpBasicAuthenticationExtractor implements GrpcAuthenticationExtractor {
3839

3940
@Override
40-
public Authentication extract(Metadata headers, Attributes attributes) {
41+
public Authentication extract(Metadata headers, Attributes attributes, MethodDescriptor<?, ?> method) {
4142
String auth = headers.get(GrpcSecurity.AUTHORIZATION_KEY);
4243
if (auth == null) {
4344
return null;

spring-grpc-core/src/main/java/org/springframework/grpc/server/security/SslContextPreAuthenticationExtractor.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import io.grpc.Attributes;
3232
import io.grpc.Grpc;
3333
import io.grpc.Metadata;
34+
import io.grpc.MethodDescriptor;
3435

3536
public class SslContextPreAuthenticationExtractor implements GrpcAuthenticationExtractor {
3637

@@ -45,7 +46,7 @@ public SslContextPreAuthenticationExtractor(X509PrincipalExtractor principalExtr
4546
}
4647

4748
@Override
48-
public Authentication extract(Metadata headers, Attributes attributes) {
49+
public Authentication extract(Metadata headers, Attributes attributes, MethodDescriptor<?, ?> method) {
4950
SSLSession session = attributes.get(Grpc.TRANSPORT_ATTR_SSL_SESSION);
5051
if (session != null) {
5152
X509Certificate[] certificates = initCertificates(session);

0 commit comments

Comments
 (0)