【发布时间】:2022-01-03 21:26:50
【问题描述】:
我正在创建一个需要调用 Azure 函数的简单 Web 应用。
我在 Azure AD 中注册了 2 个应用程序:一个用于我的单页响应应用程序,另一个用于我的 Azure Function。
我的 azure 函数的应用程序有一个公开的 API,并配置了一个名为 CallApi 的范围。
应用本身已配置身份验证(简单身份验证),并且客户端 ID 与 AAD 中的 API 应用注册匹配:
我的 SPA 应用有权请求此范围,并且默认情况下为所有用户授予此权限。
我能够成功地将用户登录到我的 SPA 并获得访问令牌。我正在使用 @azure/msal-browser 和 @azure/msal-react npm 库来执行此操作,具体来说:
<MsalAuthenticationTemplate interactionType={InteractionType.Redirect} authenticationRequest={{scopes: ["User.Read", "api://<redacted>/CallApi"]}} >
但是,返回的访问令牌仅具有以下范围:['openid', 'profile', 'User.Read', 'email'] 而不是 api://<redacted>/CallApi。因此,当我尝试通过向https://<app_name>.azurewebsites.net/.auth/login/aad 发送 POST 请求来将访问令牌换成令牌时,它会返回一条未经授权的消息。
如何确保我的应用允许 CallApi 范围?
【问题讨论】:
标签: javascript azure authentication msal