Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023) — различия между версиями

Материал из 0x1.tv

(Thesis)
 
(не показаны 2 промежуточные версии этого же участника)
;{{SpeakerInfo}}: {{Speaker|Алексей Бережок}}
<blockquote> 
GNOME Online Accounts, или сокращённо GOA, предоставляет пользователям простой способ входа в онлайн-учётные записи различных сервисов (например Google, Yahoo, Nextcloud и т. д) в среде рабочего стола GNOME.

В окне настройки учётных записей в Gnome видно, что отечественных сервисов в списке не предусмотрено. 
Но при этом тот же Yandex имеет функционал, который может быть использован в GOA.

В российском сегменте подобных интеграций или доработок не обнаружено, поэтому было решено добавить поддержку новых сервисов.
</blockquote>

{{VideoSection}}

{{vimeoembed|901905286|800|450}}
{{youtubelink|}}
|vlFugB-_KwE}}
{{SlidesSection}}
[[File:Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf|left|page=-|300px]]

{{----}}

== Thesis ==
Интеграция с почтой оказалась самой простой. Её выполнили по аналогии с Google Mail, после чего она заработала без
каких-либо сложностей и нареканий. 

Сложности возникли с календарём Yandex, так как у него есть свои особенности. Работа с ним отличается от работы с
календарём Google: в протоколе отличий нет, но есть отличие в реализации аутентификации. Google-провайдер передаёт
заголовок 
<pre>
Authorization: Bearer <authorization-parameters> 
</pre>
согласно [[https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization спецификации], в то время как Яндекс-сервер ожидает <tt>OAuth</tt> вместо <tt>Bearer</tt>. Небольшая замена в
исходных кодах программного пакета позволила также подключить и календарь от Yandex сервисов.

Для подключения Яндекс Диска в наличии имелись два варианта: [https://yandex.ru/dev/disk/rest/ Yandex REST API] и [[[https://yandex.ru/dev/disk/webdav/ Yandex WebDAV
 API]. Основной пакет, который реализует подключение виртуальных файловых систем в Gnome  —  это gvfs. В
данном пакете уже имеется инструментарий по работе с WebDAV протоколом (реализован для NextCloud). Поэтому в первую
очередь заинтересовал именно WebDAV протокол от Yandex. Для определения типа авторизации используется [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization заголовок
 www-authenticate], который от Yandex сервера возвращает строку: 
<pre>
WWW-Authenticate: Basic realm="Yandex.Disk" 
</pre>
где аутентификация идентифицирует себя как Basic, но в качестве realm
указывается Yandex.Disk. Эта маленькая деталь отделяла от работоспособности сервиса в gvfs пакете, т. к. Yandex
требовал «OAuth», а не «Basic». После добавления такого нестандартного Basic, который возвращает в заголовке OAuth,
функционал также заработал.

Таким образом, малыми усилиями удалось интегрировать Яндекс сервисы с Gnome окружением. Для подключения Yandex сервисов,

Текущая версия на 10:51, 27 июня 2024

Докладчик
Алексей Бережок

GNOME Online Accounts, или сокращённо GOA, предоставляет пользователям простой способ входа в онлайн-учётные записи различных сервисов (например Google, Yahoo, Nextcloud и т. д) в среде рабочего стола GNOME.

В окне настройки учётных записей в Gnome видно, что отечественных сервисов в списке не предусмотрено. Но при этом тот же Yandex имеет функционал, который может быть использован в GOA.

В российском сегменте подобных интеграций или доработок не обнаружено, поэтому было решено добавить поддержку новых сервисов.

Видео

on youtube

Презентация

Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023).pdf

Thesis

GNOME Online Accounts, или сокращённо GOA, предоставляет пользователям простой способ входа в онлайн-учётные записи различных сервисов (например Google, Yahoo, Nextcloud и т.\,д) в среде рабочего стола GNOME.

В окне настройки учётных записей в Gnome видно, что отечественных сервисов в списке не предусмотрено. Но при этом тот же Yandex имеет функционал, который может быть использован в GOA. В российском сегменте подобных интеграций или доработок не обнаружено, поэтому было решено добавить поддержку новых сервисов.

Для взаимодействия с сервисами Yandex было решено использовать Yandex Auth через OAuth токен.

Так как процесс получения токена у Yandex в определённом смысле похож на получение токена в Google, то за основу был взят исходный код goagoogleprovider.c, но с заменой путей url, характерных для Yandex.

Идентификатор пользователя извлекается из default_email, возвращаемый при запросе страницы [1].

Список доступа к приложениям Yandex сформирован таким образом:

login:email login:info mail:imap_full mail:imap_ro mail:smtp 
calendar:all yadisk:disk cloud_api:disk.write 
cloud_api:disk.read

При добавлении функционала он будет расширяться.

В итоге доработок в списке GOA появился новый GOA-провайдер — Yandex. Иконка Yandex отображается в стандартной теме GNOME. При этом в списке GOA-провайдеров Yandex был вынесен на первое место при отображении.

Так выглядит регистрация:

Окно регистрации аккаунта:

2023-berejok-img001.png

Evolution имеет интеграцию с GOA, поэтому для первичной проверки был выбран именно он. После запуска он показал, что он не знает нового провайдера. Чтобы он мог с ним работать, был доработан пакет Evolution-data-server. В него добавлен новый провайдер — Yandex. Evolution способен извлекать из GOA токен и параметры учётной записи, и, используя функции провайдера, взаимодействовать с необходимыми сервисами.

Интеграция с почтой оказалась самой простой. Её выполнили по аналогии с Google Mail, после чего она заработала без каких-либо сложностей и нареканий.

Сложности возникли с календарём Yandex, так как у него есть свои особенности. Работа с ним отличается от работы с календарём Google: в протоколе отличий нет, но есть отличие в реализации аутентификации. Google-провайдер передаёт заголовок

Authorization: Bearer <authorization-parameters> 

согласно спецификации, в то время как Яндекс-сервер ожидает OAuth вместо Bearer. Небольшая замена в исходных кодах программного пакета позволила также подключить и календарь от Yandex сервисов.

Для подключения Яндекс Диска в наличии имелись два варианта: Yandex REST API и Yandex WebDAV API. Основной пакет, который реализует подключение виртуальных файловых систем в Gnome — это gvfs. В данном пакете уже имеется инструментарий по работе с WebDAV протоколом (реализован для NextCloud). Поэтому в первую очередь заинтересовал именно WebDAV протокол от Yandex. Для определения типа авторизации используется заголовок www-authenticate, который от Yandex сервера возвращает строку:

WWW-Authenticate: Basic realm="Yandex.Disk" 

где аутентификация идентифицирует себя как Basic, но в качестве realm указывается Yandex.Disk. Эта маленькая деталь отделяла от работоспособности сервиса в gvfs пакете, т. к. Yandex требовал «OAuth», а не «Basic». После добавления такого нестандартного Basic, который возвращает в заголовке OAuth, функционал также заработал.

Таким образом, малыми усилиями удалось интегрировать Яндекс сервисы с Gnome окружением. Для подключения Yandex сервисов, достаточно пройти одну авторизацию и получить в различных программах, поддерживающих Gnome Online Accounts работоспособные почту, календарь и диск.


Ссылки

Как мы интегрировали GNOME Online Accounts с сервисами Yandex в российской ОС МСВСфера (Алексей Бережок, OSSDEVCONF-2023)!.jpg

Примечания и ссылки