我有一个Azure应用服务X(已发布了一个ASP.NET Web api项目),我已通过高级身份验证通过Y AAD应用(在其中使用Y的客户端ID)对其进行了配置。现在,我还有另一个Z AAD应用程序,我想在POSTMAN的OAuth 2.0流程中使用它。
问题是,当我提供Y的客户端ID和资源ID作为Y的应用程序ID URI时,我得到“客户端正在为其自身请求令牌”。为了避免这种情况,我将资源ID替换为Application(client)ID(GUID),并且可以找到它。为什么?
此外,如果我使用Z的客户端ID和Y的资源ID URI,则它不起作用,但在使用GUI时可以使用。那么为什么需要应用程序ID URI,如果我不能使用它,它的意义是什么?
答案 0 :(得分:0)
我认为您可能误会了一些东西。让我们更具体一点。 让我们简化一下,您拥有带有应用程序注册A的WebAPI A,并且拥有客户端应用程序注册B。
首先,您将WebAPI A设置为执行其所需的任何操作,例如,如果它需要访问图形,则在“ API权限”中,为其授予访问权限。那么您可以使用应用程序密码或用户流来设置WebAPI A 最后,您要公开一个API,它是应用程序ID URI的来源,仅允许客户端B访问webAPIA。您仅在App Reg A中进行设置,而无需在WebAPI App Service中输入与此相关的任何内容。除非您尝试访问其他api,例如graph,否则您的Web api中不需要资源ID。
然后说您正在尝试让客户端B使用webAPI,因此在您的应用程序注册B中,添加了API权限->我的API->选择您之前创建的范围。 然后在客户端B中,在那儿设置资源ID,因为您需要获取有权访问Web API的令牌。
我希望能为您澄清一下。 这也是一个简单的webapi客户端客户端示例,由于您使用的是应用服务,因此与您的服务并非100%相同,但本质上是相同的。 https://github.com/Azure-Samples/ms-identity-javascript-angular-spa-aspnetcore-webapi