Ive been fighting with a very similar problem in 4.4.1
And this is what I know so far from that perspective - maybe it is relevant to your issues.
And there are all sorts of wierd issues associated with how roles are currently handled.
Firstly - the user.roles() property is not hydrated by the userinfo class.
That is if you go:
dim myInfo as userinfo = usercontroller.getuser(portalid,myuserid)
the userinfo.roles() property will return an empty value - which really seams like a major oops - since
calls to code like userinfo.isinrole() all make use of the .roles propertly for their searches.
What dnn is assuming is that the only time you would want to use the roles property is for the active user - which does have its roles propertly hydrated - by the authentication callback - during each page request.
BUT - this is however also the cause of your problems
Since the only time than the roles property is hydrated is the FIRST time the onAuthentication callback is triggered.
once it is hydrated DNN caches the roles in a portalroles cookie - and from there is stays stuck.
This is where im up to - at the moment -
SO to get your new role to appear - just clearing the hostcache is not enough - the userinfo item in the current context also needs to be flushed or potentially reset to a new value -
Im still working thru this mess -
But frankly - It really should not be this hard - Im just hoping that someone from the core team may have an idea or two in this area.
Westa