This repository was archived by the owner on Jun 21, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +25
-8
lines changed
services-gateway-client-transport/src/main/java/io/scalecube/services/gateway/transport/http
services-gateway-netty/src/main/java/io/scalecube/services/gateway/http
services-gateway-tests/src/test/java/io/scalecube/services/gateway Expand file tree Collapse file tree 5 files changed +25
-8
lines changed Original file line number Diff line number Diff line change 2323
2424 <properties >
2525 <scalecube-commons .version>1.0.2</scalecube-commons .version>
26- <scalecube-services .version>2.9.1-RC5 </scalecube-services .version>
26+ <scalecube-services .version>2.9.1-RC7 </scalecube-services .version>
2727 <scalecube-benchmarks .version>1.2.2</scalecube-benchmarks .version>
2828 <scalecube-config .version>0.4.3</scalecube-config .version>
2929 <reactor .version>Dysprosium-SR7</reactor .version>
30- <rsocket .version>1.0.0-RC7 </rsocket .version>
30+ <rsocket .version>1.0.0</rsocket .version>
3131 <netty .version>4.1.48.Final</netty .version>
3232 <jackson .version>2.11.0</jackson .version>
3333 <metrics .version>3.1.2</metrics .version>
Original file line number Diff line number Diff line change @@ -73,7 +73,7 @@ public Mono<ServiceMessage> requestResponse(ServiceMessage request) {
7373 };
7474 return httpClient
7575 .post ()
76- .uri (request .qualifier ())
76+ .uri ("/" + request .qualifier ())
7777 .send (sender )
7878 .responseSingle (
7979 (httpResponse , bbMono ) ->
Original file line number Diff line number Diff line change @@ -63,7 +63,7 @@ private Mono<Void> handleRequest(
6363 ByteBuf content , HttpServerRequest httpRequest , HttpServerResponse httpResponse ) {
6464
6565 ServiceMessage request =
66- ServiceMessage .builder ().qualifier (httpRequest . uri ( )).data (content ).build ();
66+ ServiceMessage .builder ().qualifier (getQualifier ( httpRequest )).data (content ).build ();
6767
6868 return serviceCall
6969 .requestOne (request )
@@ -79,7 +79,11 @@ private Mono<Void> handleRequest(
7979 }
8080
8181 private Mono <ServiceMessage > emptyMessage (HttpServerRequest httpRequest ) {
82- return Mono .just (ServiceMessage .builder ().qualifier (httpRequest .uri ()).build ());
82+ return Mono .just (ServiceMessage .builder ().qualifier (getQualifier (httpRequest )).build ());
83+ }
84+
85+ private static String getQualifier (HttpServerRequest httpRequest ) {
86+ return httpRequest .uri ().substring (1 );
8387 }
8488
8589 private Publisher <Void > methodNotAllowed (HttpServerResponse httpResponse ) {
Original file line number Diff line number Diff line change 66import io .scalecube .services .annotations .Service ;
77import io .scalecube .services .annotations .ServiceMethod ;
88import io .scalecube .services .api .ServiceMessage ;
9- import io .scalecube .services .auth .Auth ;
9+ import io .scalecube .services .auth .Secured ;
1010import reactor .core .publisher .Flux ;
1111import reactor .core .publisher .Mono ;
1212
@@ -21,11 +21,11 @@ public interface SecuredService {
2121
2222 @ ServiceMethod
2323 @ RequestType (String .class )
24- @ Auth
24+ @ Secured
2525 Mono <String > requestOne (String req );
2626
2727 @ ServiceMethod
2828 @ RequestType (Integer .class )
29- @ Auth
29+ @ Secured
3030 Flux <String > requestN (Integer req );
3131}
Original file line number Diff line number Diff line change 1414public class SecuredServiceImpl implements SecuredService {
1515 private static final Logger LOGGER = LoggerFactory .getLogger (SecuredServiceImpl .class );
1616
17+ private static final String ALLOWED_USER = "VASYA_PUPKIN" ;
18+
1719 private final AuthRegistry authRegistry ;
1820
1921 public SecuredServiceImpl (AuthRegistry authRegistry ) {
@@ -38,6 +40,7 @@ public Mono<String> createSession(ServiceMessage request) {
3840 @ Override
3941 public Mono <String > requestOne (String req ) {
4042 return Mono .deferWithContext (context -> Mono .just (context .get (Authenticator .AUTH_CONTEXT_KEY )))
43+ .doOnNext (this ::checkPermissions )
4144 .cast (String .class )
4245 .flatMap (
4346 auth -> {
@@ -49,6 +52,7 @@ public Mono<String> requestOne(String req) {
4952 @ Override
5053 public Flux <String > requestN (Integer times ) {
5154 return Mono .deferWithContext (context -> Mono .just (context .get (Authenticator .AUTH_CONTEXT_KEY )))
55+ .doOnNext (this ::checkPermissions )
5256 .cast (String .class )
5357 .flatMapMany (
5458 auth -> {
@@ -58,4 +62,13 @@ public Flux<String> requestN(Integer times) {
5862 return Flux .fromStream (IntStream .range (0 , times ).mapToObj (String ::valueOf ));
5963 });
6064 }
65+
66+ private void checkPermissions (Object authData ) {
67+ if (authData == null ) {
68+ throw new ForbiddenException ("Not allowed (authData is null)" );
69+ }
70+ if (!authData .equals (ALLOWED_USER )) {
71+ throw new ForbiddenException ("Not allowed (wrong user)" );
72+ }
73+ }
6174}
You can’t perform that action at this time.
0 commit comments