Nowa metoda autoryzacji 6
Nie wszystkie środowiska w których piszecie widgety konkursowe spełniają wymagania API: obsługę POST i ciasteczek. Przykładem niech będą widgety pisane pod iGoogle. Problem dostrzegliśmy jakiś czas temu, i dziś wprowadzamy jego rozwiązanie.
Login poprzez post na api.grono.net/pub/apilogin/ nie jest już jedyną dostępną metodą autoryzacji. Kolejną (być może nie ostatnią) jest korzystanie z tokena, więcej w dokumentacji.
Tymczasem w skrócie: wykonujecie GET lub POST na adres pobierania tokena, otrzymujecie krótko ważny token na żądany zasób. W kolejnych zapytaniach dołączacie token jako parametr w GET lub POST (zależnie od typu requesta) zamiast ciasteczek sesji. I tyle!
Niestety, bezpieczeństwo takiego rodzaju autoryzacji jest kiepskie, ponieważ hasło wysyłamy plaintextem, a ukradziony token to wszystko, czego potrzeba by dostać dostęp do zasobów Grona. Usprawiedliwić można to tylko tym, że standardowy sposób logowania oferuje równie niski poziom zabezpieczenia.
W przyszłości zamierzamy wprowadzić, również opartą na tokenach, bezpieczniejszą metodę autoryzacji, zbliżoną do Google AuthSub czy Flickr Auth API. Jak zwykle obserwujcie to miejsce, i zaprojektujcie swoje programy tak, aby łatwo było można wymienić moduł autoryzacji.
Comments
-
a czy przypadkiem stare logowanie do api nie zostało w jakiś sposób uszkodzone? od wczoraj mam problemy z trzymaniem sesji.
-
do powyżej: o ile jeśli zaloguję się przez safari to wszystko jest w porządku. cookies zostaje zapisany i wszystko jest ok. przy logowaniu przez api dostaję wiadomość, że że logowanie ok i przy następnym wywołaniu xmlhttprequest'a dostaje że autoryzacja nie powiodła się. mogę dać głowę, że jeszcze jakiś czas temu wszystko działało.
-
zwracam honor. wina nowego webkita idącego z safari3
-
ważna rzecz: po zalogowaniu się, dostaniesz również ciasteczka sesji, i jeśli będziesz je przechowywać i przekazywać z następnymi requestami, możesz natrafić na następujący caveat: 1. masz token na zasób A, ale zapomniałeś o nim, bo masz ciastka sesji 2. idziesz na zasób B (masz ciasteczka sesji więc powinien działać) 3. a tu nagle 403 - bo token jest ważniejszy od sesji miejcie to na uwadze.
-
coś jest nie tak. nie mogę pobrać ani blimpa ani limitu transferu. dla blimpa podaję domenę profile, a dla limitu gallery i w obydwu przypadkach dostaję zwrot apilogin.token.expired.or.incorrect
-
problem z blimpem jest znany, naprawię dziś. a limit po prostu przeoczyłem - zauważcie że nie ma go w żadnej domenie :)
