java.lang.Object
com.google.gerrit.server.account.externalids.ExternalId
All Implemented Interfaces:
Serializable

public abstract class ExternalId extends Object implements Serializable
See Also:
  • Field Details

    • EXTERNAL_ID_SECTION

      public static final String EXTERNAL_ID_SECTION
      See Also:
    • ACCOUNT_ID_KEY

      public static final String ACCOUNT_ID_KEY
      See Also:
    • EMAIL_KEY

      public static final String EMAIL_KEY
      See Also:
    • PASSWORD_KEY

      public static final String PASSWORD_KEY
      See Also:
    • SCHEME_GERRIT

      public static final String SCHEME_GERRIT
      Scheme used to label accounts created, when using the LDAP-based authentication types AuthType.LDAP, AuthType.CLIENT_SSL_CERT_LDAP, AuthType.HTTP_LDAP, and AuthType.LDAP_BIND. The external ID stores the username. Accounts with such an external ID will be authenticated against the configured LDAP identity provider.

      The name gerrit: was a very poor choice.

      Scheme names must not contain colons (':').

      Will be handled case insensitive, if auth.userNameCaseInsensitive = true.

      See Also:
    • SCHEME_UUID

      public static final String SCHEME_UUID
      Scheme used for randomly created identities constructed by a UUID.
      See Also:
    • SCHEME_MAILTO

      public static final String SCHEME_MAILTO
      Scheme used to represent only an email address.
      See Also:
    • SCHEME_USERNAME

      public static final String SCHEME_USERNAME
      Scheme for the username used to authenticate an account, e.g. over SSH.

      Will be handled case insensitive, if auth.userNameCaseInsensitive = true.

      See Also:
    • SCHEME_GPGKEY

      public static final String SCHEME_GPGKEY
      Scheme used for GPG public keys.
      See Also:
    • SCHEME_IMPORTED

      public static final String SCHEME_IMPORTED
      Scheme for imported accounts from other servers with different GerritServerId
      See Also:
    • SCHEME_EXTERNAL

      public static final String SCHEME_EXTERNAL
      Scheme for external auth used during authentication, e.g. OAuth Token
      See Also:
    • SCHEME_HTTP

      public static final String SCHEME_HTTP
      Scheme for http resources. OpenID in particular makes use of these external IDs.
      See Also:
    • SCHEME_HTTPS

      public static final String SCHEME_HTTPS
      Scheme for https resources. OpenID in particular makes use of these external IDs.
      See Also:
    • SCHEME_XRI

      public static final String SCHEME_XRI
      Scheme for xri resources. OpenID in particular makes use of these external IDs.
      See Also:
    • SCHEME_GOOGLE_OAUTH

      public static final String SCHEME_GOOGLE_OAUTH
      Scheme for Google OAuth external IDs.
      See Also:
  • Constructor Details

    • ExternalId

      public ExternalId()
  • Method Details

    • isValidUsername

      public static boolean isValidUsername(String username)
    • getUserName

      public static Optional<String> getUserName(Collection<ExternalId> extIds)
      Returns the ID of the first external ID from the provided external IDs that has the SCHEME_USERNAME scheme.
      Parameters:
      extIds - external IDs
      Returns:
      the ID of the first external ID from the provided external IDs that has the SCHEME_USERNAME scheme
    • getEmails

      public static Stream<String> getEmails(Collection<ExternalId> extIds)
      Returns all IDs of the provided external IDs that have the SCHEME_MAILTO scheme as a distinct stream.
      Parameters:
      extIds - external IDs
      Returns:
      distinct stream of all IDs of the provided external IDs that have the SCHEME_MAILTO scheme
    • create

      public static ExternalId create(ExternalId.Key key, Account.Id accountId, String email, String hashedPassword, org.eclipse.jgit.lib.ObjectId blobId)
    • key

      public abstract ExternalId.Key key()
    • accountId

      public abstract Account.Id accountId()
    • isCaseInsensitive

      public abstract boolean isCaseInsensitive()
    • email

      public abstract String email()
    • password

      public abstract String password()
    • blobId

      public abstract org.eclipse.jgit.lib.ObjectId blobId()
      ID of the note blob in the external IDs branch that stores this external ID. null if the external ID was created in code and is not yet stored in Git.
    • checkThatBlobIdIsSet

      public void checkThatBlobIdIsSet()
    • isScheme

      public boolean isScheme(String scheme)
    • equals

      public final boolean equals(Object obj)
      For checking if two external IDs are equals the blobId is excluded and external IDs that have different blob IDs but identical other fields are considered equal. This way an external ID that was loaded from Git can be equal with an external ID that was created from code.
      Overrides:
      equals in class Object
    • hashCode

      @Memoized public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      @Memoized public String toString()
      Exports this external ID as Git config file text.

      The Git config has exactly one externalId subsection with an accountId and optionally email and password:

       [externalId "username:jdoe"]
         accountId = 1003407
         email = [email protected]
         password = bcrypt:4:LCbmSBDivK/hhGVQMfkDpA==:XcWn0pKYSVU/UJgOvhidkEtmqCp6oKB7
       
      Overrides:
      toString in class Object
    • writeToConfig

      public void writeToConfig(org.eclipse.jgit.lib.Config c)