-
Notifications
You must be signed in to change notification settings - Fork 428
/
GreeterService.java
40 lines (34 loc) · 1.71 KB
/
GreeterService.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package org.lognet.springboot.grpc.demo;
import com.google.protobuf.Empty;
import io.grpc.examples.GreeterGrpc;
import io.grpc.examples.GreeterOuterClass;
import io.grpc.stub.StreamObserver;
import lombok.extern.slf4j.Slf4j;
import org.lognet.springboot.grpc.GRpcService;
import org.lognet.springboot.grpc.security.GrpcSecurity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
@Slf4j
@GRpcService(interceptors = { LogInterceptor.class })
public class GreeterService extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(GreeterOuterClass.HelloRequest request, StreamObserver<GreeterOuterClass.HelloReply> responseObserver) {
String message = "Hello " + request.getName();
final GreeterOuterClass.HelloReply.Builder replyBuilder = GreeterOuterClass.HelloReply.newBuilder().setMessage(message);
responseObserver.onNext(replyBuilder.build());
responseObserver.onCompleted();
log.info("Returning " +message);
}
@Override
@Secured("SCOPE_profile")
public void sayAuthHello(Empty request, StreamObserver<GreeterOuterClass.HelloReply> responseObserver) {
final Authentication auth = GrpcSecurity.AUTHENTICATION_CONTEXT_KEY.get();
String user = auth.getName();
if(auth instanceof JwtAuthenticationToken){
user = JwtAuthenticationToken.class.cast(auth).getTokenAttributes().get("preferred_username").toString();
}
responseObserver.onNext(GreeterOuterClass.HelloReply.newBuilder().setMessage(user).build());
responseObserver.onCompleted();
}
}