Propozycja autoryzacji Blipowego API
Blip 2 wrz 2009Kubofonista we wpisie na blogu wyróżnił trzy możliwe sposoby autoryzacji: “Login i Hasło”, ApiKey i OAuth który uznał za najlepszą metodę, z czym ja się nie zgodzę. Plusem OAuth jest oczywiście to, że aplikacja nie zna hasła użytkownika do danego serwisu, możliwość zarządzania autoryzowanymi aplikacjami oraz cofania dostępu do konta w danym serwisie. Podstawowym problemem jest niemożność zastosowania OAuth w przypadku aplikacji desktopowych oraz o otwartym kodzie (np. JavaScript). W tym przypadku rozwiązaniem jest stosowanie w dalszym ciągu ApiKey lub “Loginu i Hasła”.
W związku z krytyką aktualnego sposobu autoryzacji zacząłem się zastanawiać nad innymi sposobami i wpadłem na pomysł który nazwałem przyjaźnie dla użytkownika: “Hasła dla aplikacji”, podobnie jak to opiszę opisał to we wspomnianym wpisie Kubofonista.
“Hasła dla aplikacji” jest to połączenie wszystkich trzech wspomnianych wcześniej sposobów autoryzacji, a więc wyobrażam sobie to tak: po zalogowaniu, w menu obok linków do kokpitu, Bliposfey itd. pojawił by się link do podstrony na której użytkownik zarządzał by swoimi “Hasłami dla aplikacji”. Na tejże podstronie znajdowała by się lista wygenerowanych haseł oraz możliwość wygenerowania nowego hasła, każde wygenerowane hasło użytkownik mógłby opisać np. “Sekretarka Tomasza Topy”. Wprowadzenie tego typu autoryzacji nie wymagało by żadnych zmian w BlipAPI, gdyż “Hasło dla aplikacji” podawało by się tam, gdzie do tej pory podawało się zwykłe hasło. Użytkownik miałby możliwość tymczasowego wyłączenia hasła, jego skasowania, oraz w dalszej perspektywie ograniczania jego możliwości (np. tylko pobieranie wiadomości) oraz przeglądania statystyk czynności wykonywanych przez aplikację, oczywiście wszystko przez stronę blipa. W przypadku próby zalogowania zwykłym hasłem, lub podanie nieistniejącego hasła serwer BlipAPI zwracał by “Unautorized”, natomiast w przypadku tymczasowego wyłączenia hasła, lub próby wykonania niedozwolonej czynności określone w dokumentacji błędy.
Osobną kwestią pozostaje bezpieczeństwo przesyłanych danych, tutaj dałbym programistą dwie możliwości, albo połączenie https, albo opublikowanie klucza publicznego w dokumentacji API, ale ogólnie szyfrowanie to nie temat tego wpisu. Poza tym całe API wymaga poprawek w obsłudze aplikacji JavaScript.
Podsumowując, co się pewnie nie wszystkim spodoba jestem i raczej będę przeciwnikiem wprowadzania OAuth do jakichkolwiek projektów.
Na zakończenie dodam coś w co nie wszyscy uwierzą, że wpadając na pomysł “Haseł do aplikacji” nie wiedziałem, że Kubofonista już coś takiego opisał
.

2 wrz 2009 o 20:34
Witaj ;]
Te hasła aplikacji to jest dokładnie to co opisałem ;] Minie sporo czasu zanim wprowadzą, więc niech nam dadzą póki co jeden taki api key, nie wymagajmy od razu wersji z opisywaniem / osobnym kluczem czy uprawnieniami.
Co do oauth, używa go Twitter, lecz aplikacje desktopowe mogą działać. Dlaczego? Bo dla nich jest dopuszczona autoryzacja loginem i hasłem. Wybór należy do użytkownika czy aplikacji login/hasło podać dane czy nie. W kwestii JavaScript nie istnieje możliwość stosowania niczego, gdyż nawet jak zastosujemy tam api-key ktoś obcy go pozna i będzie mógł za nas pisać.
Co do oauth: mam potwierdzenie, że będzie wprowadzone
2 wrz 2009 o 20:45
Dopiero po napisaniu doczytałem Twój wpis do końca i przeczytałem to samo co napisałem, ale jako, że wcześniej zobowiązałem się we wpisie o BlipProxy zobowiązałem się to napisać, to opublikowałem.
Ale ApiKey podawał by użytkownik korzystający z aplikacji JavaScript, więc nie było by go w kodzie, a w oauth aplikacja musi mieć swoje konto i trzeba nim podpisywać wszystkie zapytania.
2 wrz 2009 o 21:22
Żadnego problemu nie ma w posiadaniu konta własnego, a zaangażowanie php w całość też nie boli ;]
P.S: Na przyszłość trackbackuj ;]
2 wrz 2009 o 23:28
Customowi WP sam wysłał, wewnątrz bloga jak linkuję też wysyła, ale będę ręcznie dopisywał w przyszłości
Zaangażowanie PHP w aplikacje JS, tak jak jest to teraz, to marnowanie mocy serwerów, np. w Pingerze (patrząc na dokumentację) mógłbym zrobić wiele w JS, a na dzień dzisiejszy na blipie niektórych rzeczy nie mogę (niedopracowane API), a z OAuth nic nie zrobię bez PHP. Dlatego jestem przeciwny OAuth.