Правильный и безопасный вход (вход) в проект Google Apps Script, развернутый как веб-приложение - PullRequest
0 голосов
/ 07 марта 2019

Я работаю над проектом скрипта Google Apps (может быть связан с электронной таблицей или автономно), который будет развернут как веб-приложение, и я хочу предоставить пользователям доступ на основе

  • 1) Вход в Google (некоторым пользователям будет предоставлен доступ или доступ будет запрещен для некоторых) для некоторых пользователей и
  • 2) имя пользователя / пароль для остальных.

1) Вход в Google

Я нашел это более хитрым, чем я предполагал. Я ожидал существования некоторых простых функций / методов, которые могут заставить его работать так, как я хочу, с гарантированным уровнем безопасности Google. Сначала я нашел следующее: https://developers.google.com/identity/sign-in/web/. Сначала это выглядело очень просто, поэтому я попытался реализовать этот код: https://developers.google.com/identity/sign-in/web/build-button,, но я застрял на шаге после заполнения content="YOUR_CLIENT_ID.apps.googleusercontent.com". Я правильно заполнил CLIENT_ID из Google Cloud Platform раздела Credentials и попытался войти в свой опубликованный проект. Я получил это:

Ошибка: redirect_uri_mismatch

Исходный код JavaScript в запросе, https://n -__________________________________- script.googleusercontent.com , не совпадает с авторизованным для клиента OAuth. Визит https://console.developers.google.com/apis/credentials/oauthclient/___________.apps.googleusercontent.com?project=_____ для обновления авторизованного Происхождение JavaScript.

Итак, я скопировал первую ссылку, затем поставил googleuser.com на Authorized domains, а затем вставил ссылку в Authorized JavaScript origins. Но мне не разрешили его сохранить, и это выскочило:

Ошибка

У вас нет разрешения на выполнение этого действия.

номер для отслеживания: c411401060

Я не знаю почему. Несколько месяцев назад что-то подобное не было проблемой. Я полагаю, это как-то связано с новой политикой ограниченных областей действия Google. Я пытался заставить это работать для связанного и автономного проекта без разницы в результатах. Итак, наконец (частично из-за этой схемы: https://developers.google.com/identity/sign-in/web/server-side-flow) я пришел к выводу, что вся концепция входа в систему для веб-сайтов не предназначена для использования в опубликованном проекте скриптов приложений.

а) Я не прав? Если нет, то как я могу заставить его работать, пожалуйста?

б) Почему я получил ошибку - номер для отслеживания: c411401060? Кто-нибудь знает?

Так что я продолжал искать решение где-то еще. Наиболее похожий вопрос, который я нашел здесь: Веб-приложение скрипта приложения Google, как создать кнопку входа в систему? . Но прошло уже более трех лет с не очень удовлетворительными ответами (или я их не понимаю):

в) Действительно ли мне нужно публиковать более одного проекта одновременно, чтобы предоставить доступ для некоторых пользователей, а для некоторых без учетной записи Google? Как только пользователи вошли в систему, как они могут выйти? Разве нет простого способа надежной проверки идентификатора пользователя или gmail?

d) Есть ли у кого-нибудь работающий пример кода? Как начинающий, я очень ценю пример, потому что держу пари, что если есть простое решение, я уже читал об этом, но я не заметил, что это то, что мне нужно.


2) имя пользователя / пароль

Хотя мне было десять лет, я нашел полезным прочитать это Полное руководство по аутентификации веб-сайтов на основе форм . Или, по крайней мере, я не знал лучшей статьи, с чего начать. Ссылки приветствуются.

Моя идея о том, как ввести имя пользователя и пароль, заключается в том, что я сделаю функцию на стороне сервера, вызываемую пользователем через google.script.run, и эта функция будет проверять правильность имени пользователя и пароля. a) Это безопасно? Теперь, когда пользователь вошел в систему, могу ли я просто позволить веб-приложению работать? Я имею в виду, что пользователь отправил имя пользователя и пароль, так что приложение просто продолжит работать без какой-либо другой техники? б) Или я сделаю приложение более безопасным, если после входа я позволю какой-нибудь серверной функции генерировать случайную строку, которая будет отправлена ​​клиенту и послужит токеном для сеанса?


Лучшие практики, советы, коды, источники приветствуются!

Спасибо

1 Ответ

1 голос
/ 08 марта 2019

Может быть, я могу дать вам ответ на первый вопрос.

1) Вход в Google. Прежде чем начать, добавьте эту ссылку Google Oauth2

1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

Это решит некоторые проблемы с логином

Вам необходимо добавить новый идентификатор клиента OAuth 2.0 помимо идентификатора скрипта Apps по умолчанию в облачной консоли, а также включить необходимые API-интерфейсы из консолей API.

В App Script ID вы можете добавить этот URL https://script.google.com/oauthcallback

под Авторизованный URL-адрес обратного вызова

После этого в своем недавно созданном клиенте oauth вы можете добавить URL-адрес своего скриптового приложения. как это перенаправить URL

https://script.google.com/d/projectid/usercallback

После копирования вставьте в свой проект идентификатор клиента и секрет клиента только что созданного Oauth.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...