How can I find who has allocated a user lock via dbms_lock?
The type of locks you are referring to are stored in table (not view) SYS.DBMS_LOCK_ALLOCATED.  I believe they only have a "handle", but not a specific owner, i.e.: they all belong to SYS.  That said, if you have active blocking situation going on (someone is waiting for the lock and it's not getting released by the session who allocated the lock) then this query might show what's going on:

SELECT blocker.username blocker, blocker.sid blocker_session
     , blocked.username blocked, blocked.sid blocked_session
  FROM v$session blocked
  JOIN v$session blocker
  ON (blocked.blocking_session = blocker.sid)
 WHERE blocked.wait_class = 'Application'
   AND blocked.event='enq: UL - contention';