无法对 Azure 上的 API 管理执行资源所有者密码 OAuth2 身份验证
Unable to do Resource Owner Password OAuth2 authentication to API Management on Azure
我有一个 Flutter 移动应用程序需要验证和访问 Azure API 管理背后定义的 Azure 功能。我已经使用授权码授予对其进行了配置和测试,它工作正常(使用 this 文章来指导我)。现在我想看看资源所有者密码授予是否有效,但我无法使其生效(基本上与上述文章中描述的相同,但资源所有者密码授予)。
我重新配置了 API Management OAuth2 设置,如下所示:
我还将移动客户端(在默认目录 - 应用程序注册 -> 我的移动应用程序客户端 -> 支持的帐户类型下)配置为 public 客户端以允许资源所有者密码凭证 (ROPC) 流(不确定是否需要这样做)。
当我执行身份验证时(即点击传递 密码 grant_type、client_id、用户密码、用户 ID 和范围的令牌端点)我得到返回以下错误(请注意,我正在使用默认目录免费试用,如果它有所不同):
OAuth 授权错误 (invalid_request):AADSTS90002:找不到租户“”。如果租户没有活动订阅,则可能会发生这种情况。请咨询您的订阅管理员。
但是我使用的令牌端点 URI 包含我正确的租户 ID,如果我在授权和令牌端点 URI 中使用相同的租户 ID 执行身份验证代码流程,一切正常。
不确定要提供哪些其他信息以更好地进行诊断,所以请提问。
配置正确,除了scope的值。由于您使用的是 v2.0 端点,因此它应该是 api://{backendapp_clientId}/.default
.
我使用开发者门户对其进行了测试,它按预期工作。
您也可以通过直接调用令牌端点来测试它。
我能够使用 these 指令实现它,但不同之处在于我最初失败可能是因为我使用的是默认目录。一旦我创建了另一个目录,我就可以同时使用授权码和资源所有者密码流了。
我有一个 Flutter 移动应用程序需要验证和访问 Azure API 管理背后定义的 Azure 功能。我已经使用授权码授予对其进行了配置和测试,它工作正常(使用 this 文章来指导我)。现在我想看看资源所有者密码授予是否有效,但我无法使其生效(基本上与上述文章中描述的相同,但资源所有者密码授予)。 我重新配置了 API Management OAuth2 设置,如下所示:
我还将移动客户端(在默认目录 - 应用程序注册 -> 我的移动应用程序客户端 -> 支持的帐户类型下)配置为 public 客户端以允许资源所有者密码凭证 (ROPC) 流(不确定是否需要这样做)。
当我执行身份验证时(即点击传递 密码 grant_type、client_id、用户密码、用户 ID 和范围的令牌端点)我得到返回以下错误(请注意,我正在使用默认目录免费试用,如果它有所不同):
OAuth 授权错误 (invalid_request):AADSTS90002:找不到租户“”。如果租户没有活动订阅,则可能会发生这种情况。请咨询您的订阅管理员。
但是我使用的令牌端点 URI 包含我正确的租户 ID,如果我在授权和令牌端点 URI 中使用相同的租户 ID 执行身份验证代码流程,一切正常。
不确定要提供哪些其他信息以更好地进行诊断,所以请提问。
配置正确,除了scope的值。由于您使用的是 v2.0 端点,因此它应该是 api://{backendapp_clientId}/.default
.
我使用开发者门户对其进行了测试,它按预期工作。
您也可以通过直接调用令牌端点来测试它。
我能够使用 these 指令实现它,但不同之处在于我最初失败可能是因为我使用的是默认目录。一旦我创建了另一个目录,我就可以同时使用授权码和资源所有者密码流了。