Hello, user delegation SAS (UDSAS ) are a best practice due being powered/backed by Azure AD credentials, and also due imposing Azure Storage specific constraints, like which Azure Storage resources a client is allowed to access, what permissions they have on those resources, and how long the SAS is valid.
Regarding access for the API of Function developed to manage UDSAS issuance, the most straighforward and logic solution is for your vendor to have its own Azure AD tenant and users so they can get authenticated and UDSAS issued per signed-in user. If your vendor does not want to use Azure AD then you can can obtain tokens using the client credentials flow. Here you will have to provide them with a client secret or certificate (prefered).
For both scenarios is recommended to have 2 app registragions: one for the API or Function and the another one for the client.
For Azure AD AuthN and AuthZ code samples take a look at:
- Azure Functions as web APIs (Both user and client credentials)
- Configure your App Service or Azure Functions app to use Azure AD login (Both user and client credentials)
- Scenario: Daemon application that calls web APIs (Client credentials)
- Tutorial: Create a function app that connects to Azure services using identities instead of secrets (For authorizing your API or Function to Azure Blob Storage without storing credentials)
Let us know if you need additional assistance. If the answer was helpful, please accept it so that others can find a solution.