114.4. Ansible을 사용하여 IdM 사용자가 외부 IdP를 통해 인증할 수 있음
ansible-freeipa
모듈을 사용하여 IdM(Identity Management) 사용자가 외부 ID 공급자(IdP)를 통해 인증할 수 있습니다. 이렇게 하려면 이전에 생성한 외부 IdP 참조를 IdM 사용자 계정과 연결합니다. Ansible을 사용하여 github_idp 라는 외부 IdP 참조를 idm-user-with-external-idp 라는 IdM 사용자와 연결하려면 이 절차를 완료합니다. 절차의 결과로 사용자는 my_github_account_name github ID를 사용하여 IdM에 idm-user-with-external-idp 로 인증할 수 있습니다.
사전 요구 사항
- IdM 클라이언트 및 IdM 서버는 RHEL 8.7 이상을 사용하고 있습니다.
- IdM 클라이언트 및 IdM 서버는 SSSD 2.7.0 이상을 사용하고 있습니다.
- IdM에 외부 IdP에 대한 참조가 생성되어 있습니다. Ansible을 사용하여 외부 ID 공급자에 대한 참조 생성을 참조하십시오.
다음 요구 사항을 충족하도록 Ansible 제어 노드를 구성했습니다.
- Ansible 버전 2.14 이상을 사용하고 있습니다.
-
Ansible 컨트롤러에
ansible-freeipa
패키지가 설치되어 있습니다. - RHEL 8.10 이상을 사용하고 있습니다.
- 이 예제에서는 ~/MyPlaybook/ 디렉터리에서 IdM 서버의 FQDN(정규화된 도메인 이름)을 사용하여 Ansible 인벤토리 파일을 생성했다고 가정합니다.
-
이 예제에서는 secret.yml Ansible 자격 증명 모음이
ipaadmin_password
를 저장하는 것으로 가정합니다.
절차
Ansible 제어 노드에서 enable-user-to-authenticate-via-external-idp.yml 플레이북을 생성합니다.
--- - 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
- 파일을 저장합니다.
Ansible 플레이북을 실행합니다. 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
업스트림 문서