commit
60e4ec4010
1 changed files with 84 additions and 0 deletions
@ -0,0 +1,84 @@ |
|||||
|
- name: Import SAMLv2 Metadata in Keycloak |
||||
|
hosts: localhost |
||||
|
gather_facts: no |
||||
|
vars: |
||||
|
metadata: "{{ lookup('file', 'metadata.xml') }}" |
||||
|
tasks: |
||||
|
- name: extract NameIDFormat |
||||
|
xml: |
||||
|
xmlstring: '{{ metadata }}' |
||||
|
content: "text" |
||||
|
xpath: "/md:EntityDescriptor/md:SPSSODescriptor/md:NameIDFormat" |
||||
|
namespaces: |
||||
|
md: urn:oasis:names:tc:SAML:2.0:metadata |
||||
|
register: data |
||||
|
- set_fact: |
||||
|
nif: "{{ (data.matches[0]|dict2items|first).value }}" |
||||
|
- debug: |
||||
|
var: nif |
||||
|
|
||||
|
- name: extract AssertionConsumerService |
||||
|
xml: |
||||
|
xmlstring: '{{ metadata }}' |
||||
|
content: "attribute" |
||||
|
xpath: "/md:EntityDescriptor/md:SPSSODescriptor/md:AssertionConsumerService" |
||||
|
attribute: Location |
||||
|
namespaces: |
||||
|
md: urn:oasis:names:tc:SAML:2.0:metadata |
||||
|
register: data |
||||
|
- set_fact: |
||||
|
acs: "{{ (data.matches[0]|dict2items|first).value.Location }}" |
||||
|
- debug: |
||||
|
var: acs |
||||
|
|
||||
|
- name: extract SingleLogoutService |
||||
|
xml: |
||||
|
xmlstring: '{{ metadata }}' |
||||
|
content: "attribute" |
||||
|
xpath: "/md:EntityDescriptor/md:SPSSODescriptor/md:SingleLogoutService" |
||||
|
attribute: Location |
||||
|
namespaces: |
||||
|
md: urn:oasis:names:tc:SAML:2.0:metadata |
||||
|
register: data |
||||
|
- set_fact: |
||||
|
sls: "{{ (data.matches[0]|dict2items|first).value.Location }}" |
||||
|
- debug: |
||||
|
var: sls |
||||
|
|
||||
|
- name: extract certificate |
||||
|
xml: |
||||
|
xmlstring: '{{ metadata }}' |
||||
|
content: "text" |
||||
|
xpath: "/md:EntityDescriptor/md:SPSSODescriptor/md:KeyDescriptor/ds:KeyInfo/ds:X509Data/ds:X509Certificate" |
||||
|
namespaces: |
||||
|
md: urn:oasis:names:tc:SAML:2.0:metadata |
||||
|
ds: "http://www.w3.org/2000/09/xmldsig#" |
||||
|
register: data |
||||
|
- set_fact: |
||||
|
certificate: "{{ (data.matches[0]|dict2items|first).value }}" |
||||
|
- debug: |
||||
|
var: certificate |
||||
|
|
||||
|
- shell: echo '{{ certificate }}' | base64 -d | openssl x509 -inform der |
||||
|
register: openssl |
||||
|
|
||||
|
- set_fact: |
||||
|
x509_certificate: '{{ openssl.stdout }}' |
||||
|
|
||||
|
- name: Create Keycloak Client |
||||
|
community.general.keycloak_client: |
||||
|
auth_keycloak_url: https://lb.itix.lab/auth |
||||
|
auth_password: secret |
||||
|
auth_realm: master |
||||
|
auth_username: admin |
||||
|
validate_certs: no |
||||
|
protocol: saml |
||||
|
realm: Amft |
||||
|
client_id: '{{ cft_client }}' |
||||
|
attributes: |
||||
|
saml.signing.certificate: '{{ x509_certificate }}' |
||||
|
saml_assertion_consumer_url_post: '{{ acs }}' |
||||
|
saml_single_logout_service_url_post: '{{ sls }}' |
||||
|
saml_name_id_format: unspecified |
||||
|
vars: |
||||
|
cft_client: CFT01 |
||||
Loading…
Reference in new issue