I figured it out. It seems the DI container just create "EntityUserProvider" when specified "entity" in provider in security.xml. Then the AuthenticationProvider just call the methods in user provider. So I have to create a service for the user provider and specify ID in providers section in security.xml.
src/Meot/FormBundle/Resources/config/services.xml
<parameters>
<parameter key="custom_user_provider.class">Meot\FormBundle\Entity\UserRepository</parameter>
<parameter key="custom_user_entity">Meot\FormBundle\Entity\User</parameter>
</parameters>
<services>
<service id="custom_user_provider" class="%custom_user_provider.class%"
factory-service="doctrine" factory-method="getRepository">
<argument>%custom_user_entity%</argument>
</service>
</services>