У меня есть функция Azure с включенной проверкой подлинности Azure Active Directory (включая действие, которое необходимо предпринять, если запрос не прошел проверку подлинности = войти в систему с помощью Azure Active Directory). Дополнительно требуется опция Назначение пользователя? субъекта-службы, связанного с функцией Azure (sp_func), имеет значение Да, чтобы все в клиенте не могли в конечном итоге запустить функцию.
Цель состоит в том, чтобы иметь единую группу безопасности (которая может включать пользователей, а также участников служб), которая добавляется к пользователям и группам sp_func, чтобы назначение группе решало, можно ли получить доступ к функции или нет. С пользователями это работает нормально, но не с субъектами служб (sp_nonfunc). Чтобы они (sp_nonfunc) работали, я должен установить для них разрешения (sp_nonfunc), что в конечном итоге позволяет им взаимодействовать с функцией Azure независимо от того, назначены они (sp_nonfunc) группе или нет.
Возможно ли, что я могу просто добавить участника-службы (sp_nonfunc) в группу с группой, добавляемой в sp_func, а затем иметь возможность выполнять функцию с помощью sp_nonfunc (без предоставления явных разрешений для sp_nonfunc)?
ИЗМЕНИТЬ: также кажется невозможным добавить sp_nonfunc к sp_func напрямую, даже если я определил собственную appRole в манифесте. В настоящее время кажется, что единственный способ - добавить разрешения на sp_nonfunc для sp_func, но это то, чего я хочу избежать.
EDIT2: вот как я определил роль в манифесте sp_func
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"displayName": "AzureFunctionAccess",
"id": "xxx-xxx-xxx-xxx-xxx",
"isEnabled": true,
"description": "Access Azure Function.",
"value": "AzureFunctionAccess"
}
]
EDIT3: когда я не назначаю роль непосредственно sp_nonfunc, а просто добавляю sp_nonfunc в группу безопасности, которую я получаю, при запросе к https://login.microsoftonline.com/<tenant id>/oauth2/token
с resource = Application ID URI зарегистрированного приложения sp_func:
{
"error": "invalid_grant",
"error_description": "AADSTS501051: Application 'xxx-xxx-xx-xx-xx'(xxx) is not assigned to a role for the application 'https://xxx'(xxx).\r\nTrace ID: xxx-xxx-xx-xx-xx\r\nCorrelation ID: xxx-xxx-xx-xx-xx\r\nTimestamp: xx-xx-xx xx:xx:xxZ",
"error_codes": [
501051
],
"timestamp": "xx-xx-xx xx:xx:xxZ",
"trace_id": "5xxx-xxx-xx-xx-xx",
"correlation_id": "xxx-xxx-xx-xx-xx",
"error_uri": "https://login.microsoftonline.com/error?code=501051"
}