在 API Manager 中创建 OIDC 用户注册表

当需要多因素身份验证(MFA)时,请创建一个针对该组织的 OIDC 用户注册表。

重要提示: 如果您使用 X(原名 Twitter)作为 OIDC 提供商 API Connect ,该平台仅支持 OAuth 1.0a 方法,因此您的 X 应用程序必须配置为使用 OAuth 1.0a。 其他 OIDC 提供商支持 OAuth 2.0。

API Connect 提供了两种方法来在 API Designer中创建 OIDC 用户注册表,如以下部分中所述:

使用 UI 以创建 OIDC 用户注册表

当需要多因素身份验证(MFA)时,请使用 API Designer 用户界面创建一个针对特定组织的 OIDC 用户注册表。

  1. API 设计器的导航页面中, 单击 资源 “资源”。
  2. 单击 用户注册表
  3. 单击 创建 ,然后选择 OIDC 用户注册表
    重要提示: 当启用了自助入职功能,或预计任何站点将删除账户时,请勿在 API 管理器用户目录之间,或在用户目录的不同站点之间共享用户注册信息。 您应该为它们分别创建用户注册表,即使这些独立的注册表指向同一个后端身份验证提供商(例如, LDAP 服务器)。 这种分离使得 “消费者目录 ”能够在整个目录中保持电子邮件地址的唯一性, 而“API 管理器 ”则无需满足这一要求。 此外,这还能避免用户从“消费者目录 ”中删除账户后,导致其 API 管理器访问权限受影响的问题。
  4. 在“创建 OIDC 用户注册表”页面上,使用以下每个部分中的字段来配置注册表设置,然后单击创建

    许多注册表设置都已预配置,以简化配置步骤。

    提供程序类型
    使用表 1 中的设置来定义提供者类型。
    表 1. 提供商类型设置
    字段 描述
    提供程序类型 OIDC 提供程序。 选择以下受支持的 OIDC 提供程序之一:
    • 脸书
    • GitHub
    • Google
    • LinkedIn
    • Slack
    • X(原名Twitter)
    • Windows™ Live
    • 标准 OIDC(缺省值允许您指定其他提供者)
    标题 提供用于显示的描述性名称。
    名称 自动生成。 此名称在 CLI 命令中用于引用注册表。 有关管理用户注册表的 CLI 命令的详细信息,请参阅工具包 CLI 参考文档
    目录 提供新注册表的简要描述。
    需要电子邮件 如果用户注册流程中需要填写电子邮件地址,请选择此选项。 如果选择了此选项,那么源身份提供者必须在加载期间提供电子邮件地址作为认证过程的一部分。
    注意: 默认情况下,注册 Cloud ManagerConsumer Catalog 时无需提供电子邮件地址。
    唯一电子邮件地址 如果电子邮件地址在用户注册表中必须是唯一的,请选择此选项。
    注意: 消费者目录中的每个账户(包括同一站点下不同用户注册表中的账户)都必须拥有一个唯一的电子邮件地址,站点管理员账户也不例外。
    提供商端点
    针对大多数受支持的提供者自动生成。 在授权端点字段中,输入提供者的授权端点的 URL。
    令牌端点
    按表 2 中所述填写设置。
    表 2. 令牌端点设置
    字段 描述
    URL 针对大多数受支持的 OIDC 提供程序进行了预配置。 输入提供者的令牌端点的 URL。
    TLS 选择令牌端点的 TLS 客户机概要文件(OIDC 必须配置为使用 TLS)。 缺省值为缺省 TLS 客户机概要文件
    用户信息端点
    按表 3 中所述填写设置。
    表 3. UserInfo 终端设置
    字段 描述
    URL 针对大多数受支持的 OIDC 提供程序进行了预配置。 输入提供者的用户信息端点的 URL。
    对于 LinkedIn, 端点已更改,现在使用以下值:
    https://api.linkedin.com/v2/me
    如果先前使用旧的 LinkedIn OIDC 协议配置了 OIDC 注册表,那么无需指定此端点。
    TLS 选择用户信息端点的 TLS 客户机概要文件(OIDC 必须配置为使用 TLS)。 缺省值为缺省 TLS 客户机概要文件
    电子邮件端点
    对于旧的 LinkedIn OIDC 协议是必需的。

    由于 LinkedIn, API Connect 中 OIDC 注册表的配置设置也发生了更改。 如果要为 LinkedIn, 可以将电子邮件端点字段留空。

    如果先前配置了 OIDC 注册表以用于旧的 LinkedIn OIDC 协议,请通过提供电子邮件端点设置来更新配置,如表中所述 4。 旧 LinkedIn OIDC 协议需要新设置。

    表 4. 电子邮件端点设置
    字段 描述
    URL 对于旧的 LinkedIn OIDC 协议,此字段缺省为以下值:
    https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))
    您可以通过输入新值来覆盖设置。
    TLS 选择用户信息端点的 TLS 客户机概要文件(OIDC 必须配置为使用 TLS)。 缺省值为缺省 TLS 客户机概要文件
    JWKS 端点
    按表 5 中所述填写设置。
    表 5. JWKS 端点设置
    字段 描述
    URL 输入包含 JWKS 格式的公用密钥信息的只读端点的 URL。
    TLS 选择用户信息端点的 TLS 客户机概要文件(OIDC 必须配置为使用 TLS)。 缺省值为缺省 TLS 客户机概要文件
    注销
    您可以配置以下任一种注销支持类型,但不能同时配置两种:
    • 注销重定向:

      允许您指定用户注销后所看到的页面 API Connect;例如,您可以将用户“重定向”至 OIDC 提供商的注销端点,或另一个地址。 当用户从 注销时,浏览器将被重定向至指定的 URLAPI Connect,以便由指定的 URL 进行后续处理。

    • 由RP发起的注销:

      根据 OpenID 《Connect RP发起注销》 1.0 配置文件,提供更安全的表单。 当用户退出 API Connect登录时, API Connect 系统会向指定的端点 URL 发送一个 POST 请求,以清除该用户的会话。 使用此选项时,您还可以选择提供一个 RP 注销重定向端点 URL。

    按表 6 中所述填写设置。

    表 6. 注销选项
    字段 描述
    注销重定向 URL 可选。 提供一个 URL ,以便在用户退出登录时将浏览器重定向至该页面 API Connect

    如果使用此选项,请勿启用 OIDC 资源提供方(RP)注销功能。

    启用 OIDC RP 注销 选择此选项以使用由 RP 发起的注销,而非传统的注销重定向。

    如果使用此选项,请勿提供注销重定向链接 URL。 在由 RP 发起的注销过程中,您可以选择指定 RP 注销重定向地址 URL。

    RP 将发出 POST 请求的 URL 端点 请向将执行 POST 请求的端点提供 URL;例如, OpenID 提供商的授权端点。
    TLS 在向 OpenID 提供商端点发送 POST 请求时,请选择要使用的“ TLS ”配置文件。
    RP 注销重定向端点 URL 可选。 提供一个 URL ,以便 OIDC 提供商在注销操作后将用户重定向至该地址。 URL 的功能如 post_logout_redirect_uriOpenID Connect RP-Initiated Logout 1.0 Profile 》中所述。
    在注销时包含 refresh_token 可选。 根据 OpenID Connect RP-Initiated Logout 1.0 Profile 的规定,除 id_token_hint 之外,还应包含 refresh_token。
    客户信息
    按表 7 中所述填写设置。
    表 7. “客户端信息”设置
    字段 描述
    客户机标识 提供向所选 OIDC 提供程序注册的应用程序的客户机标识。
    客户机私钥 提供向所选 OIDC 提供程序注册的应用程序的客户机密钥。 当您创建类型为 Standard 的 OIDC 目录并将 客户机认证方法 设置为 数据编码表单主体时,此字段是可选的。

    如果您未使用客户端密钥 ,请确保已在 OIDC 提供商处配置了双向身份验证( TLS )。 要启用双向 TLS , 请创建一个 TLS 配置文件 ,并将其纳入 OIDC用户注册表的配置中。

    响应类型 针对大多数受支持的 OIDC 提供程序进行了预配置。 指定将从 OIDC 提供程序接收的响应的数据类型。
    范围 针对大多数受支持的 OIDC 提供程序进行了预配置。 指定 OIDC 提供程序的访问作用域。
    客户机认证方法 针对大多数受支持的 OIDC 提供程序进行了预配置。 选择要用于 OIDC 提供程序的认证方法。 选项为:
    • HTTP 基本认证模式
    • 数据编码表单主体
    其他支持
    可选。 选择表 8 中描述的其他安全参数。
    表 8. 其他安全选项
    安全参数 设置 CLI 的名称 描述
    NONCE nonce 启用 NONCE 扩展以防止再次使用无法满足的请求(已重放)。
    代码交换证明密钥 (PKCE) pkce 启用 PKCE 扩展以支持公共客户机缓解授权代码遭拦截的威胁。
    高级功能
    可选。 选择表 9 中描述的高级功能。
    表 9。 高级功能
    功能部件/UI 标签 设置 CLI 的名称 描述
    自动加载 auto_onboard 允许用户在不先登录的情况下执行对 API 的调用,前提是其提供由 OIDC 提供程序发放的有效令牌。
    注: 不适用于使用者组织。
    始终使用用户信息端点 userinfo 将 OIDC 用户注册表配置为始终从用户信息端点访存用户数据(如果已填充)。
    将门户网站用作外部 OIDC 提供程序流量的端点 proxy_redirect 在验证用户身份时,请将外部 OIDC 提供商重定向至 Consumer Catalog 进行通信,而非 API Manager。 启用此功能后, 消费者目录的重定向 URI 应设置为 /ibm_apim/oidcredirect. 。有关详细信息,请参阅 “重定向 URI ”。
    返回第三方访问令牌 proxy_access_token 在响应中包含第三方 OIDC 访问令牌。
    注: 启用此设置仅用于调试目的。

    建议不要在生产环境中使用此设置。 启用此设置后,当使用该令牌向 API Connect 发送请求时,令牌大小将会增加。 较大的令牌大小可能会超出 HTTP 协议的限制,从而导致 ERR_HTTP2_PROTOCOL_ERROR 或ERR_CONNECTION_CLOSED错误。

    您可以通过额外启用 “返回第三方 access_token 和 id_token 作为独立声明 ”来避免大小限制问题,这样第三方令牌就不会 API Connect被添加到所签发的 access_token 中。

    返回第三方 id_token proxy_id_token 在响应中包含第三方 OIDC id_token。
    注: 启用此设置仅用于调试目的。

    建议不要在生产环境中使用此设置。 启用此设置后,当使用该令牌向 API Connect 发送请求时,令牌大小将会增加。 较大的令牌大小可能会超出 HTTP 协议的限制,从而导致 ERR_HTTP2_PROTOCOL_ERROR 或ERR_CONNECTION_CLOSED错误。

    您可以通过额外启用 “返回第三方 access_token 和 id_token 作为独立声明 ”来避免大小限制问题,这样第三方令牌就不会 API Connect被添加到所签发的 access_token 中。

    将第三方 access_token 和 id_token 作为独立的声明返回 proxied_token_as_separate_claim 请将第三方 OIDC 令牌(和 proxy_id_tokenproxy_access_token )作为独立的声明包含在响应中,而不是将其添加到由 签发的 API Connectaccess_token 中。 要使用此功能,您必须启用 “返回第三方访问令牌 ”和 “返回第三方 id_token ”选项中的至少一个。

    将第三方令牌分离出来,可以防止它们影响由 API Connect. 签发的 access_token 的大小。

    令牌中继 token_relay 允许 access_token/refresh_token 在用于注销的 302 重定向中发送
    用户信息 POST post_userinfo 如果 OIDC 提供程序支持,请在联系用户信息端点时使用 HTTP POST 方法。
    注: 并非所有 OIDC 提供者都支持 POST。 启用此功能之前,请确保 OIDC 提供程序支持此功能。
    在云端使用 IBM® 的 APIC 令牌过期设置 override_provider_ttl 使用 API Connect中配置的访问令牌和刷新令牌到期设置来覆盖 OIDC 提供者的令牌到期设置。 有关在 API Connect中配置访问令牌和刷新令牌到期设置的信息,请参阅 配置访问令牌和刷新令牌的超时
    禁用散列验证 (仅限 CLI) disable_hash_verification 禁用 at_hashc_hash
    用户映射
    按表 10 中所述填写设置。
    注: 为大多数受支持的 OIDC 提供者预先配置了 "用户映射" 字段,以最大限度减少潜在错误; 请在更改设置时小心谨慎。 对于标准 OIDC 选项,请联系 OIDC 提供程序以获取字段的详细信息。
    表 10. 用户映射设置
    字段 描述
    用户名 响应令牌中包含用户的用户名的字段名称。
    注: 用户名 字段对于此 OIDC 注册表必须唯一,因为它标识系统中的用户并且无法更改。
    电子邮件 响应令牌中包含用户电子邮件地址的字段名称。
    名字 响应令牌中包含用户名字的字段名称。
    姓氏 响应令牌中包含用户姓氏的字段名称。
    重定向 URI
    重定向 URI 部分列示 OIDC 授权服务器将授权代码重定向至的端点。 每个 API Connect 组织类型都有一个端点: 云管理,提供者组织和使用者组织。 用户向 OIDC 提供程序注册其应用程序时,需要重定向端点。 例如,如果此 OIDC 用户注册表由提供者组织使用,那么客户必须向 OIDC 提供程序注册该提供者组织的重定向端点。 系统根据需要提供只读字段以供您复制端点值。
    注意: 如果消费者目录对公众开放,且您选择了该 proxy_redirect 选项,则必须将您的 OIDC 提供商配置为使用以下重定向 URI:
    • URI 路径: /ibm_apim/oidcredirect
    • 完整的 URL 示例: https://<your-developer-portal-domain>/ibm_apim/oidcredirect
    其中:

    <your-developer-portal-domain> 是您面向公众的消费者目录的实际主机名;例如, developer.example.com

    此配置可确保 OIDC 提供商在登录流程中,能够将经过身份验证的用户正确重定向回消费者目录

启用 OIDC 用户注册表

请按照以下步骤操作,为 “消费者目录 ”中的特定目录启用新用户注册表。 请对将使用新注册表的每个目录重复此过程。

  1. 在导航窗格中,单击 “管理”图标 “管理 ”。
  2. 选择要为其启用新 OIDC 用户注册表的目录。
  3. 在导航窗格上,单击 目录设置 选项卡
  4. 在 " 设置 " 页面上,单击 加入
  5. 在 " 加载 " 页面上,单击 目录用户注册表 部分中的 编辑
  6. 在“编辑用户注册表”页面上,选择要为目录启用的新 OIDC 用户注册表。
  7. 单击保存

使用 CLI 以创建 OIDC 用户注册表

当需要多因子认证 (MFA) 时,请使用 developer toolkit CLI 来创建特定于组织的 OIDC 用户注册表。

重要提示: 当启用了自助入职功能,或预计任何站点将删除账户时,请勿在 API 管理器用户目录之间,或在用户目录的不同站点之间共享用户注册信息。 您应该为它们分别创建用户注册表,即使这些独立的注册表指向同一个后端身份验证提供商(例如, LDAP 服务器)。 这种分离使得 “消费者目录 ”能够在整个目录中保持电子邮件地址的唯一性, 而“API 管理器 ”则无需满足这一要求。 此外,这还能避免用户从“消费者目录 ”中删除账户后,导致其 API 管理器访问权限受影响的问题。
通过首先在配置文件中定义注册表详细信息来配置 OIDC 用户注册表。 然后使用 CLI 命令创建注册表,将配置文件作为参数传递。 要使注册表可供 “消费者目录 ”使用,您必须在相关目录中启用该注册表。
注:
  • 不能使用 OIDC 注册表来保护网关上的 API。
  • 如果您使用OIDC用户注册表登录,管理服务器将处理与第三方OIDC提供商的交互。 从第三方OIDC提供商的角度来看,管理服务器被视为应用程序。 因此,第三方授权服务器用于发送令牌的管理服务器上的OIDC重定向端点必须对OIDC提供商开放。 如果API Connect 环境位于防火墙后,为确保登录功能,您必须允许访问。 在API管理器和云管理器上登录用户时,情况也是如此。
  • 如果使用 OIDC 用户注册表在消费者目录中进行用户登录,且消费者目录位于 DMZ 中,您可以使用该 proxy_redirect 属性。 这使得消费者目录能够充当代理端点,用于在 OIDC 提供商与 API Connect. 之间进行通信。
  • 当您向第三方 OIDC 提供商注册应用程序时,您需要提供相应的 OIDC 重定向 URI,例如 https://consumer.mycompany.com/consumer-api/oauth2/redirect。 但是,在您创建 API Connect 中的OIDC用户注册信息之前,您无法访问这些信息。 首先,请按照本页说明中的详细步骤,在没有这些信息的情况下注册您的申请,然后再进行更新。

登录管理服务器

在创建 OIDC 用户注册表之前,您必须通过 CLI 登录到管理服务器。 使用以下命令:
apic login --server mgmt_endpoint_url --username user_id --password password --realm provider/identity_provider
通过输入以下命令查看所有可用身份提供者的列表(无需登录即可使用此命令),可以确定要在 --realm 参数中使用的身份提供者:
apic identity-providers:list --scope provider --server platform_api_endpoint_url --fields title,realm
例如,
apic identity-providers:list --scope provider --server platform_api_endpoint_url --fields title,realm 
total_results: 2
results:
  - title: API Manager User Registry
    realm: provider/default-idp-2
  - title: Corporate LDAP user registry
    realm: provider/corporate-ldap
您可通过 title 值确定要使用的身份提供者;然后,可以直接从显示的 realm 值复制对应的 --realm 参数。 对于管理员在 API Connect 安装后创建的任何身份提供商,其名称均在创建时确定。 用于以提供者组织成员身份登录的缺省 API Manager 本地用户注册表为 default-idp-2

有关 apic login 命令的完整详细信息,请参阅 登录到管理服务器

定义 OIDC 注册表配置

在 YAML 文件中定义 OIDC 用户注册表的配置。 至少, YAML 文件必须包含以下列表中的设置。 有关其他设置,请参阅本主题中随过程的 UI 版本提供的表。
title: registry_title
integration_url: oidc_integration_url
case_sensitive: case_sensitivity_setting
email_required: true_or_false
email_unique_if_exist: true_or_false
configuration:
  client_id: 'app_client_id'
  client_secret: 'my-client-secret'
  provider_type: oidc_provider_type
其中:
  • registry_title 是您为用户注册表选择的描述性标题。
  • oidc_integration_urlAPI Connect 配置中的 OIDC 集成 URL。 您可以使用以下 CLI 命令确定 OIDC 集成 URL:
    apic integrations:list --server mgmt_endpoint_url --subcollection user-registry
  • case_sensitivity_setting 确定用户注册表是否区分大小写。 有效值为:
    • true
    • false
    为确保正确处理用户名的大小写,请确保此处的大小写敏感性设置与后端 OIDC 提供商的设置一致:
    • 仅当后端 OIDC 提供商支持 true 区分大小写时,才将其设置 case_sensitive 为。
    • 如果后端 OIDC 提供程序不支持区分大小写,请将 case_sensitive 设置为 false
    注意: 在注册表中添加至少一名用户后,您将无法更改此设置。
  • email_required 确定在用户加入过程中是否需要电子邮件地址。 有效值为:
    • true
    • false
    如果设置为 true,那么在加载期间,源身份提供者必须在认证过程中提供电子邮件地址。
    注意: 默认情况下,注册 Cloud ManagerAPI Manager 时无需提供电子邮件地址,但注册 Consumer Catalog 时必须提供。
  • email_unique_if_exist 确定电子邮件地址在用户注册表中是否必须唯一。 有效值为:
    • true
    • false
    注意: 消费者目录中的每个账户(包括同一站点下不同用户注册表中的账户)都必须拥有一个唯一的电子邮件地址,站点管理员账户也不例外。
  • app_client_id 是向 OIDC 服务器注册的应用程序的客户机标识,必须为字符串格式。
  • my-client-secret 是向 OIDC 服务器注册的应用程序的客户机密钥,必须为字符串格式。
  • oidc_provider_type 是 OIDC 提供程序的类型;请指定下列其中一个值:
    • facebook
    • github
    • google
    • linkedin
    • slack
    • twitter
    • windows_live
    • standard
      注:
      • 如果 OIDC 提供者为 X (以前称为 Twitter) ,请使用 twitter 提供者类型。
      • 对任何符合 OIDC 标准的 OIDC 提供程序使用 standard 提供者类型。
        如果提供者类型为 standard,那么必须在 YAML 文件的 configuration 部分中包含以下附加属性:
        authorization_endpoint: 'oidc_auth_endpoint'
        token_endpoint:
          endpoint: 'oidc_token_endpoint'
        其中:
        • oidc_auth_endpoint 是 OIDC 服务器上的授权端点,必须为字符串格式。
        • oidc_token_endpoint 是 OIDC 服务器上的令牌端点,必须为字符串格式。

缺省 OIDC 配置

对于每种 OIDC 提供者类型, API Connect 都采用缺省配置,但您可以覆盖 YAML 文件中的缺省配置属性。

注: 端点可随时更改; 创建注册表时,必须验证 API Connect提供的缺省端点。

API Connect 尽最大努力更新已知 OIDC 用户注册表类型的端点。 但是, OIDC 提供者可以随时更改端点。 客户负责确认 API Connect 提供的端点受 OIDC 提供者支持,并根据需要更新 OIDC 配置。

缺省配置如下:

  • 脸书
    authorization_endpoint: 'https://www.facebook.com/v3.1/dialog/oauth'
    token_endpoint:
      endpoint: 'https://graph.facebook.com/v3.1/oauth/access_token'
    userinfo_endpoint:
      endpoint: 'https://graph.facebook.com/me'
    scope: email public_profile
    field_mapping:
      username: email
      email: email
      last_name: last_name
      first_name: first_name
  • GitHub
    authorization_endpoint: 'https://github.com/login/oauth/authorize'
    token_endpoint:
      endpoint: 'https://github.com/login/oauth/access_token'
    userinfo_endpoint:
      endpoint: 'https://api.github.com/user'
    scope: 'read:user user:email'
    field_mapping:
      username: login
      email: email
      last_name: name
      first_name: name
  • Google
    authorization_endpoint: 'https://accounts.google.com/o/oauth2/v2/auth'
    token_endpoint:
      endpoint: 'https://www.googleapis.com/oauth2/v4/token'
    scope: openid profile email
    field_mapping:
      username: email
      email: email
      last_name: family_name
      first_name: given_name
    
  • LinkedIn

    旧配置与较新配置之间的某些设置有所不同。 确保对您正在使用的 LinkedIn 协议使用正确的设置。

    • 新的 OIDC 协议:
      authorization_endpoint: 'https://www.linkedin.com/oauth/v2/authorization'
        credential_location: form_body
        field_mapping:
          email: email
          username: name
          first_name: given_name
          last_name: family_name
        scope: openid profile email
        token_endpoint:
          endpoint: 'https://www.linkedin.com/oauth/v2/accessToken'
        userinfo_endpoint:
          endpoint: 'https://api.linkedin.com/v2/me'
    • 旧 OIDC 协议:
      authorization_endpoint: 'https://www.linkedin.com/oauth/v2/authorization'
      token_endpoint:
        endpoint: 'https://www.linkedin.com/oauth/v2/accessToken'
      userinfo_endpoint:
        endpoint: 'https://api.linkedin.com/v2/me'
      email_endpoint:
        endpoint: 'https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))'
      scope: r_liteprofile r_emailaddress
      field_mapping:
        username: emailAddress
        email: emailAddress
        last_name: localoizedLastName
        first_name: localizedFirstName
      credential_location: form_body
  • Slack
    authorization_endpoint: 'https://slack.com/oauth/authorize'
    token_endpoint:
      endpoint: 'https://slack.com/api/oauth.access'
    userinfo_endpoint:
      endpoint: 'https://slack.com/api/users.identity'
    scope: identity.basic identity.email
    field_mapping:
      username: user.email
      email: user.email
      last_name: user.name
      first_name: user.name
  • X (以前称为 Twitter)
    request_endpoint: https://api.x.com/oauth/request_token'
    authorization_endpoint: https://api.x.com/oauth/authenticate'
    token_endpoint: 
        endpoint: 'https://api.x.com/oauth/access_token'
    userinfo_endpoint:
        endpoint: 'https://api.x.com/1.1/account/verify_credentials.json'
    oauth_signature_method: 'HMAC-SHA1'
    field_mapping: 
        email: email
        first_name: name
        last_name: name
        username: screen_name
  • Windows Live
    authorization_endpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
    token_endpoint:
      endpoint: 'https://login.microsoftonline.com/common/oauth2/v2.0/token'
    scope: openid offline_access profile email
    field_mapping:
      email: email
      username: preferred_username
      first_name: name
      last_name: name
    
  • 标准
    
    response_type: code
    scope: openid
    field_mapping:
      username: sub
      email: email
      last_name: family_name
      first_name: given_name
    credential_location: auth_header
    虽然这是 standard 提供者类型的缺省配置,但您应该联系您的 OIDC 提供程序以获取需要定义的字段的详细信息。

创建 OIDC 用户注册表

要创建 OIDC 用户注册表,请使用以下 CLI 命令:
apic user-registries:create --server mgmt_endpoint_url --org organization_name oidc_config_file
其中:
  • mgmt_endpoint_url 是平台 API 端点 URL。
  • organization_name 是提供者组织的 name 属性值。
  • oidc_config_file 是用于定义 OIDC 用户注册表配置的 YAML 文件的名称。
完成注册表创建后,此命令会显示以下汇总详细信息:
registry_name registry_url
缺省情况下,registry_name 派生自配置 YAML 文件中的 title 属性,但可通过在该文件中包含 name 属性来进行覆盖。 registry_urlAPI Connect 分配给注册表的内部 URL。
创建 OIDC 用户注册表后,必须向第三方 OIDC 提供程序更新您的应用程序注册以包含 OIDC 重定向 URI;您可以使用以下命令获取此信息,该命令在命令窗口中显示注册表的详细信息:
apic user-registries:get --server mgmt_endpoint_url --org organization_name registry_name --output -
所需的 oidc_redirect_uri 值在 consumer: 部分中;例如:
consumer:
  oidc_redirect_uri: https://consumer.mycompany.com/consumer-api/oauth2/redirect

在目录中启用 OIDC 注册表

要使您的 OIDC 注册表可用于接入和验证 Consumer Catalog 用户,您必须在与该 Consumer Catalog 关联的目录中启用它。 完成以下步骤:
  1. 使用以下命令来确定 OIDC 用户注册表的 URL:
    apic user-registries:list --server mgmt_endpoint_url --org organization_name
  2. 请输入以下命令(终止连字符表示此命令从命令行接受输入):
    apic configured-catalog-user-registries:create --server mgmt_endpoint_url --org organization_name --catalog catalog_name -
    其中 catalog_namename所需目录的属性。 该命令显示
    Reading CONFIGURED_CATALOG_USER_REGISTRY_FILE arg from stdin
  3. 输入以下数据,后接新的一行:
    user_registry_url: oidc_registry_url
    其中 oidc_registry_url 是在步骤 1 中获取的 OIDC 注册表 URL。
  4. 按下 CTRL D 以停止输入。

有关所有 和 apic configured-catalog-user-registries apic user-registries 命令的详细信息,请参阅工具包 CLI 参考文档

您也可以通过 REST API Connect API 完成本主题中所述的操作;请参阅 REST API API Connect 文档