Ваше приложение-демон должно будет использовать разрешения приложения (роли приложения с типом члена = Приложение) для вызова API.
Вы можете увидеть, как определить их здесь: https://joonasw.net/view/defining-permissions-and-roles-in-aad.
Например, вот так выглядит манифест:
{
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"displayName": "Read all todo items",
"id": "f8d39977-e31e-460b-b92c-9bef51d14f98",
"isEnabled": true,
"description": "Allow the application to read all todo items as itself.",
"value": "Todo.Read.All"
}
]
}
Затем вы назначаете разрешение приложению вашему приложению-демону.
После этого достаточно просто выполнить аутентификацию с использованием учетных данных клиента из приложения-демона.
Например, в ADAL.NET вы получите токен с ClientCredential
+ URI ресурса API.
Вы можете найти URI из регистрации приложения вашего API (блейд свойств, URI идентификатора приложения).
Затем можно присоединить полученный токен доступа к HTTP-запросам, и API может найти из утверждения appid
, кто является вызывающим приложением, и из утверждения roles
, какие разрешения приложения они имеют.