Yes, you are correct that the Callback URL must be accessible over the internet from Azure AD. In order to achieve this, you can create a public DNS entry that points to the private IP address of your Ansible Automation Platform host in the Azure V-Net. This can be done using Azure DNS, or any other DNS provider that you prefer.
As for integrating an application in a private Azure V-Net with Azure AD, it is still possible. You can use Azure AD Application Proxy to publish your application securely and make it accessible from the internet. This allows you to keep your application in your private V-Net and still have it integrated with Azure AD for authentication and authorization.
Alternatively, you can also use Azure Private Link to securely access your application within the V-Net. This allows you to expose your application privately to specific Azure V-Net resources, such as your Azure AD tenant, without exposing it to the public internet.
I hope this helps! Let me know if you have any further questions.