通过将应用服务或 Azure Functions 应用配置为使用 OpenID Connect 提供程序进行登录

本文介绍了如何将 Azure 应用服务或 Azure Functions 配置为使用符合 OpenID Connect (OIDC) 规范的自定义身份验证提供程序。 OIDC 是众多标识提供者 (IDPs) 使用的行业标准。 无需了解应用使用 OIDC 标识提供者的规范的详细信息。

你可以将应用配置为使用一个或多个 OIDC 提供者。 每个提供程序必须在配置中具有唯一的字母数字名称。 只有一个提供程序可以充当默认的重定向目标。

向标识提供者注册应用程序

提供商会要求你使用该标准注册应用程序的详细信息。 其中一个步骤涉及指定格式为 <app-url>/.auth/login/<provider-name>/callback 的重定向 URI。 每个标识提供者都应提供有关如何完成这些步骤的更多说明。 <provider-name> 值引用你在 Azure 中提供给 OpenID 提供程序名称的易记名称。

注意

某些提供程序可能需要额外的步骤才能配置和使用它们提供的值。 例如,Apple 提供了一个私钥,该私钥本身并不用作 OIDC 客户端密码。 您可以使用它来创建 JSON Web 令牌(JWT)。 使用 Web 令牌作为在应用配置中提供的机密。 有关详细信息,请参阅 “创建客户端密码”。

你需要收集应用程序的客户端 ID 和客户端密码。 客户端密码是一个非常重要的安全凭据。 不要与任何人共享此机密,也不会将其分发到客户端应用程序中。

您还需要获取提供者的 OIDC 元数据。 此元数据通常是通过一个配置元数据文档(提供程序的颁发者 URL,以 /.well-known/openid-configuration 为后缀)公开的。 获取此配置 URL。

如果无法使用配置元数据文档,请单独获取以下值:

向应用程序添加提供程序信息

若要为 OpenID Connect 提供程序添加提供程序信息,请执行以下步骤。

  1. 登录到 Azure 门户 并转到应用。

  2. 在左侧菜单中,选择 “设置>身份验证”。 然后选择“添加标识提供者”

  3. 对于 标识提供者,请选择 “OpenID Connect”。

  4. 对于“OpenID 提供程序名称”,请提供此前选择的唯一字母数字名称。

  5. 如果你有标识提供者提供的元数据文档的 URL,请提供该值作为“元数据 URL”

    否则,请选择 “单独提供终结点”。 将标识提供者的每个 URL 放在相应的字段中。

  6. 提供之前为 客户端 ID客户端机密收集的值。

  7. 为客户端密码指定一个应用程序设置名称。 客户端密码将存储为应用设置,以确保以安全方式存储机密。 若要管理 Azure Key Vault 中的机密,请稍后更新该设置以使用 Azure Key Vault 引用

  8. 选择“添加”以完成标识提供者的设置。

注意

OpenID 提供程序名称不能包含连字符(-),因为基于此名称创建了应用设置。 应用设置不支持连字符。 请改用下划线 (_)。

Azure 需要 openidprofileemail 范围。 请确保已至少使用这些范围在 ID 提供程序中配置应用注册。