После долгих раздумий я хочу поделиться тем, что я узнал, и ответить на этот вопрос, а также на более широкий вопрос о том, как работает реализация настраиваемого поставщика политик. При использовании AddAuthentication и AddAuthorization в Startup.cs это служит настройкой политики, которая будет использоваться при настройке поставщика политики авторизации по умолчанию, например, так:
public YourAuthorizationPolicyProvider(IOptions<AuthorizationOptions> options)
{
this.BackupPolicyProvider = new DefaultAuthorizationPolicyProvider(options);
}
Для меня я использую этот резервный провайдер политики по умолчанию:
public Task<AuthorizationPolicy> GetDefaultPolicyAsync()
{
return this.BackupPolicyProvider.GetDefaultPolicyAsync(); //this is the default policy established in Startup.cs
}
(Примечание: что-то, что я нашел сбивающим с толку и не очень много ясной документации по: DefaultPolicy против FallbackPolicy, особенно потому, что кажется, что на момент написания этого, GetFallbackPolicyAsyn c недавно стал методом, который требует реализации при реализации IAuthorizationPolicyProvider. DefaultPolicy: при применении атрибута [Authorize] используется эта политика. Когда предоставляется политика no , то GetFallbackPolicyAsyn c называется.)
Чего мне не хватало при создании пользовательских политик, указывало в AuthorizationPolicyBuilder, какую схему аутентификации я бы хотел использовать для этой политики. Теперь я понимаю, что это в документах, но это не вызвано специально, поэтому я пропустил это:
public Task<AuthorizationPolicy> GetPolicyAsync(string policyName)
{
if (//some check on your policy name)
{
var policy = new AuthorizationPolicyBuilder(//what scheme to use for authentication);
// your requirements
return Task.FromResult(policy.Build());
}
}