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

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

警告

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

Azure 静态Web 应用提供简化的身份验证体验,无需执行其他操作或配置即可使用 GitHub 和 Microsoft Entra ID 进行身份验证。

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

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

先决条件

请注意以下用于 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 中登录,可以包含类似于以下链接的内容。

<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>

还可以在未经身份验证的用户登录后,将他们重定向回引用页。 若要配置此行为,请创建将 post_login_redirect_uri 设置为 .referrer响应替代规则,如以下示例所示。

{
  "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 状态代码返回到阻止的特定于提供程序的路由。 例如,若要将 Twitter 限制为提供程序,请添加以下路由规则。

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

删除个人数据

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

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

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

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

若要阻止平台向各个应用提供有关将来请求的此信息,请使用以下 URL 提交请求:

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

如果使用 Microsoft Entra ID,请使用 aad 占位符的值 <AUTHENTICATION_PROVIDER_NAME>

提示

有关一般限制和局限性的信息,请参阅配额

后续步骤