Существует несколько различных подходов, которые вы можете использовать для аутентификации пользователей внешнего приложения через учетную запись в вашем экземпляре nextcloud.К ним относятся:
- Создание пользовательского приложения в вашем экземпляре nextcloud, к которому ваш сайт будет перенаправлять пользователей.Затем указанное пользовательское приложение (после успешной аутентификации внутри nextcloud) перенаправит пользователя обратно в ваше приложение с токеном доступа (например, в качестве параметра запроса GET url).Затем бэкэнд вашего веб-сайта отправит запрос и конечную точку API, размещенную в пользовательском приложении, чтобы определить действительность полученного токена (не рекомендуется, я объясню почему через секунду).
- Запрос пользователяУчетные данные для входа в систему nextcloud и попытка войти в систему через IMAP, SMB или FTP для определения действительности предоставленных учетных данных.Этот вариант не рекомендуется, поскольку он требует, чтобы пользователь предоставил свои учетные данные бэкэнду вашего веб-сайта.
- Используя подход, несколько похожий на 1), без повторного изобретения колеса - благодаря тому, что Nextcloud поддерживает внешниеаутентификация через OAuth 2.0
Использование OAuth 2.0 позволит вашему веб-сайту аутентифицировать пользователей снаружи через ваш экземпляр nextcloud.
Вот как это будет работать в вашем случае:
- Ваши веб-сайты перенаправляют пользователя на конечную точку авторизации OAuth (можно сделать по простой ссылке) вашего экземпляра nextcloud (
nextcloud-instance-address/index.php/apps/oauth2/authorize
), идентифицируя себя при помощи Идентификатор клиента - Экземпляр Nextcloud заботится об аутентификации (пользователи видят обычный экран входа в систему с дополнительной информацией о том, что ваш сайт хочет получить доступ к своей учетной записи)
- При успешном входе в систему экземпляр nextcloud генерирует запросить токен и перенаправить пользователя обратно наВаш веб-сайт (на указанный URI перенаправления )
- Ваш веб-сайт получает маркер запроса (получает его через URI перенаправления ) и отправляет егок конечной точке токена вашего экземпляра Nextcloud (
your-instance-address/index.php/apps/oauth2/api/v1/token
) с Секретным ключом клиента .Ваш веб-сайт получает токен доступа в качестве ответа. - Ваш веб-сайт теперь может использовать токен доступа (в качестве токена на предъявителя) для отправки авторизованных запросов ПользователюAPI предоставления вашего экземпляра nextcloud
nextcloud-instance-address/index.php/ocs/v2.php/cloud/user?format=json
Хорошая идея - хранить маркер доступа в сеансе на основе файлов cookie.
Настройкаэто довольно просто (по крайней мере, на стороне вашего экземпляра nextcloud) - вы должны добавить свой сайт в разделе настроек безопасности администратора учетной записи администратора nextcloud.Вам нужно будет указать URI перенаправления, который ваш сайт будет использовать для получения маркера запроса при успешном входе в систему. Секрет клиента ключ и Идентификатор клиента будут сгенерированы для вас в админ-панели nextcloud.
Этот учебник поможет вам в создании вашегоБэкэнд веб-сайта в node.js.В вашем случае Потребитель является вашим сайтом, а Поставщик услуг является вашим экземпляром nextcloud.
Не стесняйтесь спрашивать, если что-то кажется неясным.Удачи и удачного кодирования!