Please find my inline answers. Hope this helps.
1) I go to portal.azure.com, switch to my tenant directory and this time I click on the "Azure Active Directory" icon instead of the "Azure AD B2C" and click on App Registrations. I see all my applications are there that I created in AADB2C. OK. I click on the TodoListAPI registration I created for this sample.
2) I remove my old scope and try to add a scope according to the instructions and I have the exact same problem: there is no opportunity to select a different value for "Who can consent". After adding, I see the same: "Admin only" for the "Who can consent" column.
Answer:
This seems to be you are still with AAD B2C directory, reason because when you go AAD blade you should not see Apps that were created from B2C blade . The easier way to verify this one is to, Go to Apps registrations -> click on Endpoint , If you see page similar to below whereas endpoint name start with "Azure AD B2C" which indicate you are on Azure AD B2C directory not on regular AAD tenant.
If you have access to more than one AAD tenant then try using "Switch Directory" option and switch to AAD tenant which doesn't have B2C association. In case If you don't already have an Azure AD tenant or if you want to create a new one, see Create a new tenant in Azure AD. Or use the directory creation experience in the Azure portal.
3) Please explain what this "Who can consent" value means... I suspect it means external (github, facebook or google self serve signup) users won't be able to call the the function with that scope...
Answer:
"Who can consent" field used to select whether given scope can be consented by users or if admin consent is required. You only get to select "Who can consent" as either "Admins and users" or "Admins only" for applications those are registered in regular AAD directory not B2C Directory as shown below.
with B2C tenant, you can only use "Admin consent" not "user consent" because its not supported. That's the reason you see the "Admin only" for the "Who can consent" column by default.
To learn more, read "Azure Active Directory consent framework"
Regular AAD:
AADB2C Directory:
4) Also, consider my existing working sample: active-directory-aspnetcore-webapp-openidconnect-v2. The instructions say to use an Azure AD B2C tenant and I previously (last summer) added the demo.read and demo.write scopes (tutorial-web-api-dotnet and these show up with the "user consent" as "admin and users". As an experiment yesterday, I tried to add demo.delete and it too shows up as "Admins only" what does this mean? Today I try again with AAD instead of AADB2C and I get the exact same behavior: "Admins only" and no opportunity to to edit the field.
Answer:
As mentioned above , if you try from regular AAD tenant then you would get option to select between admin and user consent.
Please "Accept the answer" if the information helped you. This will help us and others in the community as well.