Svět digitálního komunikačního prostředí vyžaduje zabezpečení dat a ověření identity. Koncept síťové důvěry v rámci PGP (Pretty Good Privacy) přináší možnost ověřování identity pomocí digitálních podpisů a důvěry přímo mezi uživateli. Existující nástroje, které implementují PGP, však tento koncept často nezahrnují. Součásti této práce je tedy webové aplikace, která umožní uživatelům vizualizovat síť důvěry a spravovat ji. Práce dále analyzuje teoretické základy asymetrické kryptografie, principy sítě důvěry a problémy spojené s centralizovanými řešeními ověřování identity.
Dostupné v souboru CHANGELOG.md.
Použití nix-shell jako vývojového shellu zjednodušuje proces nastavení, protože všechny závislosti jsou předdefinovány. Stačí vstoupit do shellu a vše potřebné je připraveno k použití, což zajišťuje konzistenci a vyhýbá se konfliktům s globálními balíčky systému. Pro více informací a instalační pokyny navštivte web Nix.
Ačkoli je nix ideální abstrakcí pro vývojový shell, podle mého názoru není nejlepší volbou pro spouštění potřebných služeb. Proto používám Docker pro spuštění služeb jako Neo4j, Elasticsearch a Redis na pozadí pomocí docker-compose.
1. Klonujte repozitář
git clone https://github.com/Tarasa24/trustroute.git
cd trustroute2. Vstupte do nix-shell
nix-shellNyní jste v prostředí nix-shell a všechny závislosti jsou nainstalovány. Můžete pokračovat v procesu sestavení.
3. Nainstalujte závislosti
Použijte správce balíčků bundler pro Ruby a yarn pro JavaScript k instalaci požadovaných závislostí.
bundle install && yarn install4. Spusťte požadované služby
Pomocí docker-compose můžete spustit požadované služby na pozadí. Služby jsou definovány v souboru docker-compose.yml nacházejícím se v kořenovém adresáři.
docker-compose up -d5. Migrujte a naplňte databázi
Nastavte schéma databáze a naplňte databázi počátečními daty.
rails neo4j:migrate && rails db:seedPokud preferujete instalaci závislostí ve vašem systému, můžete postupovat podle těchto kroků. Tento přístup je flexibilnější, ale vyžaduje více manuální práce. Následující kroky byly testovány na Ubuntu 20.04. Tento přístup není můj preferovaný způsob nastavení vývojového prostředí, ale je to platná alternativa.
1. Klonujte repozitář
git clone https://github.com/Tarasa24/trustroute.git
cd trustroute2. Nainstalujte závislosti
Použijte správce balíčků bundler pro Ruby a yarn pro JavaScript k instalaci požadovaných závislostí.
bundle install && yarn install3. Spusťte požadované služby
Protože nepoužíváme Docker, musíte služby spustit ručně. Můžete použít následující příkazy ke spuštění služeb.
service neo4j start
service elasticsearch start
service redis-server startUjistěte se, že služby běží a jsou přístupné. Neo4j na http://localhost:7474, Elasticsearch na http://localhost:9200 a Redis na localhost:6379.
4. Migrujte a naplňte databázi
Nastavte schéma databáze a naplňte databázi počátečními daty.
rails neo4j:migrate && rails db:seedPo nastavení vývojového prostředí je třeba nastavit ještě několik dalších věcí, než bude možné aplikaci spustit.
1. Vytvořte OAuth aplikace
Nastavte OAuth aplikace pro GitHub, Twitter a Discord. Každá aplikace poskytne klientské ID a tajný klíč, které budou potřeba pro autentizaci uživatele a tím i pro externí ověřování identity. Aplikace můžete vytvořit na příslušných platformách.
- GitHub
- Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/oauth_identities/github/callback
- Homepage URL:
- Twitter
- Website URL:
http://localhost:3000 - Callback URLs:
http://localhost:3000/oauth_identities/twitter2/callback
- Website URL:
- Discord
- Redirects:
http://localhost:3000/oauth_identities/discord/callback
- Redirects:
- TBA...
2. Vytvořte znovu tajná data
Po klonování repozitáře obsahuje soubor config/credentials.yml.enc, který obsahuje šifrované přihlašovací údaje. Tento soubor je šifrován pomocí hlavního klíče, který není součástí repozitáře. Je třeba znovu vytvořit soubor přihlašovacích údajů s vlastním hlavním klíčem. To můžete udělat spuštěním následujícího příkazu.
rm config/credentials.yml.enc
rails credentials:edit3. Přidejte tajné klíče OAuth do souboru s tajnými údaji
Přidejte OAuth tajné klíče do souboru přihlašovacích údajů, aplikace očekává, že budou přítomny následující klíče.
oauth_providers:
github:
id: VAŠE_GITHUB_KLIENTSKÉ_ID
secret: VÁŠ_GITHUB_KLIENTSKÝ_TAJNÝ_KLÍČ
twitter2:
id: VAŠE_TWITTER_KLIENTSKÉ_ID
secret: VÁŠ_TWITTER_KLIENTSKÝ_TAJNÝ_KLÍČ
discord:
id: VAŠE_DISCORD_KLIENTSKÉ_ID
secret: VÁŠ_DISCORD_KLIENTSKÝ_TAJNÝ_KLÍČ4. Spusťte aplikaci
Aplikace by měla běžet na http://localhost:3000.
Pro nasazení do produkce doporučuji použít Docker a Docker Compose. Následující kroky popisují, jak nasadit aplikaci pomocí Docker Compose. I když je možné aplikaci nasadit jinými způsoby, nemohu poskytovat podporu pro tyto metody kromě nastavení požadované proměné prostředí RAILS_ENV=production.
1. Vytvořte OAuth aplikace
Nastavte OAuth aplikace pro GitHub, Twitter a Discord, jak je popsáno v nastavení vývojářského prostředí.
2. Nastavte soubor .env
Zkopírujte příklad souboru s konfigurací prostředí a vyplňte ho svými údaji.
cp docker/.env.example docker/.envcat docker/.env
# Konfigurace aplikace
SECRET_KEY_BASE=ZMĚŇTEME # Generujte náhodný klíč, který bude použit jáko základ pro další šifrování (např. `openssl rand -hex 64`)
# Konfigurace databáze
NEO4J_URL=neo4j://neo4j:7687
NEO4J_AUTH=neo4j/password
# Konfigurace vyhledávacího enginu
ELASTICSEARCH_URL=http://elasticsearch:9200
# Konfigurace cache
REDIS_URL=redis://redis:6379/0
# Konfigurace e-mailu
# Viz https://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
SMTP_ADDRESS=smtp.gmail.com
SMTP_PORT=465
SMTP_DOMAIN=example.com
SMTP_USER_NAME=trustroute@example.com
SMTP_PASSWORD=password
SMTP_SSL=true
SMTP_TLS=true
SMTP_AUTHENTICATION=login
# Konfigurace OAuth
GITHUB_ID=id
GITHUB_SECRET=secret
TWITTER2_ID=id
TWITTER2_SECRET=secret
DISCORD_ID=id
DISCORD_SECRET=secret3. Stáhněte nejnovější obraz (nebo sestavte lokálně)
Ujistěte se, že máte nejnovější obraz nebo jej sestavte lokálně, pokud je to nutné.
docker compose -f docker/docker-compose.yaml pull
# nebo
docker compose -f docker/docker-compose.yaml build4. Spusťte aplikaci
Spusťte aplikaci pomocí Docker Compose. Celý stack bude spuštěn na pozadí včetně požadovaných služeb.
docker compose -f docker/docker-compose.yaml up -d5. Naplňte aplikaci příkladovými daty (volitelné)
Pokud chcete, můžete naplnit databázi příkladovými daty, jako je síť důvěry vývojářů Arch Linuxu. Tento krok je volitelný.
docker compose -f docker/docker-compose.yaml exec app bundle exec rake db:seed6. Přístup k aplikaci
Aplikace by měla běžet na http://localhost:3000.
