【发布时间】:2022-01-24 16:26:16
【问题描述】:
演员:
- 用户已登录的黑盒(MS Power App 自定义连接器)
- API A - 具有 [Authorize] 属性并启用 AAD 授权的 .NET Standard WebApi(代码中没有额外的验证),web.config 中的 ida:audience="A"
- API B - 具有 [Authorize] 属性并启用 AAD 授权的 .NET Standard WebApi(代码中没有额外的验证),web.config 中的 ida:audience="B"
- API C - .NET Standard WebApi 具有 [Authorize] 属性并启用 AAD 授权(代码中没有额外的验证),web.config 中的 ida:audience="C"
流程: Power App 连接器调用 API A。在 API A (C#) 的代码中,我可以从 Authorization 标头中解码 JWT 并查看哪个用户已登录。现在,我必须调用 API B 和 API C,然后将某些内容返回给 Power App 连接器. API B 和 API C 还必须能够解码 JWT 并从令牌中获取 UPN。
问题: 当我尝试重用整个授权标头时(只需在 API A 中获取它并添加到 HttpClient 以调用 API B 和 C)我得到 401。 现在我知道那是因为 ida:Audience 价值。我想这是 .NET 框架验证的一部分,超出了我的控制范围。当我将 API B 和 C 中的 ida:Audience 更改为“A”时,它起作用了。但这仅用于测试目的,我不允许在生产中这样做。 然后我尝试将 Power App 连接器中的范围设置为具有不同受众的多个值(由空格分隔) - 不走运,来自 AAD 的错误,不允许多个受众。
所以,我的问题是:在我的场景中是否可以做我需要的事情?我只有受众 A 的访问令牌,并且必须在具有其他受众价值的端点中授权(通过模拟)。
【问题讨论】:
标签: c# asp.net-web-api oauth-2.0 azure-active-directory