Google Oauth2 Тип приложение Уеб сървър срещу Настолно приложение?

Опитвам се да създам уеб приложение за моя сървър, което може да свърже формулярите на уебсайта ми с Google Sheet. Докато генерирах OAuth клиентски идентификатор и тайна, избрах уеб сървър и трябваше да въведа URI за обратно извикване, за да обработя кода за оторизация, върнат от Google като отговор.

въведете описание на изображението тук

Е, сега създадох друг клиентски идентификатор, но този път избрах тип приложение като работен плот и не трябваше да въвеждам URI за пренасочване. В моето PHP приложение използвах URI за пренасочване като urn:ietf:wg:oauth:2.0:oob.

въведете описание на изображението тук

И в двата случая обаче успях да накарам Access Token и Refresh Token и моят API на Google Sheet да работят гладко.

И така, въпросът ми защо трябва да избера тип приложение като уеб сървър и да направя допълнителна стъпка, като въведа URI за пренасочване? Каква е ползата от това?

Можете да проверите Quickstart Oauthflow тук https://developers.google.com/sheets /api/quickstart/php#stepurn:ietf:wg:oauth:2.0:oobturn_on_the


person SkyRar    schedule 15.09.2020    source източник


Отговори (1)


И така, въпросът ми защо трябва да избера тип приложение като уеб сървър и да направя допълнителна стъпка, като въведа URI за пренасочване? Каква е ползата от това?

Сигурност. Клиентът на уеб сървъра ще върне удостоверението на вашия сървър. Installed ще го върне там, откъдето е дошла заявката. Ако някой получи вашия клиентски идентификатор и тайна за уеб приложение, той не може да го използва. Въпреки това, ако някой получи вашия клиентски идентификатор и тайна за инсталирано приложение, той може лесно да го използва, за да се представя за вашия акаунт на програмист.

Какво е клиентски идентификатор и клиентска тайна.

Мислете за идентификатора на клиента като за влизане и тайната като негова парола. Това потребителско име и парола идентифицират вашия проект пред Google и те идентифицират разработчика на този проект като вас.

Вие, разработчикът, носите отговорност за това потребителско име и парола. Ако е откраднато, доколкото google може да види, това е вашето приложение, което го използва, google няма начин да разбере друго. Ако данните за вход и паролата за настолно приложение бъдат откраднати, някой може да пусне приложение и доколкото някой знае, това ще изглежда като вашето приложение.

Вие създавате супер страхотно приложение за имейл, което дава достъп до потребителски gmail акаунт. Става много популярно и много хора знаят името. Някой открадва вашия клиентски идентификатор и тайната създава приложение, което изглежда точно като вашето супер страхотно имейл приложение. Няма начин някой да разбере, че не е така. Тъй като е настроено като приложение за настолни компютри, този човек може да го постави и да започне да събира разрешение от вашите потенциални потребители, без те да имат представа. Изглежда точно като вашето приложение, само че отговорите отиват към urn:ietf:wg:oauth:2.0:oob, ​​който е хост сървърът на човека, който е поставил това приложение, за да имитира вашето.

Освен ако приложението ви не работи на потребителска машина, наистина не е добра идея да използвате инсталирани идентификационни данни. Като се има предвид това, няма нищо, което да ви попречи да го направите, така че ще работи.

person DaImTo    schedule 15.09.2020
comment
Искате да кажете, че ако задам Desktop App, произволен брой сървъри, инсталирани на този десктоп, могат да се представят за моя акаунт. Така ли? - person SkyRar; 15.09.2020
comment
Искам да кажа, ако го настроите на настолно приложение. И някой открадва вашето клиентско име и клиентска тайна по някакъв начин. След това те могат да го използват, за да създадат приложение, което, доколкото Google може да разбере, сте вие, доколкото потребителите, които влизат, сте вие. След това този зъл човек може да спами API толкова много, че Google да ви заключи за спам и няма да има начин да получите достъп до акаунта си до края на времето. Освен това потребителските данни ще бъдат откраднати от ваше име, което може да ви постави под отговорност по правни причини. - person DaImTo; 16.09.2020