无法对Azure上的API管理进行资源所有者密码OAuth2身份验证

时间:2019-09-18 20:11:09

标签: oauth azure-active-directory azure-api-management

我有一个Flutter移动应用程序,该应用程序需要身份验证并访问Azure API管理中定义的Azure函数。我已经使用授权码授予对其进行了配置和测试,并且可以正常运行(使用this文章来指导我)。现在,我想查看“资源所有者密码”授予是否起作用,并且无法使它起作用(与上述文章中所述的基本相同,但“资源所有者密码”授予相同)。 我已经像这样重新配置了API Management OAuth2设置:

enter image description here enter image description here

我还已经将移动客户端(在默认目录-应用程序注册->我的移动应用程序客户端->支持的帐户类型下)配置为公共客户端,以允许资源所有者密码凭证(ROPC)流(不确定是否需要) )。

enter image description here

当我执行身份验证(即通过令牌传递 password grant_type,client_id,用户密码,用户ID和范围的令牌端点)时,我收到以下错误消息(请注意,我在默认目录中是免费的)试用,如果有帮助)

OAuth授权错误(无效请求):AADSTS90002:找不到租户“。如果租户没有活动订阅,则可能会发生这种情况。请与您的订阅管理员联系。

但是我正在使用的令牌端点URI包含正确的承租人ID,如果我在授权和令牌端点URI中使用相同的承租人ID进行身份验证代码流程,则一切正常。

不确定要提供什么其他信息来更好地进行诊断,所以请问。

2 个答案:

答案 0 :(得分:0)

除范围值外,其他配置均正确。由于您使用的是v2.0终结点,因此应该为api://{backendapp_clientId}/.default

我在开发人员门户网站上对其进行了测试,并且按预期运行。

enter image description here

您还可以通过直接调用令牌端点来对其进行测试。

enter image description here

答案 1 :(得分:0)

我能够使用these指令来实现这一点,但是区别在于我最初失败的原因可能是因为我使用的是默认目录。一旦创建了另一个目录,我便可以同时获得身份验证代码和资源所有者密码流。