Decidim - přihlašování do site Decidim přes jiné Decidim? Jak to zapnout? #3

Open
opened 2021-03-21 23:23:48 +01:00 by Podhorecky · 11 comments
Podhorecky commented 2021-03-21 23:23:48 +01:00 (Migrated from git.spotter.cz)

Decidim má zajímavou funkci, kdy se v systémovém nastavení dá vyrobit poskytovatel OAuth. Z toho vznikne možnost, aby si někdo na vlastní site zvolil možnost přihlašování přes Decidim, podobně jako to známe u FB, G, TW.

V mém případě by to bylo užitečné, pokud by se někdo registroval do site https://decicim.spotter.cz tak by pak mohl kliknutím na webu https://voda.spotter.cz být vpuštěn, protože už by měl svůj účet na https://decidim.spotter.cz

Nojo, jenže nevim jak to zařídit. V systemovém rozhraní jsou chlívečky pro sociální sítě, ale nejsou pro Decidim.
Možná že to je někde nastavitelné v konfiguračním souboru?

Zajímavý postřeh je, že to reálně používají na https://meta.decidim.org

Firefox_Screenshot_2021-03-21T21-34-03.879Z

Decidim má zajímavou funkci, kdy se v systémovém nastavení dá vyrobit poskytovatel OAuth. Z toho vznikne možnost, aby si někdo na vlastní site zvolil možnost přihlašování přes Decidim, podobně jako to známe u FB, G, TW. V mém případě by to bylo užitečné, pokud by se někdo registroval do site https://decicim.spotter.cz tak by pak mohl kliknutím na webu https://voda.spotter.cz být vpuštěn, protože už by měl svůj účet na https://decidim.spotter.cz Nojo, jenže nevim jak to zařídit. V systemovém rozhraní jsou chlívečky pro sociální sítě, ale nejsou pro Decidim. Možná že to je někde nastavitelné v konfiguračním souboru? Zajímavý postřeh je, že to reálně používají na https://meta.decidim.org ![Firefox_Screenshot_2021-03-21T21-34-03.879Z](/uploads/20338bac2c4cdd3cb08a7638199e24d9/Firefox_Screenshot_2021-03-21T21-34-03.879Z.png)
Podhorecky commented 2021-03-21 23:24:14 +01:00 (Migrated from git.spotter.cz)

changed the description

changed the description
Podhorecky commented 2021-04-03 11:26:55 +02:00 (Migrated from git.spotter.cz)

Podle tohoto návodu jednoduše přidáním configuračních řádek do config file.

Setting up Oauth authentication

By configuring OAuth, you'll be able to log into your installation of Decidim by using some well known providers, like Facebook, Google or Twitter.

I highly recommend to configure SSL before get into this step. You'll need to tell the providers about your full URL and that includes the https:// part.

You can just follow the original documentation from the core team of Decidim, but as we are using the gem figaro we'll modify the file config/application.yml instead of config/secrets.yml.

These are the original instructions tweaked to match our configuration:
Facebook

Navigate to Facebook Developers Page
Follow the "Add a New App" link.
Click the "Website" option.
Fill in your application name and click "Create New Facebook App ID" button.
Fill in the contact email info and category.
Validate the captcha.
Ignore the source code and fill in the URL field with https://YOUR_DECIDIM_HOST/users/auth/facebook/callback
Navigate to the application dashboard and copy the APP_ID and APP_SECRET

Twitter

Navigate to Twitter Developers Page
You need to apply for a Developer's account, will be guided during the process
Follow the "My apps" link.
Click the "Create New App" button.
Fill in the Name, Description fields.
Fill in the Website field with YOUR_DECIDIM_HOST value and the Callback URL field with https://YOUR_DECIDIM_HOST/users/auth/twitter/callback. If you are working on a development app you need to use http://127.0.0.1:3000/ instead of http://localhost:3000/.
Check the 'Developer Agreement' checkbox and click the 'Create your Twitter application' button.
Navigate to the "Keys and Access Tokens" tab and copy the API_KEY and API_SECRET.
(Optional) Navigate to the "Permissions" tab and check the "Request email addresses from users" checkbox.

Google

Navigate to Google Developers Page
Follow the 'Create project' link.
Fill in the name of your app.
Navigate to the project dashboard and click on "Enable API"
Click on Google+ API and then "Enable"
Navigate to the project credentials page and click on OAuth consent screen.
Fill in the Product name field
Click on Credentials tab and click on "Create credentials" button. Select OAuth client ID.
Select Web applications. Fill in the Authorized Javascript origins with your url. Then fill in the Authorized redirect URIs with your url and append the path /users/auth/google_oauth2/callback.
Copy the CLIENT_ID AND CLIENT_SECRET

Common steps

Once you've created your desired applications in the providers you want. You need to activate the variable enabled in the file config/secrets.yml for each configured service.

For instance, if we want the Facebook login, we need to edit the secion "default/ommiauth/facebook":

nano ~/decidim-app/config/secrets.yml

We will make sure it looks like this:

default: &default
  omniauth:
    facebook:
      # It must be a boolean. Remember ENV variables doesn't support booleans.
      enabled: true
      app_id: <%= ENV["OMNIAUTH_FACEBOOK_APP_ID"] %>
      app_secret: <%= ENV["OMNIAUTH_FACEBOOK_APP_SECRET"] %>

Repeat the process for every service you want.

After that we need to add the env vars to our config/application.yml file.

nano ~/decidim-app/config/application.yml

Add the lines you need according to your services:

if you've enabled facebook:

OMNIAUTH_FACEBOOK_APP_ID:

OMNIAUTH_FACEBOOK_APP_SECRET:

if twitter:

OMNIAUTH_TWITTER_API_KEY:

OMNIAUTH_TWITTER_API_SECRET:

if google:

OMNIAUTH_GOOGLE_CLIENT_ID:

OMNIAUTH_GOOGLE_CLIENT_SECRET:

Restart passenger and you're done:

sudo passenger-config restart-app ~/decidim-app

Podle tohoto návodu jednoduše přidáním configuračních řádek do config file. Setting up Oauth authentication By configuring OAuth, you'll be able to log into your installation of Decidim by using some well known providers, like Facebook, Google or Twitter. I highly recommend to configure SSL before get into this step. You'll need to tell the providers about your full URL and that includes the https:// part. You can just follow the original documentation from the core team of Decidim, but as we are using the gem figaro we'll modify the file config/application.yml instead of config/secrets.yml. These are the original instructions tweaked to match our configuration: Facebook Navigate to Facebook Developers Page Follow the "Add a New App" link. Click the "Website" option. Fill in your application name and click "Create New Facebook App ID" button. Fill in the contact email info and category. Validate the captcha. Ignore the source code and fill in the URL field with https://YOUR_DECIDIM_HOST/users/auth/facebook/callback Navigate to the application dashboard and copy the APP_ID and APP_SECRET Twitter Navigate to Twitter Developers Page You need to apply for a Developer's account, will be guided during the process Follow the "My apps" link. Click the "Create New App" button. Fill in the Name, Description fields. Fill in the Website field with YOUR_DECIDIM_HOST value and the Callback URL field with https://YOUR_DECIDIM_HOST/users/auth/twitter/callback. If you are working on a development app you need to use http://127.0.0.1:3000/ instead of http://localhost:3000/. Check the 'Developer Agreement' checkbox and click the 'Create your Twitter application' button. Navigate to the "Keys and Access Tokens" tab and copy the API_KEY and API_SECRET. (Optional) Navigate to the "Permissions" tab and check the "Request email addresses from users" checkbox. Google Navigate to Google Developers Page Follow the 'Create project' link. Fill in the name of your app. Navigate to the project dashboard and click on "Enable API" Click on Google+ API and then "Enable" Navigate to the project credentials page and click on OAuth consent screen. Fill in the Product name field Click on Credentials tab and click on "Create credentials" button. Select OAuth client ID. Select Web applications. Fill in the Authorized Javascript origins with your url. Then fill in the Authorized redirect URIs with your url and append the path /users/auth/google_oauth2/callback. Copy the CLIENT_ID AND CLIENT_SECRET Common steps Once you've created your desired applications in the providers you want. You need to activate the variable enabled in the file config/secrets.yml for each configured service. For instance, if we want the Facebook login, we need to edit the secion "default/ommiauth/facebook": `nano ~/decidim-app/config/secrets.yml` We will make sure it looks like this: ``` default: &default omniauth: facebook: # It must be a boolean. Remember ENV variables doesn't support booleans. enabled: true app_id: <%= ENV["OMNIAUTH_FACEBOOK_APP_ID"] %> app_secret: <%= ENV["OMNIAUTH_FACEBOOK_APP_SECRET"] %> ``` Repeat the process for every service you want. After that we need to add the env vars to our config/application.yml file. `nano ~/decidim-app/config/application.yml` Add the lines you need according to your services: # if you've enabled facebook: OMNIAUTH_FACEBOOK_APP_ID: <your-facebook-app-id> OMNIAUTH_FACEBOOK_APP_SECRET: <your-facebook-app-secret> # if twitter: OMNIAUTH_TWITTER_API_KEY: <your-twitter-api-key> OMNIAUTH_TWITTER_API_SECRET: <your-twitter-api-secret> # if google: OMNIAUTH_GOOGLE_CLIENT_ID: <your-google-client-id> OMNIAUTH_GOOGLE_CLIENT_SECRET: <your-google-client-secret> Restart passenger and you're done: `sudo passenger-config restart-app ~/decidim-app`
Disassembler commented 2021-04-03 11:33:25 +02:00 (Migrated from git.spotter.cz)

Je vyžadováno nastavení na jak na straně Decidimu, který má dělat oauth providera (tam se navíc musí doinstalovat extra plugin), tak i na straně Decidimu konzumujícího tuto službu.

Kterým Decidimem se chcete autentikovat vůči kterému jinému?

Je vyžadováno nastavení na jak na straně Decidimu, který má dělat oauth providera (tam se navíc musí doinstalovat extra plugin), tak i na straně Decidimu konzumujícího tuto službu. - Server - https://github.com/decidim/omniauth-decidim#usage - Klient - https://docs.decidim.org/en/services/social_providers/#_decidim Kterým Decidimem se chcete autentikovat vůči kterému jinému?
Podhorecky commented 2021-04-03 11:45:38 +02:00 (Migrated from git.spotter.cz)

to je zajímavá otázka... takle to vypadá, že to je možné nastavit pouze vůči cizími nasazení Decidimu (napříklav v Barceloně)
Ale já jsem to chtěl vyzkoušen nejdřív pouze u vlastního nasazení pro site decidim a voda navzájem,

Poskytování na straně decidimu je v té admin sekci. Už jsem tam službu zkušebně založil.

Sci-fi scénář je, že bychom pro deployment ve VM vymazlili custom config a jiné setupy a jiná metadata tak, že by nastavující admin už nemusel moc špekulovat (jako špekuluji já několik měsíců) a prostě tyto featury využil.

Pak si představuji use-case, že v kdejakém městysu nebo jiné vesnici se rozhodnou o použití místního referenda a místo aby si lámali hlavu jak založit facebookovou anketu, tak použijí nasetupovaný Decidim. Místo aby si další půlrok lámali hlavu co to je Decidim, protože prázdné decidim je strašidelně nesrozumitelné, tak tam bude nějakké užitečné přednastavení.

V případě využití OAuth si to představte tak, že může vzniknout spontánní decentralizovaná síť více nasazení Decidim, v kterých se může uživatel přihlašovat na více místech (tam kde to admini povolí že to tak je možné) A uživatel tak bude moct vstupovat na tyto různé Decidimy.

Představte si to právě u situací, kdy Decidim není použit na komunální politiku, ale na sprostý aktivismus typu "Decidim Voda", "Decidim udržitelná doprava kterou provozuje neziskovka auto*mat", "decidim Paralelní Polis, který jede legislativu o implementaci cojnů do živé jogurtové kultury)

(ano... neměl bych brát drogy... jsem snílek a fantasta, zvlášť v dnešní době, která spěchá úplně opačným směrem.)

to je zajímavá otázka... takle to vypadá, že to je možné nastavit pouze vůči cizími nasazení Decidimu (napříklav v Barceloně) Ale já jsem to chtěl vyzkoušen nejdřív pouze u vlastního nasazení pro site **decidim** a **voda** navzájem, Poskytování na straně decidimu je v té admin sekci. Už jsem tam službu zkušebně založil. Sci-fi scénář je, že bychom pro deployment ve VM vymazlili custom config a jiné setupy a jiná metadata tak, že by nastavující admin už nemusel moc špekulovat (jako špekuluji já několik měsíců) a prostě tyto featury využil. Pak si představuji use-case, že v kdejakém městysu nebo jiné vesnici se rozhodnou o použití místního referenda a místo aby si lámali hlavu jak založit facebookovou anketu, tak použijí nasetupovaný Decidim. Místo aby si další půlrok lámali hlavu co to je Decidim, protože prázdné decidim je strašidelně nesrozumitelné, tak tam bude nějakké užitečné přednastavení. V případě využití OAuth si to představte tak, že může vzniknout spontánní decentralizovaná síť více nasazení Decidim, v kterých se může uživatel přihlašovat na více místech (tam kde to admini povolí že to tak je možné) A uživatel tak bude moct vstupovat na tyto různé Decidimy. Představte si to právě u situací, kdy Decidim není použit na komunální politiku, ale na sprostý aktivismus typu "Decidim Voda", "Decidim udržitelná doprava kterou provozuje neziskovka auto*mat", "decidim Paralelní Polis, který jede legislativu o implementaci cojnů do živé jogurtové kultury) (ano... neměl bych brát drogy... jsem snílek a fantasta, zvlášť v dnešní době, která spěchá úplně opačným směrem.)
Disassembler commented 2021-04-03 12:04:34 +02:00 (Migrated from git.spotter.cz)

Ale já jsem to chtěl vyzkoušen nejdřív pouze u vlastního nasazení pro site decidim a voda navzájem

Navzájem? Jakože uživatelé zaregistrovaní ve vodě se budou moci přihlásit do krumlov-decidimu a vice versa? To by asi šlo, ale pokud se něco podobného budete chtít v budoucnu pokoušet dělat s více instancemi, začne se to komplikovat, protože

  • každá konzumentská instance bude potřebovat právě tolik konfiguračních direktiv vůči kolika decidimům se má jít autentizovat.
  • každá konzumentská instance bude potřebovat odpovídající záznam u providera, vůči kterému se má autentizovat (prakticky stejně jako necháváte genrovat nějaké klíče a tajemstí u faceboku a twitteru je musíte vygenerovat nebo zajistit, aby vám byly vygenerovány v těch Decidimech vůči kterým se instance autentizuje)
  • každý způsob přihlášení se zobrazí uživateli jako jednotlivé možnosti při přihlášení, např.

image

> Ale já jsem to chtěl vyzkoušen nejdřív pouze u vlastního nasazení pro site **decidim** a **voda** navzájem Navzájem? Jakože uživatelé zaregistrovaní ve vodě se budou moci přihlásit do krumlov-decidimu a vice versa? To by asi šlo, ale pokud se něco podobného budete chtít v budoucnu pokoušet dělat s více instancemi, začne se to komplikovat, protože - každá konzumentská instance bude potřebovat právě tolik konfiguračních direktiv vůči kolika decidimům se má jít autentizovat. - každá konzumentská instance bude potřebovat odpovídající záznam u providera, vůči kterému se má autentizovat (prakticky stejně jako necháváte genrovat nějaké klíče a tajemstí u faceboku a twitteru je musíte vygenerovat nebo zajistit, aby vám byly vygenerovány v těch Decidimech vůči kterým se instance autentizuje) - každý způsob přihlášení se zobrazí uživateli jako jednotlivé možnosti při přihlášení, např. ![image](/uploads/11ff7fd1536016366f34b4619df907d2/image.png)
Podhorecky commented 2021-04-03 12:19:52 +02:00 (Migrated from git.spotter.cz)

hm.... zajímavé.. asi by to tedy šlo za podmínek které musí být vědomé a chtěné. V praxi bych viděl nějaké "střídmější využití" jakože ne každý Vocáskov by se stal poskytovatelem identity, ale pravděpodobně nějaký "potenciálně silný uzel" by jím spontánně být mohl. Takže těch chlívků by tam bylo cca jednotky, ne více. To je stále v mezích "decentralizované topologie" takového řešení.

To samé platí, že si tam zkušenější implementátor může dolepit další OAuth, ke kterému má možnost. Třeba https://auth0.com/ Teď jen jak takové scifi odkomunikovat.

ještě poznámka k mému fantazírování: Snahy vývojářů Decidimu vnímám jako cílevědomé kroky k implementací elektronického volebního systému, (což jim bude trvat ještě několik let, než se to stane kvalitním) postupem "zdola" tedy od komunálu. ... navíc jako open-source. To na sebe proflákli právě tím Bulletin Board, jak řikáte že se tam vyšívají s blockchainem (?)

Celá společnost se chtě-nechtě i v ČR dobabrá po X letech do fáze elektronických voleb na nejvyšší úrovni, o tom nemám pochyby. Je ale otázkou, jak bude elektronizace této společenské domény postupovat na nižších stupních. V

Softwary jako Decidim a Consul (což jsou prakticky rivalové na hřišti "Barcelona x Madrid) vnímám jako FOSS světlonoše v této věci. Pochopil jsem, že ostatní komerční pokusy Janečků a jiných "Mobilních rozhlasů" jsou proti tomu přízemní. Nebo se o takovém úsilí veřejně nechlubí.

Úspěch Decidim-like softwarů bohužel závisí na "selfpromo" nebo vydatné finanční injekci která by jej zviditelnila v cílovém nasazení. Bez odpovědných uživatelů je Decidim jen prázdná hračka. Podle mne je sféra mediálního aktivismu mrtvá, zavinili si to media sami a fenomén fake-news a jiných deep-fake to dorazilo. Proto jsem na media zanevřel.... Východisko ze sraček je nějaký budoucí model přímé demokracie pro společnost, jinak už nepomůže nic.

Ale neberte mne moc vážně, já fantazíruju o průserech roky dopředu a když se tak nakonec stane, už je pozdě.

hm.... zajímavé.. asi by to tedy šlo za podmínek které musí být vědomé a chtěné. V praxi bych viděl nějaké "střídmější využití" jakože ne každý Vocáskov by se stal poskytovatelem identity, ale pravděpodobně nějaký "potenciálně silný uzel" by jím spontánně být mohl. Takže těch chlívků by tam bylo cca jednotky, ne více. To je stále v mezích "decentralizované topologie" takového řešení. To samé platí, že si tam zkušenější implementátor může dolepit další OAuth, ke kterému má možnost. Třeba https://auth0.com/ Teď jen jak takové scifi odkomunikovat. ještě poznámka k mému fantazírování: Snahy vývojářů Decidimu vnímám jako cílevědomé kroky k implementací elektronického volebního systému, (což jim bude trvat ještě několik let, než se to stane kvalitním) postupem "zdola" tedy od komunálu. ... navíc jako open-source. To na sebe proflákli právě tím Bulletin Board, jak řikáte že se tam vyšívají s blockchainem (?) Celá společnost se chtě-nechtě i v ČR dobabrá po X letech do fáze elektronických voleb na nejvyšší úrovni, o tom nemám pochyby. Je ale otázkou, jak bude elektronizace této společenské domény postupovat na nižších stupních. V Softwary jako Decidim a Consul (což jsou prakticky rivalové na hřišti "Barcelona x Madrid) vnímám jako FOSS světlonoše v této věci. Pochopil jsem, že ostatní komerční pokusy Janečků a jiných "Mobilních rozhlasů" jsou proti tomu přízemní. Nebo se o takovém úsilí veřejně nechlubí. Úspěch Decidim-like softwarů bohužel závisí na "selfpromo" nebo vydatné finanční injekci která by jej zviditelnila v cílovém nasazení. Bez odpovědných uživatelů je Decidim jen prázdná hračka. Podle mne je sféra mediálního aktivismu mrtvá, zavinili si to media sami a fenomén fake-news a jiných deep-fake to dorazilo. Proto jsem na media zanevřel.... Východisko ze sraček je nějaký budoucí model přímé demokracie pro společnost, jinak už nepomůže nic. Ale neberte mne moc vážně, já fantazíruju o průserech roky dopředu a když se tak nakonec stane, už je pozdě.
Podhorecky commented 2021-04-03 13:56:38 +02:00 (Migrated from git.spotter.cz)

perlička... naprostá většina lidí už je tak zblblá z registrací do kamkoliv, že jim to dělá potíže. Automaticky tak volí metody, kde ty potíže s přihlašováním neočekávají (například přihlašování přes účet facebooku) ... pak mi sdělují, že se přihlásit nejde, nebo že jsou na IT slabí... Achjo. Tohle bude ještě sysifovská práce, facebook totiž geniálním způsobem přispěl ke zpohodlnění. Já s tím pak bojuju z druhé strany, protože ideálně bych tam přihlašování přes tyhle sociální sítě nechtěl, ale bez nich by tam prakticky nikdo nevlezl. Slepice, nebo vejce.

perlička... naprostá většina lidí už je tak zblblá z registrací do kamkoliv, že jim to dělá potíže. Automaticky tak volí metody, kde ty potíže s přihlašováním neočekávají (například přihlašování přes účet facebooku) ... pak mi sdělují, že se přihlásit nejde, nebo že jsou na IT slabí... Achjo. Tohle bude ještě sysifovská práce, facebook totiž geniálním způsobem přispěl ke zpohodlnění. Já s tím pak bojuju z druhé strany, protože ideálně bych tam přihlašování přes tyhle sociální sítě nechtěl, ale bez nich by tam prakticky nikdo nevlezl. Slepice, nebo vejce.
Podhorecky commented 2021-04-04 22:11:40 +02:00 (Migrated from git.spotter.cz)

můžete mi prosím prozradit, jestli rozšíření o další OAuth způsoby tak, jak je na screenshotu, vyrobí v prostředí /system/organizations/3/edit nové chlívky pro vkládání API keys, nebo zda to je pouze v settigovém souboru a jiné admin nastavení už neposkytuje?

můžete mi prosím prozradit, jestli rozšíření o další OAuth způsoby tak, jak je na screenshotu, vyrobí v prostředí `/system/organizations/3/edit` nové chlívky pro vkládání API keys, nebo zda to je pouze v settigovém souboru a jiné admin nastavení už neposkytuje?
Disassembler commented 2021-04-08 20:11:10 +02:00 (Migrated from git.spotter.cz)

Je to pouze v souboru s nastavením, kde to jako bonus navíc není možno nastavit pro každou organizaci zvlášť, ale platí to pro celou instalaci, nehledě na to, kolik instancí má. Pravděpodobně by to ale šlo doprogramovat, resp. zesložitit tu konfiguraci natolik, aby Decidim pochopil, že má k různým organizacím různé direktivy. Případně by to možná šlo upravit i zásahem do databáze, protože tam se ke každé organizaci drží nějaký JSON, jehož součástí je právě ta individuální konfigurace sociálních OAuth konektorů, kterou vidíte v konfiguraci organizace, ale to už je jen spekulace, netestoval jsem to. Každopádně chlívky neuvidíte u žádného z těchto způsobů.

Je to pouze v souboru s nastavením, kde to jako bonus navíc není možno nastavit pro každou organizaci zvlášť, ale platí to pro celou instalaci, nehledě na to, kolik instancí má. Pravděpodobně by to ale šlo doprogramovat, resp. zesložitit tu konfiguraci natolik, aby Decidim pochopil, že má k různým organizacím různé direktivy. Případně by to možná šlo upravit i zásahem do databáze, protože tam se ke každé organizaci drží nějaký JSON, jehož součástí je právě ta individuální konfigurace sociálních OAuth konektorů, kterou vidíte v konfiguraci organizace, ale to už je jen spekulace, netestoval jsem to. Každopádně chlívky neuvidíte u žádného z těchto způsobů.
Podhorecky commented 2021-04-11 12:26:53 +02:00 (Migrated from git.spotter.cz)
moved from Podhorecky/Hosting#54
Podhorecky commented 2021-04-20 15:59:43 +02:00 (Migrated from git.spotter.cz)

mentioned in issue #18

mentioned in issue #18
Sign in to join this conversation.
No description provided.