Problem/Motivation

DRD supports a server-side authentication of the remote sites. This is a very powerful feature when you maintain a lot of sites on a platform like Acquia or Platform.sh. Adding additional platforms is well supported by the DRD module.

But currently on the other side in drd_agent those services have been hard-coded at https://git.drupalcode.org/project/drd_agent/-/blob/4.0.x/src/Agent/Acti... . Those lines are supposed to compare information the Remote Site has, with Information the DRD host provided in the request.

I'm working on integrating another DRD PI service now and being able to provide a plugin for the drd_agent part would make the authentication work quite seamless.

Steps to reproduce

Proposed resolution

  • Create a Plugin annotation/Plugin manager for DRD PI Authentications
  • Make the base action invoke the plugin manager to load the corresponding plugin
  • Convert the existing platforms (Acquia, Platform.sh, Pantheon) into Plugins

Remaining tasks

User interface changes

API changes

Data model changes

Issue fork drd_agent-3357098

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

szeidler created an issue. See original summary.

szeidler’s picture

Assigned: Unassigned » szeidler

szeidler’s picture

Status: Active » Needs review

Here's a proof of concept for the plugin based authentication. I couldn't test the services, since I don't have accounts with them, but I just converted them straight forward into the plugin architecture.

I tested the functionality with my own service plugin.

jurgenhaas’s picture

Status: Needs review » Reviewed & tested by the community

Very nice implementation! Thank you so much @szeidler

jurgenhaas’s picture

Status: Reviewed & tested by the community » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.