数据 API 生成器中的 Azure 身份验证

数据 API 生成器允许开发人员定义身份验证机制(标识提供者),他们希望数据 API 生成器用于对发出请求的用户进行身份验证。

身份验证委托给受支持的标识提供者,可在其中颁发访问令牌。 获取的访问令牌必须包含在对数据 API 生成器的传入请求中。 然后,数据 API 生成器会验证呈现的任何访问令牌,确保数据 API 生成器是令牌的目标受众。

支持的标识提供者配置选项包括:

  • StaticWebApps
  • JSON Web 令牌 (JWT)

在开发中 (AZ 登录)

在 Azure SQL 数据库连接字符串中使用 Authentication='Active Directory Default' 意味着客户端将使用 Azure Active Directory (AAD) 凭据进行身份验证。 确切的身份验证方法由环境确定。 开发人员运行 az login时,Azure CLI 将打开浏览器窗口,提示用户使用Microsoft帐户或公司凭据登录。 身份验证后,Azure CLI 将检索并缓存链接到 Azure Active Directory 标识的令牌。 然后,此令牌用于对 Azure 服务的请求进行身份验证,而无需连接字符串中的凭据。

"data-source": {
    "connection-string": "...;Authentication='Active Directory Default';"
}

若要设置本地凭据,只需在安装 Azure CLI后使用 az login

az login

Azure 静态 Web 应用身份验证 (EasyAuth)

数据 API 生成器要求 Azure 静态 Web 应用身份验证(EasyAuth)对请求进行身份验证,并在使用选项 StaticWebApps时,在 X-MS-CLIENT-PRINCIPAL HTTP 标头中提供经过身份验证的用户的元数据。 静态 Web 应用提供的经过身份验证的用户元数据可在以下文档中引用:访问用户信息

若要使用 StaticWebApps 提供程序,需要在配置文件 runtime.host 部分中指定以下配置:

"authentication": {
    "provider": "StaticWebApps"
}

如果打算在 Azure 中运行数据 API 生成器、使用应用服务托管数据 API 生成器并在容器中运行它:在 Azure 应用服务中运行自定义容器时,使用 StaticWebApps 提供程序非常有用。

JWT

要使用 JWT 提供程序,您需要配置 runtime.host.authentication 部分,并提供必要的信息以验证所收到的 JWT 令牌。

"authentication": {
    "provider": "AzureAD",
    "jwt": {
        "audience": "<APP_ID>",
        "issuer": "https://login.microsoftonline.com/<AZURE_AD_TENANT_ID>/v2.0"
    }
}

角色选择

通过任一可用选项对请求进行身份验证后,令牌中定义的角色将用于帮助确定如何评估权限规则以 授权 请求。 除非请求使用用户角色,否则任何经过身份验证的请求都会自动分配给 authenticated 系统角色。 有关详细信息,请参阅 授权

匿名请求

还可以在不进行身份验证的情况下发出请求。 在这种情况下,请求会被自动分配给 anonymous 系统角色,以便能够正确地 授权

X-MS-API-ROLE 请求标头

数据 API 生成器要求标头 X-MS-API-ROLE 来授权使用自定义角色的请求。 X-MS-API-ROLE 的值必须与令牌中指定的角色匹配。 例如,如果令牌的角色是 Sample.Role,则 X-MS-API-ROLE 也应为 Sample.Role。 有关详细信息,请参阅 授权用户角色