allegro / allegro-api

Issue tracker and wiki for Allegro REST API
https://developer.allegro.pl/
213 stars 39 forks source link

Autoryzacja Device Flow przestała działać - Google Apps Script #9521

Open tomsyty opened 1 month ago

tomsyty commented 1 month ago

Występuje problem:

:beetle: Opis / Description Od dwóch dni mam problem z moją aplikacją w Apps Script (Javascript w środowisku Google Workspace). Wszystko działało od dawna bardzo dobrze i nagle bez żadnych zmian w kodzie przestało działać logowanie typu Device Flow. Nie mogłem odświeżyć tokenów, pomyślałem - autoryzuję aplikację ponownie POSTem na https://allegro.pl/auth/oauth/device, jednak próba pobrania user_code i device_code daje błąd 403 i zwraca następującą treść:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="robots" content="noindex, noarchive" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Allegro</title>
    <meta name="robots" content="noindex, noarchive" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/heading/main-a947e8ed32.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/button/main-2f5426af0f.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/desk/main-17d976d548.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/flex/main-a4cd1b521a.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/margin/main-766502cb09.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/padding/main-dd40004e9c.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/width/main-9a736bcac8.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/align/main-393bd7b83b.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/display/main-eb2fd2e4ff.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/typography/main-6906c4325c.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/card/main-d0352e4ebf.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/brand/main-4e672809d2.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/divider/main-1aa86482d0.css" />
    <link rel="stylesheet" href="https://assets.allegrostatic.com/metrum/color/main-3eb13ac13c.css" />
</head>
<body>
<header class="m-display-flex m-flex-items-center m-padding-16">
    <img class="m-brand" src="https://assets.allegrostatic.com/metrum/brand/allegro-347440b030.svg" alt="Allegro" />
</header>
<div class="m-desk">
    <div class="m-desk__content m-align-block-center m-width-sm ">
        <div class="m-card m-color-bg-yellow">
            <script>
                window.onload = function() {
                    var getCookieValue = function getCookieValue(a) {
                        b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
                            return b ? b.pop() : '';
                    };
                    var trace_id = getCookieValue('trace_id');
                    if (trace_id != '') {
                        document
                            .getElementById('traceId')
                            .textContent=trace_id;
                    }
                };
            </script>
            <h4 class="m-heading m-heading--sm ">
                Próba otwarcia strony została zablokowana
            </h4>
            <p class="m-type m-type--paragraph ">
                Coś poszło nie tak.
                Jeżeli sytuacja się powtarza, to zgłoś ten przypadek obsłudze klienta załączając kod błędu.
                Pomoże nam to w szybszym rozwiązaniu Twojego problemu.
            </p>
        </div>
        <div class="m-card m-card--sticky m-color-bg-white m-padding-bottom-0">
            <h4 class="m-heading m-heading--sm ">Kod błędu</h4>

            <p class="m-type m-margin-bottom-32">
                <span id="traceId" class="m-type m-type--small m-type--lh-1 m-color-gray"></span>
            </p>

            <hr class="m-divider" />
        </div>
        <a
                href="/pomoc"
                class="m-button m-button--secondary m-color-bg-white m-width-fluid"
        >
            skontaktuj się z obsługą klienta
        </a>
    </div>
</div>
</body>
</html>

Co ciekawe, użycie tych samych danych autoryzacyjnych w Postmanie działa. Sprawdzałem w issuetrackerze Googla czy pojawiły się jakieś informacje na ten temat czy to nie jest coś po ich stronie, jednak nie ma świeżych informacji na ten temat, są jednak podobne wątki dotyczące nagłego pojawienia się błędu 403 dla różnych API i sugerują że może to być wina po stronie API, głównie blokada geolokalizacyjna. Stąd moje pytanie - czy requesty z serwerów Googla zaczęły być jakoś blokowane, wiadomo że są one rozsiane po całym świecie i może próby logowań z różnych lokalizacji zaczęły być jakoś blokowane. Z racji tego że jest to kod wykonywany po stronie serwera nie jestem w stanie podać żadnego cURLa, co najwyżej na priv mogę clientId jak będzie to wymagane.

EL-NOW commented 1 month ago

Mam dokładnie ten sam problem u siebie od kilku dni. Podobnie próbowałem sprawdzić co jest nie tak. Wciąż brak możliwości autoryzacji. Czy udało się rozwiązać problem?

AureliuszBrussy commented 1 month ago

Sprawdzamy to po naszej stronie. Wrócę z informacją.

AureliuszBrussy commented 1 month ago

@tomsyty @EL-NOW jesteście w stanie uzyskać adres IP spod którego wykonane zostały te wywołania? Potrzebujemy więcej danych, żeby to sprawdzić.

tomsyty commented 1 month ago

Sprawdzę później wywołując jakiś zasób na własnym serwerze, ale z tego co wyczytałem to lista adresów jest zmienna i pula jest dosyć szeroka: https://support.google.com/a/answer/10026322 https://www.gstatic.com/ipranges/cloud.json Zapewne któryś z europe-central, tak podpowiada rozsądek, ale dopiero jak sprawdzę to będę wiedział czy tak faktycznie jest.

mawa1209 commented 1 month ago

U mnie są to przykładowo: 107.178.224.98, 107.178.193.14

AureliuszBrussy commented 1 month ago

Dziękuję, będziemy sprawdzać to dalej. Wrócę z informacją lub prośbą, jeżeli będziemy potrzebować dodatkowe dane.

tomsyty commented 1 month ago

Przepraszam że tak późno ale dopiero znalazłem czas żeby się tym zająć. U mnie to przykładowo 34.116.22.4, 35.187.133.167, 107.178.192.195 tak więc jest różne wykorzystanie adresów. No i problem dotyczy tylko autoryzacji, pobierania i odświeżania tokenów, informacja o tym jest w pierwszym poście ale tak dla pewności o tym wspominam, samo wywoływanie zasobów z tokenem pozyskanym np. przez Postmana działa prawidłowo (póki co tak sobie właśnie radzę), czyli ewentualna blokada IP jest tylko na https://allegro.pl/auth/oauth/ nie na https://api.allegro.pl/

AureliuszBrussy commented 1 month ago

@tomsyty dziękuję - przekazałem do dalszej weryfikacji. Wrócę z odpowiedzią.

AureliuszBrussy commented 1 month ago

@tomsyty @mawa1209 blokada nie powinna już wystąpić. Dajcie znać, czy faktycznie problem ustąpił.

EL-NOW commented 1 month ago

Potwierdzam że u mnie autoryzacja ponownie działa.

wt., 30 lip 2024 o 16:06 AureliuszBrussy @.***> napisał(a):

@tomsyty https://github.com/tomsyty @mawa1209 https://github.com/mawa1209 blokada nie powinna już wystąpić. Dajcie znać, czy faktycznie problem ustąpił.

— Reply to this email directly, view it on GitHub https://github.com/allegro/allegro-api/issues/9521#issuecomment-2258441168, or unsubscribe https://github.com/notifications/unsubscribe-auth/A52ZO75IGF7OSAUFJ2IVGQTZO6MWLAVCNFSM6AAAAABLRFBZQGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJYGQ2DCMJWHA . You are receiving this because you were mentioned.Message ID: @.***>

-- Pozdrawiam, Norbert Wołowicz Sklep internetowy EL-NOW

tomsyty commented 1 month ago

Dziękuję, u mnie również już działa.

mawa1209 commented 1 month ago

U mnie także. Dziękuję

tomsyty commented 1 month ago

Otwieram ponownie temat bo nie sprawdziłem wcześniej a wygląda na to że wprowadzone rozwiązanie zostało wdrożone tylko na produkcji, dla sandboxa nie. @AureliuszBrussy mógłbyś przekazać tam gdzie trzeba?

AureliuszBrussy commented 1 month ago

Tak, przekazałem, czekam na działania. Dam znać.

AureliuszBrussy commented 1 month ago

@tomsyty na Sandboxie nie założyliśmy żadnej blokady na te adresy IP. Czy możesz sprawdzić na jakich adresach wystepuje ta blokada?

tomsyty commented 1 month ago

Przykładowo 34.116.22.4, 34.116.22.5, 107.178.224.227. Sprawdzam jeszcze czy to nie u mnie jakaś pomyłka, ale generalnie z logowaniem do Sandboxa to od dawna był u mnie problem - pisałem już kiedyś o tym ale nie udało się znaleźć rozwiązania (dotyczyło to logowania typu Code Flow w rozszerzeniach do Google Chrome - które działa dla produkcji ale nie dla Sandboxa, musiałem więc dorobić dodatkowe logowanie typu Device Flow żeby móc używać ich ze środowiskiem testowym), teraz Device Flow nie działa ani dla rozszerzeń ani dla aplikacji w Apps Script.

AureliuszBrussy commented 1 month ago

Dzięki, sprawdzamy to.

AureliuszBrussy commented 1 month ago

@tomsyty powinno być już ok.

tomsyty commented 1 month ago

Dziękuję, potwierdzam, Device Flow dla Sandboxa już działa, zarówno w Apps Script jak i w rozszerzeniach Chrome. To skoro już dział techniczny jest w tym temacie, to możecie sprawdzić co może być powodem że Code Flow dla Sandboxa w rozszerzeniach Chrome nie działa? Może jakieś nowe pomysły przyjdą do głowy. Kod z pierwszego kroku jest prawidłowo zwracany pod redirect_uri ale próba pobrania tokenów z wykorzystaniem tego kodu w drugim kroku daje błąd 403. Czy ewentualnie fakt że redirect_uri dla aplikacji zarejestrowanej dla produkcji i Sandboxa jest taki sam może być tego powodem? Uprawnienia te same, po prostu w funkcji logowania daję inny Client ID i Client Secret no i wywołanie pod .allegrosandbox.pl oczywiście.

AureliuszBrussy commented 1 month ago

@tomsyty zwracamy response ze statusem 403 w tym wypadku jest podobny/taki sam do tego występującego dla device flow? Jesteś w stanie podrzucić przykład?

Ten sam redirect na prod i test nie powinien mieć żadnego wpływu na ten przypadek.

tomsyty commented 1 month ago

W tym przypadku nie jestem w stanie podać takich informacji bo nie są one dostępne w wyniku działania javascriptowej funkcji fetch, problem prawdopodobnie leży w konfiguracji serwera - brak zwracanego nagłówka Access-Control-Allow-Origin co skutkuje błędem CORS. Załączam minimalny przykład potrzebny do reprodukcji błędu (zakładam że sobie poradzicie z rozszerzeniem - menu "trzy kropki" -> Rozszerzenia - Zarządzaj rozszerzeniami -> Tryb dewelopera (on) -> Załaduj rozpakowane) test.zip

AureliuszBrussy commented 4 weeks ago

@tomsyty dzięki, przyjrzymy się temu.

stale[bot] commented 2 weeks ago

W tym wątku nie pojawiła się żadna nowa odpowiedź w ciągu 7 dni, dlatego automatycznie oznaczamy go jako przeterminowany. Jeśli w ciągu kolejnych 7 dni nie pojawi się żadna odpowiedź, wątek zostanie zamknięty. Dziękujemy za zaangażowanie w dyskusję i zachęcamy Cię do wypełnienia ankiety dotyczącej naszego wsparcia na forum.


There was no new reply in this thread within 7 days, therefore, we automatically marked it as expired. If no response is received within the next 7 days, this thread will be closed. Thank you for engaging in the discussion. We encourage you to complete our forum support survey.