Skoči na glavni sadržaj

Prijava putem društvenih mreža

Komga podržava prijavu putem društvenih mreža pomoću OAuth2 i OpenID Connect. Da bi ovo funkcioniralo, Komga treba preuzeti korisničku e-mail adresu putem tvog pružatelja usluge i usporedit će je s e-mail adresom Komga korisnika.

Za postavljanje prijave putem društvenih mreža, morat ćeš stvoriti aplikaciju na portalu za programere odabranog pružatelja usluge prijave putem društvenih mreža (Google, Facebook, Github …) te preuzeti ID klijenta i tajni kod klijenta. Također ćeš morati konfigurirati Preusmjeri URI u aplikaciji koju si stvorio/la.

Možeš aktivirati automatsko stvaranje računa nakon uspješne prijave putem društvenih mreža.

Vodič za uobičajene pružatelje usluge​

Google, Github i Facebook možeš jednostavno konfigurirati bez kompleksne konfiguracije.

Google​

Slijedi upute na stranici OpenID Connect, počevši od odjeljka „Postavljanje OAuth 2.0”.

Kada se od tebe zatraži „URI za preusmjeravanje”, koristi {baseUrl}/login/oauth2/code/google, gdje je baseUrl adresa tvog servera.

Nakon što završiš upute "Dobij OAuth 2.0 podatke za prijavu", trebao/la bi imati novog OAuth klijenta s podacima za prijavu koji se sastoje od ID-a klijenta i tajne klijenta.

Pomijeni svoju application.yml datoteku kao što je prikazano u nastavku i zamijeni vrijednosti u svojstvima client-id i client-secret s OAuth 2.0 podacima za prijavu koje si ranije stvorio/la.

Primjer konfiguracije:

spring:
security:
oauth2:
client:
registration:
google:
client-id: 1044613984fsf335-mnsdvkjy3yf98294unfmnvd8.apps.googleusercontent.com
client-secret: jwhfkjhwefkn44t8vcxml3m

Facebook​

Slijedi upute za izradu aplikacije i dodaj proizvod za prijavu na Facebook.

U polju Valjan OAuth URI-ji za preusmjeravanje koristi {baseUrl}/login/oauth2/code/facebook, gdje je baseUrl adresa tvog servera.

Promijeni datoteku application.yml kao što je prikazano u nastavku i zamijeni vrijednosti u svojstvima client-id i client-secret s ID-om aplikacije i tajnom aplikacije.

Primjer konfiguracije:

spring:
security:
oauth2:
client:
registration:
facebook:
client-id: 227581266063919
client-secret: 47f03915334f49cdueru810069321964929

Github​

Registriraj novu aplikaciju.

Za „URL za povratni poziv autorizacije” koristi {baseUrl}/login/oauth2/code/github, gdje je baseUrl adresa tvog servera.

Generiraj novu tajnu klijenta, sada bi trebao/la imati ID klijenta i tajnu klijenta.

Pomijeni svoju application.yml datoteku kao što je prikazano u nastavku i zamijeni vrijednosti u svojstvima client-id i client-secret s OAuth 2.0 podacima za prijavu koje si ranije stvorio/la.

Primjer konfiguracije:

spring:
security:
oauth2:
client:
registration:
github:
client-id: 62736jnfksui37384hnmsdnf
client-secret: jhjgfy67363uhif762328938844940e3e8c8629c18f9
scope: user:email

Napredna konfiguracija​

You can configure any OAuth2 provider, but you will need to provide a more extensive configuration. The below example shows how to configure a Keycloak instance, but any provider could be configured in a similar fashion.

Modify your application.yml as below and replace the values in the client-id and client-secret property with your credentials You will also need to update the various URIs in the provider section.

You need to make sure that the users have an email setup, and that it has been marked as verified.

When configuring the client in your provider, you may need to input a redirect URI. Use the following: {baseUrl}/login/oauth2/code/{registrationId}, where baseUrl is your server's address, and registrationId is the name of the configuration key (keycloak in the below example).

There are 2 options to configure a provider, either set issuer-uri or all of the following: authorization-uri, token-uri, jwk-set-uri, user-info-uri. If your authentication server provides issuer-uri, this option is preferred.

The registration section contains a provider option, this must be the same name as specified in the provider configuration. (In the example below, we've configured provider with name keycloak, so in the registration section we set provider: keycloak). The name of the provider can be whatever you want, no need to use the service's name if you don't want to.

Primjer konfiguracije:

spring:
security:
oauth2:
client:
registration:
keycloak:
provider: keycloak # this must match the provider below
client-id: your-client-id
client-secret: c830e452-a2a9-40a0-93c1-eb84ea688245
client-name: Keycloak
scope: openid,email
authorization-grant-type: authorization_code
# rezervirana mjesta u {} će se automatski zamijeniti, ne moraš mijenjati ovaj redak
redirect-uri: "{baseUrl}/{action}/oauth2/code/{registrationId}"
# dodaj sljedeće ako trebaš omogućiti PKCE (Proof Key for Code Exchange)
client-authentication-method: none
provider:
keycloak: # ovo mora odgovarati gore navedenom pružatelju usluge
user-name-attribute: sub
# ili postavi issuer-uri, u kojem slučaju će aplikacija automatski pretražiti konfiguraciju za tebe
issuer-uri: http://localhost:8085/auth/realms/komgatest
# ili postavi sve sljedeće
authorization-uri: http://localhost:8085/auth/realms/komgatest/protocol/openid-connect/auth
token-uri: http://localhost:8085/auth/realms/komgatest/protocol/openid-connect/token
jwk-set-uri: http://localhost:8085/auth/realms/komgatest/protocol/openid-connect/certs
user-info-uri: http://localhost:8085/auth/realms/komgatest/protocol/openid-connect/userinfo

Rješavanje problema​

Komga dnevnici​

Ako naiđeš na probleme, možda ćeš morati aktivirati DEBUG dnevnike.

Dodaj sljedeći ključ u tvoju datoteku application.yml:

logging.level.org.springframework.security: DEBUG

Česti problemi​

Nekompatibilan JWT algoritam potpisivanja​

komga.log
Autentifikacija nije uspjela s pružateljem usluge OidcAuthorizationCodeAuthenticationProvider od [invalid_id_token] Dogodila se greška prilikom pokušaja dekodiranja JWT-a: Potpisani JWT je odbijen: Očekuje se jedan drugi algoritam ili nisu pronađeni odgovarajući ključevi

Komga očekuje algoritam RS256 za provjeru potpisa JWT-a.

Konfigurirani algoritam možeš provjeriti u .well-known krajnjoj točki tvog pružatelja usluge, u odjeljku id_token_signing_alg_values_supported i osiguraj da je postavljen na RS256.