# Overview * Authentication to Wordpress is only possible with an account in uffd, regular authentication is disabled * All users with group 'wordpress_access' can access Wordpress with 'Editor' privileges, the user in Wordpress is created on first login * Users with group 'wordpress_admin' get 'Administrator' privigeges. # Setup OIDC Authentication via uffd Uffd Reference: https://git.cccv.de/uffd ## Setup in Wordpress Wordpress Plugin: OpenID Connect Generic Client https://de.wordpress.org/plugins/daggerhart-openid-connect-generic Pluin settings: * Anmeldetyp: * Client-ID: wordpress * Client Secret Key: <secret key> * OpenID Scope: openid profile email groups * Endpunkt-URL zur Anmeldung: https://uffd.test-warpzone.de/oauth2/authorize * Endpunkt-URL zur Benutzerinfo: https://uffd.test-warpzone.de/oauth2/userinfo * Endpunkt-URL zur Token-Verifizierung: https://uffd.test-warpzone.de/oauth2/token * Endpunkt-URL zum Sitzungsende: https://uffd.test-warpzone.de/oauth2/logout * Identitäts-Schlüssel: preferred_username * Spitznamen-Schlüssel: preferred_username * Email-Format: {email} * Anzeigename-Formatierung: {preferred_username} * Mit Benutzername identifizieren: Ja * State-Zeitbeschränkung: 180 * Aktualisierungstoken aktivieren: Ja * Existierende Benutzer verknüpfen: Ja * Benutzer erstellen, wenn er nicht existiert: Ja * Zur ursprünglichen Seite zurückleiten: Nein * Zur Anmeldeansicht weiterleiten, wenn die Sitzung abgelaufen ist: Ja ## Setup in uffd Create Groups: - wordpress_access: General Access to Wordpress - wordpress_admin: This Group will be Mapped to the Group admin in Wordpress Create a Service / OAuth Client: Only Users with goup wordpress_access can access Wordpress Client-ID: wordpress Client-Secret: from file wordpress_client_secret on the server Redirect-URIs: * https://www.test-warpzone.de/wp-admin/admin-ajax.php?action=openid-connect-authorize ## Mapping von Rollen in Wordpress Wordpress Plugin: WPCode https://de.wordpress.org/plugins/insert-headers-and-footers/ Additional references: https://github.com/oidc-wp/openid-connect-generic/issues/164 Um die Wordpress Berechtigungen auf Basis der Gruppen in uffd zu steuern ist ein zusätzliches Code-Snippet erforderlich. Dieses Code-Snippet kann am besten mit dem addon 'WPCode' verwaltet werden. In dem Plugin muss das folgenden neues PHP-Snippet erstellt und aktiviert werden. Benutzer, mit der Gruppe 'wordpress_admin' in uddf erhalten Administrator-Berechtigungen. Alle anderen Benutzer erhalten Editor-Berechtigungen. ``` add_action('openid-connect-generic-update-user-using-current-claim', function( $user, $user_claim) { // Based on some data in the user_claim, modify the user. foreach($user_claim as $key => $value) { error_log('Openid Role mapping: User claim: ' . $key . ', Value: ' . $value); } if ( array_key_exists( 'groups', $user_claim ) ) { error_log('Openid Role mapping: Groups: ' . implode(',',$user_claim['groups'])); if ( in_array('wordpress_admin', $user_claim['groups'] )) { error_log('Openid Role mapping: Set role: Administrator'); $user->set_role( 'administrator' ); } else { error_log('Openid Role mapping: Set role: Editor'); $user->set_role( 'editor' ); } } }, 10, 2); ```