带有OAuth 2.0授权代码流的代币传递范围,字符包含slash“/”

问题描述 投票:0回答:1

示例:

Scope名称:"portal/aws"

最终范围名称:

"api://6ea427d1-d3f6-479c-8cc8-f4cb73278354/portal/aws"

i在我的应用程序中的Azure门户中注册了相同的范围。

曝光API

scopes expose an API API许可 register scope detail

,但是,当我尝试将URL重定向到

/oauth2/v2.0/授权时,我会收到以下消息错误: API Permission INVALID_RESOURCE -AADSTS500011:命名的资源主管 API:// 6EA427D1-D3F6-479C-8CC8-F4CB73278354/PORTAL在 名为EB42C583-B4D7-4A81-A52B-D35FF307F901的租户。这可以 如果管理员尚未安装应用程序,则会发生 租户或租户中的任何用户同意。你可能 已将您的身份验证请求发送给错误的租户。

My code in Typescipt: const params = [ "client_id=" + clientId, "response_type=code", "redirect_uri=" + encodeURIComponent(`${redirectURI}/callback`), "response_mode=query", "scope=" + encodeURIComponent(scopeName), //api://6ea427d1-d3f6-479c-8cc8-f4cb73278354/portal/aws "state=" + state, "code_challenge=" + codeChallenge, "code_challenge_method=S256" ]; const urlSSO = `${endpointAzure}/oauth2/v2.0/authorize?${params.join("&")}`; return urlSSO;

    使用Encodeuricomponent函数会导致身份验证无法识别完整的范围名称
您可以检查一些建议。 暴露的API

api://6ea427d1-d3f6-479c-8cc8-f4cb73278354/portal/aws

与我在错误消息上看到的不同
api://6ea427d1-d3f6-479c-8cc8-f4cb73278354/portal
。 确保您正在公开一个正确的地址。

如果您在整个范围上使用

encodeURIComponent()
typescript azure authentication azure-authentication
1个回答
0
投票
Azure

误解范围。 你可以像

"scope=" + encodeURIComponent("api://6ea427d1-d3f6-479c-8cc8-f4cb73278354/portal/aws")
或只是硬编码以进行测试:
"scope=api://6ea427d1-d3f6-479c-8cc8-f4cb73278354/portal/aws"

在您的错误消息中,指出

tenant mismach
确保在身份验证请求中使用了正确的租户ID。
如果您的应用程序是多租户,请确保适当为外部租户设置。

房客ID在您的Azure端点中应该是正确的:
https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize

.
  • 此外,请确保对用户同意API许可。如果不是,请尝试根据API许可在Azure Portal中授予管理员同意。
  • Plus,在请求令牌时,请确保您要求根据API权限委派权限,并且它们匹配
  • Expose an API

    .

    的配置。
  • 确保示波器设置为
  • Expose an API

    。确保客户端ID匹配注册应用程序。检查应用程序ID是否正确设置在

    (api://{client-id})
    中。

    您还会在重定向之前记录范围。
  • 如果您仍然找不到问题,请提供更多信息。
运气好

© www.soinside.com 2019 - 2025. All rights reserved.