将 Azure Active Directory (Azure AD) 用作身份验证
使用快速设置进行配置
- 在 Azure 门户中,搜索并选择“应用服务”,然后选择你的应用。
- 在左侧导航栏中,依次选择“身份验证/授权” > “开”。
- 依次选择“Azure Active Directory” > “快速”。若要改为选择现有应用注册,请执行以下操作: 选择“选择现有 AD 应用”,然后单击“Azure AD 应用”。选择现有应用注册,然后单击“确定”。
- 选择“确定”,在 Azure Active Directory 中注册应用服务应用。 此时会新建一个应用注册。
- 默认情况下,应用服务提供身份验证,但不限制对站点内容和 API 的授权访问。 必须在应用代码中为用户授权。 若要限制为只有经过Azure Active Directory 身份验证的用户才能访问应用,请将“请求未经验证时需执行的操作”设置为“使用 Azure Active Directory 登录”。 如果你设置此功能,应用会要求对所有请求进行身份验证。 它还将所有未经身份验证的请求都重定向到Azure Active Directory 进行身份验证。
- 选择“保存”。
使用高级设置进行配置
若要使用另一 Azure AD 租户中的应用注册,可以手动配置应用设置。 若要完成此自定义配置,请执行以下操作:
1、在 Azure AD 中创建注册。
2、向应用服务提供一些注册详细信息。
执行以下步骤:
- 登录到 Azure 门户,搜索并选择“应用服务”,然后选择应用。 记下应用的 URL。 稍后要使用此 URL 来配置 Azure Active Directory 应用注册。
- 选择“Azure Active Directory” > “应用注册” > “新建注册”。
- 在“注册应用”页上的“名称”中,输入应用注册的名称。
- 在“重定向 URI”中,选择“Web”并键入 /.auth/login/aad/callback。例如,https://contoso.azurewebsites.net/.auth/login/aad/callback。
- 选择“注册”。
- 在应用注册创建后,复制“应用(客户端) ID”和“目录(租户) ID”,以供稍后使用。
- 选择“身份验证”。 在“隐式授权”下,启用“ID 令牌”以允许 OpenID Connect 用户从应用服务登录。
- 选择“品牌”。 在“主页 URL”中,输入应用服务应用的 URL,然后选择“保存”。
- 依次选择“公开 API” > “设置”。 对于单租户应用,请粘贴应用服务应用的 URL并选择“保存”;对于多租户应用,请粘贴基于某个租户验证域的 URL,然后选择“保存”。
- 选择“添加范围”。 a、在“范围名称”中输入 user_impersonation。b、在文本框中,输入许可范围名称,以及希望在许可页上向用户显示的说明。 例如,输入“访问我的应用”。c、 选择“添加范围”。
- 若要创建客户端机密,请选择“证书和机密” > “新建客户端机密” > “添加”。 复制页面中显示的客户端机密值。它不会再次显示。
- 若要添加多个回复 URL,请选择“身份验证”。
在应用服务应用中启用 Azure Active Directory
- 在 Azure 门户中搜索并选择“应用服务” ,然后选择应用。
- 在左窗格中的“设置”下,选择“身份验证/授权” > “启用”。
- 默认情况下,应用服务身份验证允许未经身份验证的用户访问你的应用。若要强制执行用户身份验证,请将“请求未经验证时需执行的操作”设置为“使用 Azure Active Directory 登录”。
- 在“验证提供程序”下,选择“Azure Active Directory” 。
- 在“管理模式”中,选择“高级”,然后根据下表来配置应用服务身份验证。
- 选择“确定”,然后选择“保存” 。现在,可以使用 Azure Active Directory 在应用服务应用中进行身份验证。
配置本机客户端应用程序
- 可以注册本地客户端,以使用客户端库(例如 Active Directory 身份验证库)对应用中托管的 Web API 进行身份验证。
- 在 Azure 门户中,选择“Active Directory” > “应用注册” > “新建注册”。
在“注册应用”页上的“名称”中,输入应用注册的名称。 - 在“重定向 URI”中选择“公共客户端(移动和桌面)”,然后键入 URL/.auth/login/aad/callback。 例如,https://contoso.azurewebsites.net/.auth/login/aad/callback。
- 选择“创建”。
- 创建应用注册后,复制“应用程序(客户端) ID”的值。
- 选择“API 权限” > “添加权限” > “我的 API”。
- 选择前面为应用服务应用创建的应用注册。 如果未看到该应用注册,请确保在 在 Azure AD 中为应用服务应用创建应用注册部分已添加
user_impersonation 范围。 - 在“委托的权限”下,依次选择“user_impersonation”和“添加权限”。现在,你已配置了可以代表用户访问应用服务应用的本机客户端应用程序。
为服务到服务调用配置后台程序客户端应用程序
应用程序可以获取令牌,代表自身(不代表用户)调用应用服务或 Functions 应用中托管的 Web API。 此方案适用于在没有登录用户的情况下执行任务的非交互式后台程序应用程序。 它使用标准 OAuth 2.0 客户端凭据授权。
- 在 Azure 门户中,选择“Active Directory” > “应用注册” > “新建注册”。
- 在“注册应用程序”页上的“名称”中,输入后台程序应用注册的名称。
- 对于后台应用程序,不需要“重定向 URI”,因此可将其保留为空。
- 选择“创建”。
- 创建应用注册后,复制“应用程序(客户端) ID”的值。
- 选择“证书和机密” > “新建客户端机密” > “添加”。 复制页面中显示的客户端机密值。 它不会再次显示。
现在可以通过将 resource 参数设置为目标应用的“应用程序 ID URI”,使用客户端 ID 和客户端机密请求访问令牌。 然后,可以使用标准 OAuth 2.0 授权标头将生成的访问令牌提供给目标应用,应用服务身份验证/授权将像平常一样验证和使用该令牌,以指示调用方(在本例中是应用程序,不是用户)已进行身份验证。
目前,这允许 Azure AD 租户中的 任何 客户端应用程序请求访问令牌,并向目标应用进行身份验证。 如果还想要强制 授权 以只允许某些客户端应用程序,则必须执行一些附加配置。
- 在表示要保护的应用服务或 Functions 应用的应用注册清单中定义应用角色。
- 在表示需要获得授权的客户端的应用注册上,选择“API 权限” > “添加权限” > “我的 API”。
- 选择之前创建的应用注册。 如果看不到应用注册,请确保已添加应用角色。
- 在“应用程序权限”下,选择之前创建的应用角色,然后选择“添加权限”。
- 确保单击“授予管理员同意”以授权客户端应用程序请求权限。
- 与前面的方案(添加任何角色之前)类似,现在可以为同一目标 resource 请求访问令牌,而访问令牌将包括一个 roles声明,其中包含授权给客户端应用程序的应用角色。
- 在目标应用服务或 Functions 应用代码中,现在可以验证令牌中是否存在预期的角色(这不是由应用服务身份验证/授权执行的)。有关详细信息,请参阅访问用户声明。
现已配置可以使用自己的标识访问应用服务应用的后台程序客户端应用程序。
参考微软文档:https://docs.microsoft.com/zh-cn/azure/app-service/configure-authentication-provider-aad