Skip to content
Snippets Groups Projects

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:

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:

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);