WordPress oAuth 2.0 en IdentityServer4

Rollen

,

Programmeertalen

Project goal

IdentityServer4 is een gratis open-source authenticatieserver die OpenID Connect (OIDC) en OAuth 2.0-standaarden implementeert voor ASP.NET Core. Het is ontworpen om aanvragen voor alle toepassingen te verifiëren, of het nu gaat om web-, native, mobiele of API-endpoints. IdentityServer4 kan worden gebruikt om Single Sign-On (SSO) voor meerdere applicaties en applicatietypen te implementeren.

Vanaf 1 oktober 2020 is IdentityServer4 onderdeel van Duende Software. IdentityServer4 wordt tot november 2022 onderhouden met beveiligingsupdates. Duende Software ontwikkelt IdentityServer verder. Ze hebben een betaalde commerciële versie en een gratis Community Edition.

Binnen de organisatie wordt IdentityServer4 gebruikt voor authenticatie en autorisatie van alle applicaties. Doel is om de nieuwe WordPress Klantenportaal en Academy te koppelen aan Identityserver4. De koppeling gaat via oAuth 2.0 en SSO moet mogelijk zijn binnen alle bestaande en nieuwe applicaties.

Identityserver4 met WordPress integratie

Oplossing

De huidige implementatie van IdentityServer4 bevatte geen rollen binnen applicaties. Alleen de applicatie ID’s waar een klant toegang toe heeft. Met een zelf gemaakte Custom Post Type is het mogelijk om applicatie ID’s te koppelen aan pagina’s, templates en Custom Post Types. Dit maakt het mogelijk om per pagina, of groep van pagina’s aan te geven welke applicatie ID een klant moet hebben om toegang tot de pagina te hebben.

Omdat geen applicatierollen in IdentityServer4 geïmplementeerd zijn, is gekozen om de admin pagina’s zonder 0Auh 2.0 te laten werken. Alleen de front-end pagina’s zijn van oAuth 2.0 en SSO voorzien.

Ontwikkelde en gebruikte plugins

  • OpenID Connect Generic Client
  • Authentication plugin
    Deze zelfgemaakte plugin override de nodige functies van de OpenID Connect Generic Client zodat de authenticatie flow werkt zoals deze door de klant is geïmplementeerd in IdentityServer4.
  • Autorisatie plugin
    Deze zelfgemaakte plugin geeft de mogelijkheid om per pagina, template en custom post type aan te geven welke rol nodig is om toegang te hebben tot de content.
WordPress en Identity4 autorisatie