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