设置 OpenID Connect 提供者

OpenID Connect 标识提供者是符合 Open ID Connect 规范的服务。 OpenID Connect 引入了 ID 令牌概念。 ID 令牌是允许客户端验证用户身份的安全令牌。 它还获取有关用户的基本个人资料信息,称为声明

OpenID Connect 提供者Azure AD B2CMicrosoft Entra ID具有多个租户的 Microsoft Entra ID 内置于 Power Pages。 本文介绍如何将其他 OpenID Connect 标识提供者添加到 Power Pages 站点。

Power Pages 中支持和不支持的身份验证流

  • 隐式授权
    • 此流是 Power Pages 站点的默认身份验证方法。
  • 授权代码
    • Power Pages 使用 client_secret_post 方法与标识服务器的令牌终结点通信。
    • 不支持通过令牌终结点进行身份验证的 private_key_jwt 方法。
  • 混合(受限支持)
    • Power Pages 要求响应中存在 id_token,因此不支持 response_type = code token
    • Power Pages 中的混合流执行与隐式授予相同的流,使用 id_token 直接登录用户。
  • 用于代码交换的校验密钥 (PKCE)
    • 不支持基于 PKCE 的用户身份验证技术。

备注

对您的站点的身份验证设置的更改可能需要几分钟反映在站点上。 要立即查看更改,请在管理中心中重新启动网站。

在 Power Pages 中设置 OpenID Connect 提供者

  1. 在您的 Power Pages 站点中,选择安全>标识提供程序

    如果未显示身份提供商,请检查网站的通用身份验证设置外部登录是否设置为开启

  2. 选择 + 新增提供者

  3. 选择登录提供者下,选择其他

  4. 协议下,选择 OpenID Connect

  5. 为提供商输入名称。

    提供程序名称是用户在登录页面上选择其标识提供程序时看到的按钮上的文本。

  6. 选择下一步

  7. 回复 URL 下,选择复制

    不要关闭 Power Pages 浏览器选项卡。您很快就会返回。

在标识提供者中创建应用注册

  1. 使用您复制的回复 URL 创建应用程序并向您的标识提供者注册。

  2. 复制应用程序或客户端 ID 以及客户端密码。

  3. 查找应用程序的终结点并复制 OpenID Connect 元数据文档 URL。

  4. 根据需要更改标识提供者的其他设置。

在 Power Pages 中输入站点设置

返回到您之前离开的 Power Pages 配置标识提供者页面,输入以下值。 或者,根据需要更改其他设置。 完成后选择确认

  • 机构:按以下格式输入机构 URL:https://login.microsoftonline.com/<Directory (tenant) ID>/,其中<目录(租户)ID>您创建的应用程序的目录(租户)ID。 例如,如果 Azure 门户中的目录(租户)ID 是 aaaabbbb-0000-cccc-1111-dddd2222eeee,授权 URL 将为 https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/​

  • 客户端 ID:粘贴您创建的应用程序的应用程序或客户端 ID。

  • 重定向 URL:如果您的站点使用自定义域名,输入自定义 URL;否则,保留默认值。 确保此值与您创建的应用程序的重定向 URI 完全相同。

  • 元数据地址:粘贴您复制的 OpenID Connect 元数据文档 URL。

  • 范围:使用 OpenID Connect scope 参数输入要请求的空格分隔的范围列表。 默认值为 openid

    openid 值是必需值。 了解您可以添加的其他声明

  • 响应类型:输入 OpenID Connect response_type 参数的值。 可能的值包括 codecode id_tokenid_tokenid_token tokencode id_token token。 默认值为 code id_token

  • 客户端密码:粘贴提供者应用程序中的客户端密码。 也可将其称为应用密码使用者密码。 如果响应类型为 code,则需要此设置。

  • 响应模式:输入 OpenID Connect response_mode 参数的值。 如果响应类型为 code,此值应为 query。 默认值为 form_post

  • 外部注销:此设置控制您的站点是否使用联合注销。使用联合注销,当用户注销某个应用程序或站点时,他们同时会注销使用同一标识提供者的所有应用程序和站点。 将此设置打开可在用户注销您的网站时将其重定向到联合注销体验。 将其关闭只会将用户从您的网站注销。

  • 注销后重定向 URL:输入标识提供者在用户注销后重定向用户的 URL。应在标识提供者配置中适当设置此位置。

  • RP 发起的注销:此设置控制信赖方(OpenID Connect 客户端应用程序)是否可以注销用户。 要使用此设置,启用外部注销

Power Pages 中的其他设置

通过其他设置,您可以更好地控制用户如何使用 OpenID Connect 标识提供者进行身份验证。 您不需要设置这些值中的任何一个。 它们完全可选。

  • 颁发者筛选器:输入一个基于通配符的筛选器,该筛选器匹配所有租户中的所有颁发者;例如,https://sts.windows.net/*/。 如果您使用的是 Microsoft Entra ID 身份验证提供者,则颁发者 URL 筛选器将是 https://login.microsoftonline.com/*/v2.0/

  • 验证访问群体:打开此设置可在令牌验证期间验证访问群体。

  • 有效访问群体:输入以逗号分隔的访问群体 URL 列表。

  • 验证颁发者:打开此设置可在令牌验证期间验证颁发者。

  • 有效颁发者:输入以逗号分隔的颁发者 URL 列表。

  • 注册声明映射登录声明映射:在用户身份验证中,声明是描述用户身份的信息,如电子邮件地址或出生日期。 当您登录到应用程序或网站时,它将创建一个令牌。 令牌包含有关您的身份的信息,包括与之相关的任何声明。 令牌在您访问应用程序或站点的其他部分或连接到同一标识提供者的其他应用程序和站点时,用于验证您的身份。 声明映射是更改令牌中包含的信息的一种方法。 它可以用于自定义应用程序或站点可用的信息,以及控制对功能或数据的访问。 注册声明映射修改注册应用程序或站点时发出的声明。 登录声明映射修改您登录应用程序或站点时发出的声明。 了解有关声明映射策略的更多信息

    用户信息可通过两种方式提供:

    • ID 令牌声明 – 令牌中包含基本用户属性(如姓名或邮箱)。
    • 用户信息端点 – 认证后返回详细用户信息的加密 API。

    要使用用户信息端点,请创建一个名为 Authentication/OpenIdConnect/{ProviderName}/UseUserInfoEndpointforClaims站点设置,并将值设置为

    可选地,创建一个名为 Authentication/OpenIdConnect/{ProviderName}/UserInfoEndpoint 的站点设置,并将值设置为用户信息端点 URL。 如果未提供此设置,Power Pages 将尝试从 OIDC 元数据中查找端点。

    错误处理

    • 如果端点 URL 未设置且 Power Pages 无法在元数据中找到它,登录将继续并记录一个警告。
    • 如果 URL 已设置但无法访问,则继续登录并显示警告。
    • 如果终结点返回身份验证错误(如 401 或 403),则继续登录,并显示包含错误消息的警告。

    映射语法:

    若要在登录或注册声明映射中使用 UserInfo 声明,请使用以下格式:

    字段名称 = userinfo.claimName

    如果未启用 UseUserInfoEndpointforClaims,使用 userinfo. 前缀的映射将被忽略。

  • 随机数生命周期:输入随机数值的生命周期(以分钟为单位)。 默认值为 10 分钟。

  • 使用令牌生命周期:此设置控制身份验证会话生命周期(如 Cookie)是否应与身份验证令牌的生命周期匹配。 如果打开,此值将替代 Authentication/ApplicationCookie/ExpireTimeSpan 站点设置中的应用程序 Cookie 到期时间范围值。

  • 包含电子邮件的联系人映射:此设置确定联系人登录时是否映射到相应的电子邮件地址。

    • :将唯一的联系人记录与匹配的电子邮件地址关联,并在用户成功登录后自动将外部标识提供者分配到联系人。
    • 关闭​

备注

UI_Locales 请求参数将在身份验证请求中自动发送,并将设置为门户上选择的语言。

其他授权参数

使用以下授权参数,但不要在 OpenID Connect 提供商的 Power Pages 中设置它们:

  • acr_values:acr_values 参数允许身份提供商强制执行安全保障级别,如多因素认证 (MFA)。 它允许应用程序指示所需的身份验证级别。

    要使用 acr_values 参数,请创建一个名为 Authentication/OpenIdConnect/{ProviderName}/AcrValues站点设置,并设置所需的值。 设置此值后,Power Pages 会在授权请求中包含 acr_values 参数。

  • 动态授权参数:动态参数可让您根据不同使用场景(如嵌入式应用或多租户场景)定制授权请求。

    • 提示参数

      此参数控制是否显示登录页面或同意屏幕。 若要使用它,请添加自定义项,以将其作为查询字符串参数发送到 ExternalLogin 终结点。

      支持的值

      • 登录
      • 同意书
      • select_account

      URL 格式

      {PortalUrl}/Account/Login/ExternalLogin?ReturnUrl=%2F&provider={ProviderName}&prompt={value}

      Power Pages 将此值通过提示参数发送给身份提供商。

    • 登录提示参数:

      此参数允许您传递已知的用户标识符(如电子邮件)以预填充或绕过登录屏幕。 若要使用它,请添加自定义项,以将其作为查询字符串参数发送到 ExternalLogin 终结点。

      URL 格式

      {PortalUrl}/Account/Login/ExternalLogin?ReturnUrl=%2F&provider={ProviderName}&login_hint={value}

      当用户已通过其他身份(如 Microsoft Entra ID 或 Microsoft 账户 (MSA))在同一会话中登录时,此参数可提供帮助。

  • 自定义授权参数:部分身份提供商支持专有参数以实现特定授权行为。 Power Pages 允许开发者安全地设置并传递这些参数。 若要使用这些参数,请添加自定义项,以将其作为查询字符串参数发送到 ExternalLogin 终结点。

    创建一个名为 Authentication/OpenIdConnect/{Provider}/AllowedDynamicAuthorizationParameters站点设置,并将值设置为以逗号分隔的参数名称列表,例如 param1,param2,param3。

    示例 URL 格式:

    {PortalUrl}/Account/Login/ExternalLogin?ReturnUrl=%2F&provider={ProviderName}&param1=value&param2=value&param3=value

    如果任何参数(param1、param2 或 param3)不在允许的参数列表中,Power Pages 将忽略它。

    此设置定义可在授权请求中发送的自定义参数列表。

    行为

    • 在 ExternalLogin 端点的查询字符串中传递参数。
    • Power Pages 仅在授权请求中包含列表中的参数。
    • 默认参数(如 prompt、login_hint 和 ReturnUrl)始终是允许的,不需要列出。

    示例 URL 格式:

    {PortalUrl}/Account/Login/ExternalLogin?ReturnUrl=%2F&provider={ProviderName}&custom_param=value

    如果 custom_param 不在允许的参数列表中,Power Pages 将忽略它。

另请参见

设置 Azure Active Directory (Azure AD) B2C 的 OpenID Connect 提供者
使用 Microsoft Entra ID 设置 OpenID Connect 提供者
OpenID Connect 常见问题解答