Transfer a call between 2 asterisks fails

I have 2 asterisk servers (1.4.17) connected via SIP trunks. I can call users connected to remote asterisk, but when I try to transfer a call user1 (210)->asterisk1 <–> asterisk2->user2 (220) <–transfer to user3 (211)(registered at asterisk1) --> I get:

asterisk1:
WARNING[3448]: chan_sip.c:8363 check_auth: username mismatch, have <210>, digest has
NOTICE[3448]: chan_sip.c:13785 handle_request_invite: Failed to authenticate user “210” sip:210@xx.xx.xx.xx;tag=as71f12334

asterisk2:
WARNING[3264]: chan_sip.c:12167 handle_response_invite: Received response: “Forbidden” from ‘“210” sip:210@xx.xx.xx.xx;tag=as71f12334’

asterisk1 sip.conf (a part)
[general]
context=incoming_call
allowguest=no
realm=asterisk1.local

register => ast2:secret@xx.xx.xx.xx/ast1

[ast1]
type=friend
canreinvite=no
secret=secret
qualify=yes
context=incoming_call
host=dynamic
disallow=all
allow=speex

asterisk2 sip.conf (a part)
[general]
context=incoming_call
allowguest=no
realm=asterisk2.local

register => ast1:secret@xx.xx.xx.xx/ast2

[ast2]
type=friend
canreinvite=no
secret=secret
qualify=yes
context=incoming_call
host=dynamic
disallow=all
allow=speex

Any ideas? Thanks

UPDATE: when I use IAX2 trunks instead of SIP trunks all transfers work OK.