.net - 具有应用程序角色的守护程序应用程序无法访问具有相同角色的已定义 AuthorizeAttribute 的端点
问题描述
我的项目由两个应用程序的 Web 应用程序、守护程序应用程序和通用 API 组成。这是Common API的应用注册清单中应用角色的定义:
"appRoles": [
{
"allowedMemberTypes": [
"Application", "User"
],
"description": "Access the Synchronizator as an application",
"displayName": "access_as_sync_application",
"id": "XXX",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "access_as_sync_application"
},
{
"allowedMemberTypes": [
"User"
],
"description": "Access to everybody timeentries",
"displayName": "TimeEntries.Administrator",
"id": "XXX",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "TimeEntries.Administrator"
},
{
"allowedMemberTypes": [
"User"
],
"description": "Access to own timeentries",
"displayName": "TimeEntries.User",
"id": "XXX",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "TimeEntries.User"
}
],
如你看到的。我已经为 MemberType "Application" 和用于 Daemon Application 的 "User" 定义了角色 "access_as_sync_application"。两个应用程序之间的关系在 Enterprise applications\API app\Users and groups 中定义:
但是一旦我尝试从守护程序应用程序调用 API,我就会收到 403 禁止响应。这就是我保护端点的方式:
[HttpPost]
[Authorize(Roles = "access_as_sync_application")]
public async Task<ActionResult<LogSyncResult>> LogSync([FromBody] LogSyncCommand command)
{
LogSyncResult result = await Mediator.Send(command);
return Ok(result);
}
解决方案
推荐阅读
- python - 有人可以解释这行代码吗?
- r - 当`c()`为`0`时,如何使用`[c(),]`对数据帧进行子集化?
- postgresql - Case..When in Where Condition Spring 引导数据 jpa
- json - 请问如何将 cURL 转换为 JSON?
- php - Mock_Response::getBody() 的返回值必须是 Psr\Http\Message\StreamInterface 的实例,在 PHPUnit 测试中返回的字符串与 9.5.10
- scala - Gatling - 如何在同一个类中使用 2 个不同的 json 文件进行 SET 和 GET
- python - 如何从python pandas中的列中解析数据
- sql - 通过重用 postgres 索引或 bigserial 将数据从临时表插入到 2 个表
- javascript - 在 vuejs 中配置 flat-pickr 日期和时间?
- javascript - jqGrid 工具栏搜索仅适用于前 20 行。分页为 20,40,60