Spring - rozpoznawanie ską przyszedł request, system darmowego i płatnego API

0

Hej, mam następującą zagwozdkę.

Moja aplikacja webowa korzysta z mojego własnego RESTowego API. Teraz chciałbym wprowadzić możliwość korzystania bezpośrednio z API bez używania strony za małą opłatą, ale jak to rozwiązać?

Obecnie po rejestracji generuje użytkowniku klucz API i ten klucz jest wymieniany między klientem, a RESTem ponieważ zależało mi na bez stanowości tego rozwiązania ponieważ potrzebuje mieć możliwość łatwego skalowania tego API. I teraz pytanie jak po stronie API sprawdzać czy request przyszedł z strony czy nie?

Jeśli coś to pomoże to używam Spring Boota, a całość chce hostować na AWSie.

0

Cześć Ogrodniku.

Co to znaczy "używanie strony"?
Użytkownik wpisuje dane na stronie WWW, ta łączy się z serwerem aplikacji a on z Twoim API?
Jeżeli tak, to rozróżnisz żądania po adresie IP.

2

Lekcja na dziś: cross-origin request.

0

Hej, dziękuję Wam za odpowiedzi.

Sprawa wygląda tak na AWSie na tej samej instancji ma stać API + strona w JSie która jest zaciągana przez przeglądarkę.

@Shalom Hej, kurde w ogóle nie pomyślałem o tym. Wydaje się, że w moim przypadku jest to rozwiązanie idealne ponieważ API + strona będą na tej samej domenie, czy dobrze rozumuje? W taki sposób ograniczę dostęp do API, natomiast teraz po prostu stawiam osobną instancję samego API i tam każe użytkownikom z płatnym dostępem wysyłać requesty?

0

To zależy. Nikt oprócz ciebie nie będzie się mógł do tego serwisu wtedy dostać z API przez SOP/CORS ale za pomocą przeglądarki nadal będzie mógł ręcznie coś pobrać.

0

@Shalom: co rozumiesz przez "ręcznie" pobrać?

0

No jak puści request z przeglądarki pod te twoje resty to CORS go nie zatrzyma :)

0

@Shalom: Dzięki za cierpliwość, to nie jest dla mnie dużym problemem. Głównym czynnikiem który chciałbym wyeliminować to przypadek gdy ktoś sobie podejrzy reqesty (adres i body) i będzie chciał stworzyć jakaś bibliotekę która pozwoli mu wysyłać tam dobrowolnie JSONy. Ostatnie pytanie, z tego co czytam te request musi się zgadzać pod względem: protokołu, hosta oraz portu. Jeśli mam serwer hostujący stronę pod portem 8080, a API jest w tej domenie pod adresem np 9001 to w definicji CORS'a na serwerze muszę dodać tylko wpis:
Access-Control-Allow-Origin: http://moj.host:9001 ?

0

Tak, to powinno wystarczyc jeśli tak zrobisz. Zresztą sprawdź ;) Ajaxowy request z innego miejsca powinien dostać odmowną odpowiedź.

0

@Shalom: Okej, obecnie nie mam jak tego sprawdzić bo robię rozeznanie dopiero jak co zrobić bo mam zamiar przepisać API i chciałbym aby było lepsze niż poprzednia wersja : ) W każdym razie to było jedno z zagadnienie na którym bardzo mi zależało przed rozpoczęciem implementacji. Bardzo Ci dziękuję za cierpliwość i odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1