我想通过休息API创建APIM订阅,并能够按照这个微软文档成功地做到这一点,https://learn.microsoft.com/en-us/rest/api/apimanagement/current-ga/subscription.
对于身份验证,我使用ROPC授权类型(我的用户名和密码)生成一个不记名令牌。
但是我不想在应用程序中配置我的用户名和密码来获得不记名令牌,相反,我遵循了客户端凭据授权类型(通过客户端ID和密码获取令牌),我可以生成令牌,但当我使用该令牌在APIM中创建订阅时,我收到例外状况对象识别码为'0***-***-e'的客户端'0-*e'没有执行'Microsoft.ApiManagement/service/subscriptions/write'动作的受权
是否可以在APIM AccessControl(IAM)中添加AAD应用程序来授予权限?或者是否有其他方法可以实现此目的?或者ROPC是唯一的方法?
有人能帮忙吗。
1条答案
按热度按时间mw3dktmi1#
是的,您可以通过为AAD应用程序(服务主体)分配**
API Management Service Contributor
**角色,在APIM访问控制(IAM)中向其授予权限。我尝试在我的环境中重现相同的结果,并得到以下结果:
我已经使用Client-Credentials授权类型生成了一个访问令牌,如下所示:
当我使用上面的令牌创建APIM订阅并进行下面的查询时,我得到了相同的错误:
回应:
要解决此错误,您需要为该应用程序授予**
API Management Service Contributor
**角色,如下所示:在授予上述角色之后,我再次生成访问令牌并运行相同的查询,如下所示:
回应:
当我检查门户时,
APIM subscription
已成功创建,如下所示:x1c4d 1x指令集
参考:
如何在Azure API管理中使用基于角色的访问控制|Microsoft文档