Uploaded image for project: 'Project Quay'
  1. Project Quay
  2. PROJQUAY-10510

Quay new UI Verify User can't sign in with OIDC provider

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • None
    • quay-v3.16.1
    • quay-ui
    • Quality / Stability / Reliability
    • False
    • Hide

      None

      Show
      None
    • False

      Description:

      This is an issue found in Quay 3.16.1, the authentication.confirm_existing_user is asking for a password even though the user has logged in with OIDC.

      @resource("/v1/signin/verify")
      @internal_only
      class VerifyUser(ApiResource):
          """
          Operations for verifying the existing user.
          """    schemas = {
              "VerifyUser": {
                  "id": "VerifyUser",
                  "type": "object",
                  "description": "Information required to verify the signed in user.",
                  "required": [
                      "password",
                  ],
                  "properties": {
                      "password": {
                          "type": "string",
                          "description": "The user's password",
                      },
                  },
              },
          }    @require_user_admin()
          @nickname("verifyUser")
          @validate_json_request("VerifyUser")
          @readonly_call_allowed
          @restricted_user_readonly_call_allowed
          def post(self):
              """
              Verifies the signed in the user with the specified credentials.
              """
              signin_data = request.get_json()
              password = signin_data["password"]        username = get_authenticated_user().username
              (result, error_message) = authentication.confirm_existing_user(username, password)
              if not result:
                  return {
                      "message": error_message,
                      "invalidCredentials": True,
                  }, 403        success, headers = common_login(result.uuid)
              if not success:
                  return {
                      "message": "Could not verify user.",
                  }, 403        return {"success": True}, 200, headers

      The UI prompting for a local password is consistent with the endpoint’s contract. Quay’s auth layer describes confirm_existing_user as verifying a password for an existing DB user (and it may translate the DB user via a federated login mapping first), which still results in a password verification call, not an IdP step-up or refresh.
      IdP user might not be in the userDB si prompting for local password is not working for them.

      Expected behavior:

      Quay UI verifies the token with IdP and step-up or refreshes it, no prompt for user

      Current behavior:

      Quay UI is prompting for a password which cannot be verified as the user does not have a password in user database.

              Unassigned Unassigned
              rhn-support-jortizpa Jose Ortiz Padilla
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: