Skip to main content
FHEDEEN
Request information material

Bachelor Flyer Master Flyer

Contact

Sekretariat Angewandte Informatik
Tel.: 0361 / 6700-5510 sekretariat-ai@fh-erfurt.de

Besucheranschrift:

Fachhochschule Erfurt
Fakultät Gebäudetechnik und Informatik
Fachrichtung Angewandte Informatik
Altonaer Straße 25
99085 Erfurt

Vergleich verschiedener OAuth-Flows für die Autorisierung in eingeschränkten Umgebungen und deren Implementierung in einer Obsidian-Erweiterung

Das Obsidian Google Calendar (OGC)-Plugin ist eine Erweiterung, die es dem Benutzer ermöglicht, mit seinen Google-Terminen innerhalb der Obsidian-Anwendung zu interagieren. Da die Einrichtung des Plugins durch das Anlegen eines eigenen Google Cloud-Projektes für Anwender zu schwer ist, soll der Installationsprozess erleichtert werden. Dafür wurden verschiedene Autorisierungsmethoden, die in anderen Plugins verwendet werden, für den Einsatz im OGC-Plugin evaluiert. Die Wahl fiel auf das OAuth-Protokoll. Dieses Protokoll ermöglicht die bidirektionale Synchronisation der strukturierten Kalenderdaten zwischen dem Google-Server und dem OGC-Plugin, durch die Verwendung der Google Calendar API. Innerhalb von OAuth existieren verschiedene Flows, diese wurden analysiert und für den Einsatz in einem Plugin bewertet. Dabei kam man zu dem Ergebnis, dass der PKCE-Flow die sicherste und geeignetste Option für die Umsetzung im OGC-Plugin ist. Aufgrund von Einschränkungen seitens Google wurde eine zweite Variante implementiert, die das Client-Secret der Anwendung sicher speichern kann. Diese wird auf einem externen Server ausgeführt und verwendet den Authorization Code Flow. In beiden Varianten traten Probleme auf, die nicht den definierten Anforderungen des Plugins entsprachen. Deshalb wurden diese Probleme in der Umsetzung erst theoretisch und im Anschluss praktisch gelöst. So wurde die Angabe einer gültigen Redirect-URL durch die Verwendung des Obsidian-Protokolls und einem Redirect-Server gelöst und der Transport der Token mithilfe einer Verschlüsselung gesichert. Außerdem wurde die sichere Speicherung der Token analysiert und mithilfe einer Passworteingabe zur Ver- und Entschlüsselung der sensiblen Daten umgesetzt. Die Arbeit hat außerdem auf die Google-spezifischen Richtlinien aufmerksam gemacht und erklärt, wie einige dieser Anforderungen umgesetzt wurden. Das Ergebnis der Arbeit ist ein öffentlicher Client, mit welchem Benutzer das OGC-Plugin verwenden können, ohne ein eigenes Google Cloud-Projekt erstellen zu müssen.

The Obsidian Google Calendar (OGC) plugin is an extension that allows users to interact with their

Google Events within the Obsidian application. Since setting up the plugin by creating a custom Google

Cloud project is too difficult for users, the installation process should be made easier. For this purpose,

various authorization methods used in other plugins were evaluated for use in the OGC plugin. The

choice fell on the OAuth protocol. This protocol enables the bidirectional synchronization of structured

calendar data between the Google server and the OGC plugin, using the Google Calendar API. Various

flows exist within OAuth, these were analyzed and evaluated for use in a plugin. The conclusion was that

the PKCE flow is the most secure and suitable option for implementation in the OGC plugin. Due to

restrictions on the part of Google, a second variant was implemented that can securely store the client

secret of the application. This flow is run on an external server and uses the Authorization Code Flow.

Both variants encountered problems that did not meet the defined requirements of the plugin. Therefore,

these problems were first solved theoretically and then practically in the implementation. The specification

of a valid redirect URL was solved by using the Obsidian protocol and a redirect server, and the transport

of the tokens was secured using encryption. In addition, the secure storage of the tokens was analyzed

and implemented using a password entry to encrypt and decrypt the sensitive data. The work also drew

attention to Google-specific policies and explained how some of these requirements were implemented.

The result of the thesis is a public client that allows users to use the plugin without having to create their

own Google Cloud project.

Back