35.4. Ansible を使用して IdM ユーザーが外部 IdP 経由で認証できるようにする

user ansible-freeipa モジュールを使用すると、Identity Management (IdM) ユーザーが外部アイデンティティープロバイダー (IdP) 経由で認証できるようになります。これを行うには、以前に作成した外部 IdP 参照を IdM ユーザーアカウントに関連付けます。この手順では、Ansible を使用して、github_idp という名前の外部 IdP 参照を idm-user-with-external-idp という名前の IdM ユーザーに関連付けます。この手順の結果、ユーザーが my_github_account_name github アイデンティティーを使用して、idm-user-with-external-idp として IdM に認証できるようになります。

前提条件

  • IdM クライアントと IdM サーバーで RHEL 9.1 以降を使用している。
  • IdM クライアントと IdM サーバーで SSSD 2.7.0 以降を使用している。
  • IdM で外部 IdP への参照を作成した。Ansible を使用して外部アイデンティティープロバイダーへの参照を作成する を参照してください。
  • 次の要件を満たすように Ansible コントロールノードを設定している。

    • Ansible バージョン 2.14 以降を使用している。
    • Ansible コントローラーに ansible-freeipa パッケージがインストールされている。
    • RHEL 9.4 以降を使用している。
    • ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
    • この例では、secret.yml Ansible vault に ipaadmin_password が保存されていることを前提としています。

手順

  1. Ansible コントロールノードで、enable-user-to-authenticate-via-external-idp.yml Playbook を作成します。

    ---
    - name: Ensure an IdM user uses an external IdP to authenticate to IdM
      hosts: ipaserver
      become: false
      gather_facts: false
    
      tasks:
      - name: Retrieve Github user ID
        ansible.builtin.uri:
          url: “https://api.github.com/users/my_github_account_name”
          method: GET
          headers:
            Accept: “application/vnd.github.v3+json”
        register: user_data
    
      - name: Ensure IdM user exists with an external IdP authentication
        ipauser:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: idm-user-with-external-idp
          first: Example
          last: User
          userauthtype: idp
          idp: github_idp
          idp_user_id: my_github_account_name
  2. ファイルを保存します。
  3. Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。

    $ ansible-playbook --vault-password-file=password_file -v -i inventory enable-user-to-authenticate-via-external-idp.yml

検証

  • IdM クライアントにログインし、idm-user-with-external-idp ユーザーの ipa user-show コマンドの出力に IdP への参照が表示されることを確認します。

    $ ipa user-show idm-user-with-external-idp
    User login: idm-user-with-external-idp
    First name: Example
    Last name: User
    Home directory: /home/idm-user-with-external-idp
    Login shell: /bin/sh
    Principal name: idm-user-with-external-idp@idm.example.com
    Principal alias: idm-user-with-external-idp@idm.example.com
    Email address: idm-user-with-external-idp@idm.example.com
    ID: 35000003
    GID: 35000003
    User authentication types: idp
    External IdP configuration: github
    External IdP user identifier: idm-user-with-external-idp@idm.example.com
    Account disabled: False
    Password: False
    Member of groups: ipausers
    Kerberos keys available: False

関連情報

  • idp ansible-freeipa アップストリームドキュメント