2017-01-25 11 views
0

Как настроить конечные точки веб-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 (учетный поток), конечные точки потока паролей и внутренние конечные точки (не подвергаться внешней инфраструктуре компании) другим проектам?

Как указать область действия для разных конечных точек? (например, одна конечная точка нуждается в публичной информации, и необходимо прочитать ее)

ответ

0

Это очень плохо. Вы связываете проблемы потока аутентификации с вашим API. Скорее определите разные области действия для каждого клиента и используйте эти области, чтобы ограничить, какие клиенты могут использовать какие ресурсы. Вы можете использовать авторизацию, основанную на разрешении. Проверьте this вне.

+0

Но что, если клиент аутентифицирован с использованием потока клиентов? Будет ли ресурсная поддержка еще работать? – gnaungayan

+0

Как я понял, ResourceAuthorization следует использовать, если у вас есть Пользователь, означающий логин входа в систему с использованием потока паролей и использование ScopeAuthorization, если ни один пользователь не участвует. Глядя на ScopeAuthorization, он говорит, что он устарел, поэтому я должен использовать первое? – gnaungayan

+0

^https://speakerdeck.com/leastprivilege/web-api-authorization-and-access-control-done-right-ndc-oslo-2014?slide=43 – gnaungayan