User CAL is only cheap if you only deal with small amount of users (internal app). Please note a user is not SQL User account, but represents actual individual person. If you have a webserver (with one db user) but a thousand of visitors, then Microsoft treats it as thousand user CALs . Following MS doc explains this in detail
http://download.microsoft.com/download/6/F/8/6F84A9FE-1E5C-4... , look for keyword 'multiplexing'