我有一个Flutter移动应用程序,该应用程序需要身份验证并访问Azure API管理中定义的Azure函数。我已经使用授权码授予对其进行了配置和测试,并且可以正常运行(使用this文章来指导我)。现在,我想查看“资源所有者密码”授予是否起作用,并且无法使它起作用(与上述文章中所述的基本相同,但“资源所有者密码”授予相同)。 我已经像这样重新配置了API Management OAuth2设置:
我还已经将移动客户端(在默认目录-应用程序注册->我的移动应用程序客户端->支持的帐户类型下)配置为公共客户端,以允许资源所有者密码凭证(ROPC)流(不确定是否需要) )。
当我执行身份验证(即通过令牌传递 password grant_type,client_id,用户密码,用户ID和范围的令牌端点)时,我收到以下错误消息(请注意,我在默认目录中是免费的)试用,如果有帮助)
OAuth授权错误(无效请求):AADSTS90002:找不到租户“。如果租户没有活动订阅,则可能会发生这种情况。请与您的订阅管理员联系。
但是我正在使用的令牌端点URI包含正确的承租人ID,如果我在授权和令牌端点URI中使用相同的承租人ID进行身份验证代码流程,则一切正常。
不确定要提供什么其他信息来更好地进行诊断,所以请问。
答案 0 :(得分:0)
除范围值外,其他配置均正确。由于您使用的是v2.0终结点,因此应该为api://{backendapp_clientId}/.default
。
我在开发人员门户网站上对其进行了测试,并且按预期运行。
您还可以通过直接调用令牌端点来对其进行测试。
答案 1 :(得分:0)
我能够使用these指令来实现这一点,但是区别在于我最初失败的原因可能是因为我使用的是默认目录。一旦创建了另一个目录,我便可以同时获得身份验证代码和资源所有者密码流。