你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

对 Static Web Apps 进行身份验证和授权

Azure Static Web Apps 提供简化的身份验证体验,无需额外配置即可使用 GitHub 和 Microsoft Entra ID 进行身份验证。

本文介绍默认行为、如何设置登录和注销、如何阻止身份验证提供程序等操作。

可以注册自定义提供程序,这会禁用所有预配置的提供程序。

警告

由于 X(前 Twitter)API 策略的更改,无法为你的应用在预配置的提供程序中提供支持。 如果要继续使用 X(以前为 Twitter)对应用进行身份验证/授权,请将应用配置更新为注册自定义提供程序

先决条件

请注意以下用于 Azure Static Web Apps 身份验证和授权的默认值和资源。

默认值:

  • 任何用户都可以使用预配置的提供程序进行身份验证
    • GitHub
    • Microsoft Entra ID
    • 若要限制身份验证提供程序,请使用自定义路由规则阻止访问
  • 登录后,用户属于 anonymousauthenticated 角色。 有关角色的详细信息,请参阅管理角色

资源:

设置登录

Azure 静态 Web 应用使用 /.auth 系统文件夹来提供对与授权相关的 API 的访问权限。 不要将 /.auth 文件夹中的任何路由直接公开给最终用户,而是为友好 URL 创建路由规则

使用下表查找特定于提供程序的路由。

授权提供程序 登录路由
Microsoft Entra ID /.auth/login/aad
GitHub /.auth/login/github

例如,若要使用 GitHub 登录,可以使用类似于以下示例的 URL。

<a href="/.auth/login/github">Login</a>

如果选择支持多个提供程序,请为网站上的每个提供程序使用特定于提供程序的链接。 使用路由规则将默认提供程序映射到类似于 /login 的友好路由。

{
  "route": "/login",
  "redirect": "/.auth/login/github"
}

设置登录后重定向

用户登录后,可以通过在 post_login_redirect_uri 查询字符串参数中提供完全限定的 URL 来将用户返回到特定页面。

<a href="/.auth/login/github?post_login_redirect_uri=https://zealous-water.azurestaticapps.net/success">Login</a>

You can also redirect unauthenticated users back to the referring page after they sign in. To add this redirect, create a response override rule that sets post_login_redirect_uri to .referrer, like in the following example.

{
  "responseOverrides": {
    "401": {
      "redirect": "/.auth/login/github?post_login_redirect_uri=.referrer",
      "statusCode": 302
    }
  }
}

设置注销

/.auth/logout 路由将用户从网站注销。 可以添加指向站点导航的链接,以允许用户注销,如以下示例所示。

<a href="/.auth/logout">Log out</a>

使用路由规则映射类似于 /logout 的友好路由。

{
  "route": "/logout",
  "redirect": "/.auth/logout"
}

设置注销后重定向

若要在用户注销后将其返回到特定页面,请在 post_logout_redirect_uri 查询字符串参数中提供 URL。

阻止身份验证提供程序

所有身份验证提供程序都默认启用,但你可能想要限制应用使用某个提供程序。 例如,你的应用可能只想使用公开电子邮件地址的提供商。

若要阻止某个提供程序,可以创建路由规则,将请求的 404 状态代码返回到被阻止的特定于提供程序的路由。 例如,若要限制将 X(前 Twitter)作为提供程序,请添加以下路由规则。

{
  "route": "/.auth/login/twitter",
  "statusCode": 404
}

删除个人数据

以最终用户身份向应用程序授予同意时,应用程序可以访问你的电子邮件地址或用户名,具体取决于标识提供者。 提供此信息后,应用程序的所有者可以确定如何管理个人数据。

最终用户需要联系各个 Web 应用的管理员,才能从他们的系统中撤消此信息。

若要从 Azure Static Web Apps 平台中删除个人数据,并阻止平台提供有关将来请求的此信息,请使用以下 URL 提交请求:

https://identity.azurestaticapps.net/.auth/purge/<AUTHENTICATION_PROVIDER_NAME>

To prevent the platform from providing this information on future requests to individual apps, submit a request using the following URL:

https://<WEB_APP_DOMAIN_NAME>/.auth/purge/<AUTHENTICATION_PROVIDER_NAME>

If you're using Microsoft Entra ID, use aad as the value for the <AUTHENTICATION_PROVIDER_NAME> placeholder.

Tip

For information about general restrictions and limitations, see Quotas.

下一步