Как настроить конечные точки веб-API для использования разных типов грантов, исходящих от IdentityServer?Различные потоки для разных конечных точек web-api
Прямо сейчас у меня есть для запуска является:
app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions()
{
Authority = "http://localhost:5000",
RequiredScopes = new[] { "public", "read", "write" }
});
Контроллер:
// Assuming to access this endpoint you need to have client id/secret (client credential flow)
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// Assuming to access this endpoint you need to have username/password (password flow)
[ResourceAuthorization("read")]
public string Get(int id)
{
return "value";
}
Конечно одна точка может иметь только один тип гранта, так как это не имеет смысла, если поток клиента конечной точки также позволит поток паролей.
Это плохая структура?
Должен ли я просто отделить общедоступный apis (учетный поток), конечные точки потока паролей и внутренние конечные точки (не подвергаться внешней инфраструктуре компании) другим проектам?
Как указать область действия для разных конечных точек? (например, одна конечная точка нуждается в публичной информации, и необходимо прочитать ее)
Но что, если клиент аутентифицирован с использованием потока клиентов? Будет ли ресурсная поддержка еще работать? – gnaungayan
Как я понял, ResourceAuthorization следует использовать, если у вас есть Пользователь, означающий логин входа в систему с использованием потока паролей и использование ScopeAuthorization, если ни один пользователь не участвует. Глядя на ScopeAuthorization, он говорит, что он устарел, поэтому я должен использовать первое? – gnaungayan
^https://speakerdeck.com/leastprivilege/web-api-authorization-and-access-control-done-right-ndc-oslo-2014?slide=43 – gnaungayan