你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Static Web Apps 提供简化的身份验证体验,无需额外配置即可使用 GitHub 和 Microsoft Entra ID 进行身份验证。 本文中列出的所有功能均适用于所有静态 Web 应用计划。
本文介绍默认行为、如何设置登录和注销、如何阻止身份验证提供程序等操作。 要阅读特定用途的身份验证详细信息,请参阅访问用户信息。
可以注册自定义提供程序,这会禁用所有预配置的提供程序。
警告
由于 X(前 Twitter)API 策略的更改,无法为你的应用在预配置的提供程序中提供支持。 如果要继续使用 X(以前为 Twitter)对应用进行身份验证/授权,请将应用配置更新为注册自定义提供程序。
先决条件
请注意以下用于 Azure Static Web Apps 身份验证和授权的默认值和资源。
默认值:
- 任何用户都可以使用预配置的提供程序进行身份验证
- GitHub
- Microsoft Entra ID
- 若要限制身份验证提供程序,请使用自定义路由规则阻止访问
- 登录后,用户属于
anonymous
和authenticated
角色。 有关角色的详细信息,请参阅管理角色
资源:
- 在 staticwebapp.config.json 文件中定义规则,使授权用户能够访问受限制的路由
- 使用内置邀请系统为用户分配自定义角色
- 在登录时使用 API 函数以编程方式为用户分配自定义角色
- 了解身份验证和授权明显与路由概念重叠,这在应用程序配置指南中进行了详细介绍
- 通过配置自定义 Microsoft Entra ID 提供程序,将登录限制为特定的 Microsoft Entra ID 租户。 预配置的 Microsoft Entra ID 提供程序允许任何 Microsoft 帐户登录。
设置登录
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
状态代码返回到被阻止的特定于提供程序的路由。 例如,若要限制 Entra ID (以前称为 Azure Active Directory,又称为“aad”)提供程序,请添加以下路由规则。
{
"route": "/.auth/login/aad",
"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.