Jeśli zależysz od przekazania tokenów autoryzacyjnych klientom w celu zainstalowania ich aplikacji, teoretycznie zawsze będzie możliwe, aby ktoś dokonał inżynierii wstecznej aplikacji i wyodrębnił je. Aby temu zapobiec, potrzebujesz mechanizmu, który nie wymagałby tajności w aplikacji klienckiej. To trudne. Mogę jednak zasugerować kilka opcji do przemyślenia.
Masz problem po wydaniu poświadczeń, nie masz kontroli nad tym, jak bezpiecznie są one przechowywane. Ponadto, jeśli wymagasz od użytkownika przesłania poświadczeń, ktoś może MITM połączyć twoje połączenie i ukraść tokeny bezpośrednio, nie zawracając sobie głowy inżynierią wsteczną aplikacji.
Jednym ze sposobów utrudnienia wyodrębnienia tokena autoryzacji jest zaciemnienie go. To po prostu podnosi poprzeczkę, ale nie uniemożliwia, a aby to zrobić, musiałbyś zachować kontrolę nad tajemnicą. Możesz wdrożyć bibliotekę, która zawiera tajne informacje i jest specyficzna dla każdego klienta. Możesz użyć biblioteki do komunikowania się ze swoimi serwerami i może nawet nie będziesz musiał podawać użytkownikowi tajnych informacji, może to być po prostu osadzone w bibliotece. Nie rozwiązuje to problemu inżynierii wstecznej twojej biblioteki, ale daje ci kontrolę nad poziomem zaciemnienia. Wadą jest to, że gdy jedna osoba złamie zaciemnianie w bibliotece, może zaatakować dowolną twoją bibliotekę, chyba że napiszesz kod, który znacznie różni każdą bibliotekę. To wprowadza własny zestaw problemów.
To może nieco odbiegać od zakresu twojego pytania, ale jest związane z bezpieczeństwem twojego tokena, więc o tym wspomnę. Aby zapobiec trywialnej kradzieży tokena przez drut, prawdopodobnie nie chcesz wysyłać tokena bezpośrednio, zamiast tego możesz podpisywać ruch za pomocą funkcji HMAC. Możesz sprawdzić poprawność komunikatu, obliczając HMAC komunikatu na serwerze i porównując go z HMAC wysłanym od klienta. Używałbyś tokena jako klucza do funkcji HMAC, więc tylko osoba znająca token może podpisywać ruch. Jest to lepsze dla bezpieczeństwa twojego tokena, ponieważ nigdy nie wysyłasz go bezpośrednio na serwer, aby nie mógł zostać przechwycony i skradziony bezpośrednio. Aby uzyskać więcej informacji na temat HMACS, zobacz to pytanie: /security/20129/how-and-when-do-i-use-hmac/20301
Żadne rozwiązanie zabezpieczające nie będzie niemożliwe do zdobycia, musisz zdecydować, ile będzie ono kosztowało wdrożenie w porównaniu do prawdopodobieństwa i kosztu naruszenia.