HomeDevCentral

[ User authentication by remote identity providers ]

Description

[ User authentication by remote identity providers ]

  • Adding an AuthenticationMethod class to offer custom methods of authentication from remote identity providers.

[ Database changes ]

  • Adding a new table users_auth. Schema is identical to the Zed implementation.

    +---------+-----------+---------------+-----------------+---------+ | auth_id | auth_type | auth_identity | auth_properties | user_id | +---------+-----------+---------------+-----------------+---------+

    auth_type matches the AuthenticationMethod::$id property, auth_id is the primary key.

    auth_identity matches the AuthenticationMethod::$remoteUserId property.

    auth_properties can receive extra authentication information. For example, if you implement a Yubikey authentication method, you can set as property the authentication server, and leave blank to use YubiCloud.

    An user is considerated authentified and matching a local user when the auth_type and auth_identity fields match the information received by the remote identity provider.

[ Core libraries changes ]

  • Adding a Permission class with getResourceTypeLetterFromCode and getResourceTypeCodeFromLetter methods to convert between W <--> workspace, the two resource types notations.
  • Adding an ObjectDeserializableWithContext interface. This interface is similar to ObjectDeserializable, but require a context to deserialize the object. This is implemented by WorkspaceConfiguration, which need to set the AuthenticationMethod classes' context property.
  • To optimize User load, stores instances in an hashtable, to be able to get it later on the execution. For example, if a remote identity provider authentication method is used by an user for the first time, we try to match remote and local e-mails to see if it already exists. Doing so, we query the users table, the hashtable allows not to query it again to fill the context.

[ User actions changes ]

  • Fixing typo in GivePermissionUserAction exceptions
  • Fixing bug in GivePermissionUserAction serialization code: the class uses the letter resource notation (e.g. 'W'), the JSON documents the full resource type in lowercase notation (e.g. 'workspace'. Cf. the new Permission class.

[ Workspace changes ]

  • WorkspaceConfiguration now implements ObjectDeserializableWithContext
  • Fixing bug: initialize WorkspaceConfiguration::$authenticationMethods array

[ Controllers change ]

  • The anonymous controller initializes authentication method related resources when the user has to login.
  • Resorting index.php entry point order of operations, to be sure each new components have access to the needed resources, like l10n and context.
  • The login/logout code checks the existence of a authenticationMethodId URL parameter. If found, the method handleRequest of the relevant AuthenticationMethod class is called. This allows remote identity providers helper classes to have a logic (like an OpenID check).
  • Fixing bug: loads the controller configuration after workspace autoselect.

[ Views ]

  • header.tpl includes the workspace name in logout code.
  • login.tpl includes the workspace name in the page title and use it as product name.
  • login.tpl doesn't print anymore internal login box when it's disabled by workspace configuration and prints links to available other ways to authenticate.

[ L10n ]

  • New entries: ExternalLogin, SignIn,ExternalLoginNotRemotelyLoggedIn, ExternalLoginNotLegitReply, ExternalLoginCantCreateAccount, ExternalLoginTechnicalDifficulty.
  • Removing from fr and en files Logout duplicate.

Details

Provenance
derecksonAuthored on Jan 28 2014, 03:42
derecksonPushed on Oct 17 2025, 19:49
Parents
rOBSIDIAN619197cbab9a: Nwe feature: user actions
Branches
Unknown
Tags
Unknown

Event Timeline