Red Hat Training

A Red Hat training course is available for RHEL 8

109.2. 创建对外部身份提供程序的引用

要将外部身份提供程序(IdP)连接到您的 Identity Management (IdM)环境中,请在 IdM 中创建 IdP 参考。这些示例演示了如何根据不同的 IdP 模板配置对外部 IdP 的引用。使用以下选项指定设置:

--provider
其中一个已知的身份提供程序的预定义模板
--client-id
IdP 在应用程序注册期间发布的 OAuth 2.0 客户端标识符。当应用程序注册步骤特定于每个 IdP 时,请参考它们的文档来了解详情。如果外部 IdP 是红帽单点登录(SSO),请参阅 创建 OpenID Connect 客户端
--base-url
Keycloak 和 Okta 所需的 IdP 模板的基本 URL
--organization
Microsoft Azure 需要的 IdP 中的域或机构 ID
--secret

(可选) 如果您已将外部 IdP 配置为需要来自机密 OAuth 2.0 客户端的 secret,则使用这个选项。如果您在创建 IdP 引用时使用这个选项,则会以交互方式提示您输入 secret。将客户端 secret 作为密码保护。

注意

RHEL 8.7 中的 SSSD 只支持不使用客户端 secret 的非机密 OAuth 2.0 客户端。如果要使用需要机密客户端 secret 的外部 IdP,您必须在 RHEL 8.8 及之后的版本中使用 SSSD。

先决条件

  • 您已将 IdM 注册为外部 IdP,并获取客户端 ID。
  • 您可以作为 IdM admin 帐户进行身份验证。
  • 您的 IdM 服务器使用 RHEL 8.7 或更高版本。
  • 您的 IdM 服务器使用 SSSD 2.7.0 或更高版本。

流程

  1. 在 IdM 服务器中作为 IdM 管理员进行身份验证。

    [root@server ~]# kinit admin
  2. 按照下表中所述,创建 IdM 中所需的 IdP 的引用。

    身份供应商重要选项命令示例

    Microsoft Identity Platform,
    Azure AD

    --provider microsoft
    --organization

    # ipa idp-add my-azure-idp \
      --provider microsoft \
      --organization main \
      --client-id <azure_client_id>

    Google

    --provider google

    # ipa idp-add my-google-idp \
      --provider google \
      --client-id <google_client_id>

    GitHub

    --provider github

    # ipa idp-add my-github-idp \
      --provider github \
      --client-id <github_client_id>

    Keycloak,
    Red Hat Single Sign-On

    --provider keycloak
    --organization
    --base-url

    # ipa idp-add my-keycloak-idp \
      --provider keycloak \
      --organization main \
      --base-url keycloak.idm.example.com:8443/auth \
      --client-id <keycloak_client_id>
    注意

    Keycloak 17 及更新版本的 Quarkus 版本已删除 URI 的 /auth/ 部分。如果您在部署中使用 Keycloak 的非Quarkus 分发,请在 --base-url 选项中包含 /auth/

    Okta

    --provider okta

    # ipa idp-add my-okta-idp \
      --provider okta
      --base-url dev-12345.okta.com \
      --client-id <okta_client_id>

    例如,以下命令会根据 Keycloak 模板创建一个名为 my-keycloak-idp 的引用,其中 --base-url 选项指定 Keycloak 服务器的 URL,格式为 server-name.$DOMAIN:$PORT/prefix

    [root@server ~]# ipa idp-add my-keycloak-idp \
                     --provider keycloak --organization main \
                     --base-url keycloak.idm.example.com:8443/auth \
                     --client-id id13778
    ------------------------------------------------
    Added Identity Provider reference "my-keycloak-idp"
    ------------------------------------------------
      Identity Provider reference name: my-keycloak-idp
      Authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth
      Device authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth/device
      Token URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/token
      User info URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/userinfo
      Client identifier: ipa_oidc_client
      Scope: openid email
      External IdP user identifier attribute: email

验证

  • 验证 ipa idp-show 命令的输出显示您创建的 IdP 引用。

    [root@server ~]# ipa idp-show my-keycloak-idp

其它资源