0

我们正在使用 Azure Web 应用程序并使用 Web 应用程序的身份验证来强制执行 Azure AD 身份验证。我们让它有点工作,但正在尝试获取访问令牌,因为我们正在使用它来锁定 API 调用。查看网络调用,对 MSFT 端点的授权调用只有响应类型的“open_id 代码”。显然,我可以将响应的代码转换为访问令牌,但我也应该能够在回调中获取访问令牌。

我已经检查了清单上的 oauth2AllowImplicitFlow 是否设置为 true,但这就是我能找到的所有内容。

知道如何将“令牌”添加到 response_type 列表中吗?

4

1 回答 1

1

open_id:这是一个范围,而不是响应类型。你大概是说id_token

code: 表示应用服务在做授权码流程。它使用返回的代码将其交换为实际的访问令牌。

据我了解,您使用的是内置AppService authentication。您可能不需要更改 AppService 对您进行身份验证的方式。有一个很好的教程,但基本上你需要做的就是调用GET /.auth/me你的 SPA 来接收令牌。如果设置正确,GET /.auth/refresh刷新令牌。

GET https://xxx.azurewebsites.net/.auth/me


[
  {
    "access_token": "...",
    "expires_on": "2020-03-20T09:49:01.0000000Z",
    "id_token": "ey...",
    "provider_name": "aad",
    "refresh_token": "...",
    "user_claims": [
      {
        "typ": "foo",
        "val": "bar"
      },
      ...
    ],
    "user_id": "..."
  }
]

如果您真的想尝试弄乱内置身份验证,可以尝试更改此设置(取自上述“刷新”说明)。由于刷新功能,您可能仍然需要执行其中的一部分。

Azure Active Directory:在https://resources.azure.com中,执行以下步骤: 1. 在页面顶部,选择读/写。

  1. 在左侧浏览器中,导航到订阅 > 资源组 > > 提供者 > Microsoft.Web > 站点 > > 配置 > authsettings。

  2. 单击编辑。

  3. 修改以下属性。替换为您要访问的服务的 Azure Active Directory 应用程序 ID。

"additionalLoginParams": ["response_type=code id_token", "resource=<app_id>"]
于 2020-03-20T14:27:14.280 回答