init
This commit is contained in:
commit
36dc3a0ec0
6
.ansible-lint
Normal file
6
.ansible-lint
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# .ansible-lint
|
||||||
|
warn_list:
|
||||||
|
- '204' # Lines should be less than 160 characters
|
||||||
|
- 'meta-no-info'
|
||||||
|
skip_list:
|
||||||
|
- 'role-name'
|
35
.pre-commit-config.yaml
Normal file
35
.pre-commit-config.yaml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v4.4.0
|
||||||
|
hooks:
|
||||||
|
- id: trailing-whitespace
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- id: check-added-large-files
|
||||||
|
- id: check-case-conflict
|
||||||
|
- id: check-executables-have-shebangs
|
||||||
|
- id: check-json
|
||||||
|
- id: pretty-format-json
|
||||||
|
- id: detect-private-key
|
||||||
|
|
||||||
|
- repo: local
|
||||||
|
hooks:
|
||||||
|
- id: ansible-lint
|
||||||
|
name: Ansible-lint
|
||||||
|
description: This hook runs ansible-lint.
|
||||||
|
entry: ansible-lint -v --force-color
|
||||||
|
language: python
|
||||||
|
# do not pass files to ansible-lint, see:
|
||||||
|
# https://github.com/ansible/ansible-lint/issues/611
|
||||||
|
pass_filenames: false
|
||||||
|
always_run: true
|
||||||
|
additional_dependencies:
|
||||||
|
- ansible-core>=2.13.3
|
||||||
|
|
||||||
|
- repo: https://github.com/adrienverge/yamllint.git
|
||||||
|
rev: v1.29.0
|
||||||
|
hooks:
|
||||||
|
- id: yamllint
|
||||||
|
files: \.(yaml|yml)$
|
||||||
|
types: [file, yaml]
|
||||||
|
entry: yamllint
|
11
.yamllint
Normal file
11
.yamllint
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
line-length:
|
||||||
|
max: 140
|
||||||
|
level: warning
|
||||||
|
|
||||||
|
ignore: |
|
||||||
|
.travis.yml
|
||||||
|
.github
|
18
CHANGELOG.md
Normal file
18
CHANGELOG.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
- what do we need to do
|
||||||
|
|
||||||
|
## [0.0.1] - 2020-12-13
|
||||||
|
### Added
|
||||||
|
- Initial
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- None
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- None
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Louis Abel
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
2
README.md
Normal file
2
README.md
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# Ansible template role: Ipsilon
|
||||||
|
Role that fulfills some need (ipsilon )and there was not some sort of equivalent elsewhere.
|
53
defaults/main.yml
Normal file
53
defaults/main.yml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
# Defaults variables for role ipsilon
|
||||||
|
ipsilon_db_user: ipsilon
|
||||||
|
ipsilon_db_password: ThisIsNotThePassword
|
||||||
|
ipsilon_db_host: dbhost
|
||||||
|
ipsilon_db_name: ipsilon_db
|
||||||
|
idp_hostname: accounts.rockylinux.org
|
||||||
|
|
||||||
|
# The list of ipsilon packages
|
||||||
|
ipsilon_packages:
|
||||||
|
- ipsilon
|
||||||
|
- ipsilon-authform
|
||||||
|
- ipsilon-base
|
||||||
|
- ipsilon-filesystem
|
||||||
|
- ipsilon-infofas
|
||||||
|
- ipsilon-infosssd
|
||||||
|
- ipsilon-openid
|
||||||
|
- ipsilon-openidc
|
||||||
|
- ipsilon-saml2
|
||||||
|
- ipsilon-saml2-base
|
||||||
|
- ipsilon-tools-ipa
|
||||||
|
- python3-setuptools
|
||||||
|
- python3-freeipa
|
||||||
|
- httpd
|
||||||
|
- mod_ssl
|
||||||
|
- mod_auth_openidc
|
||||||
|
- mod_auth_gssapi
|
||||||
|
- git
|
||||||
|
|
||||||
|
ipsilon_booleans:
|
||||||
|
- httpd_can_network_connect
|
||||||
|
- httpd_can_network_connect_db
|
||||||
|
- httpd_dbus_sssd
|
||||||
|
- httpd_tmp_exec
|
||||||
|
- httpd_mod_auth_patm
|
||||||
|
|
||||||
|
ipsilon_openid_trusted_roots:
|
||||||
|
- https://git.rockylinux.org/
|
||||||
|
- https://vote.rockylinux.org/
|
||||||
|
- https://lists.resf.org/
|
||||||
|
|
||||||
|
ipsilon_openidc_scopes:
|
||||||
|
- ipsilon
|
||||||
|
- rocky
|
||||||
|
|
||||||
|
ipsilon_openidc_custom_scopes:
|
||||||
|
- rocky
|
||||||
|
|
||||||
|
ipsilon_fas_username: userman
|
||||||
|
ipsilon_fas_password: ThisIsNotThePassword
|
||||||
|
ipsilon_oidc_salt: data
|
||||||
|
ipsilon_saml2_salt: data
|
||||||
|
...
|
97
files/generate-oidc-token
Normal file
97
files/generate-oidc-token
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU General Public License
|
||||||
|
# version 2 as published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
"""
|
||||||
|
This script will accept some parameters and will print out some SQL you can run against the Ipsilon
|
||||||
|
database, and a token you can give to an application to authenticate against a service.
|
||||||
|
"""
|
||||||
|
import base64
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
|
||||||
|
import click
|
||||||
|
|
||||||
|
|
||||||
|
secret = base64.urlsafe_b64encode(os.urandom(64))[:64].decode()
|
||||||
|
|
||||||
|
|
||||||
|
template = """
|
||||||
|
Run this SQL against Ipsilon's database:
|
||||||
|
|
||||||
|
--------START CUTTING HERE--------
|
||||||
|
BEGIN;
|
||||||
|
insert into token values ('{uuid}','username','{service_name}@service');
|
||||||
|
insert into token values ('{uuid}','security_check','{secret}');
|
||||||
|
insert into token values ('{uuid}','client_id','{service_name}');
|
||||||
|
insert into token values ('{uuid}','expires_at','{expiration}');
|
||||||
|
insert into token values ('{uuid}','type','Bearer');
|
||||||
|
insert into token values ('{uuid}','issued_at','{now}');
|
||||||
|
insert into token values ('{uuid}','scope','{scope}');
|
||||||
|
COMMIT;
|
||||||
|
-------- END CUTTING HERE --------
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def validate_scopes(ctx, param, scopes):
|
||||||
|
"""
|
||||||
|
Ensure that the user provided at least one scope.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
ctx(click.core.Context): Unused.
|
||||||
|
param (click.core.Option): Unused.
|
||||||
|
scopes (tuple): The scopes provided by the user that we are validating.
|
||||||
|
Raises:
|
||||||
|
click.BadParameter: If the length of the scopes tuple is less than 1.
|
||||||
|
"""
|
||||||
|
if len(scopes) < 1:
|
||||||
|
raise click.BadParameter('At least one scope must be provided.')
|
||||||
|
|
||||||
|
return scopes
|
||||||
|
|
||||||
|
|
||||||
|
@click.command()
|
||||||
|
@click.argument('service_name')
|
||||||
|
@click.option('--expiration', '-e', prompt='Number of days until expiration', type=int,
|
||||||
|
help='The number of days from now until this token expires.')
|
||||||
|
@click.option('--scope', '-s', multiple=True, callback=validate_scopes,
|
||||||
|
help='A scope to include for this token. May be supplied multiple times.')
|
||||||
|
@click.option('--no-openid', is_flag=True, help='Do not use "openid" as the first item in scope.')
|
||||||
|
def generate_token(service_name, expiration, scope, no_openid):
|
||||||
|
"""
|
||||||
|
Print out SQL to insert a token in the Ipsilon database, and the token itself.
|
||||||
|
|
||||||
|
SERVICE_NAME is the name of the service that the token will be used by, (e.g., bodhi).
|
||||||
|
"""
|
||||||
|
identifier = uuid.uuid4()
|
||||||
|
|
||||||
|
now = int(time.time())
|
||||||
|
expiration = now + (expiration * 24 * 3600)
|
||||||
|
|
||||||
|
scope = list(scope)
|
||||||
|
if not no_openid:
|
||||||
|
scope.insert(0, 'openid')
|
||||||
|
scope = json.dumps(scope)
|
||||||
|
|
||||||
|
print(template.format(uuid=identifier, service_name=service_name, secret=secret,
|
||||||
|
expiration=expiration, scope=scope, now=now))
|
||||||
|
|
||||||
|
print("Token: {}_{}\n".format(identifier, secret))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
generate_token()
|
18
files/genkey.py
Normal file
18
files/genkey.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
import time
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
from jwcrypto.jwk import JWK, JWKSet
|
||||||
|
|
||||||
|
keyid = int(time.time())
|
||||||
|
keyset = JWKSet()
|
||||||
|
rsasig = JWK(generate='RSA', size=2048, use='sig',
|
||||||
|
kid='%s-sig' % keyid)
|
||||||
|
keyset.add(rsasig)
|
||||||
|
rsasig = JWK(generate='RSA', size=2048, use='enc',
|
||||||
|
kid='%s-enc' % keyid)
|
||||||
|
keyset.add(rsasig)
|
||||||
|
|
||||||
|
with open('/etc/ipsilon/openidc.key', 'w') as m:
|
||||||
|
m.write(keyset.export())
|
||||||
|
|
31
files/rocky.py
Normal file
31
files/rocky.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
from ipsilon.providers.openidc.plugins.common import OpenidCExtensionBase
|
||||||
|
|
||||||
|
|
||||||
|
class OpenidCExtension(OpenidCExtensionBase):
|
||||||
|
name = 'rocky'
|
||||||
|
display_name = 'Rocky Tokens'
|
||||||
|
scopes = {
|
||||||
|
'openid': {
|
||||||
|
'display_name': 'openid',
|
||||||
|
},
|
||||||
|
'profile': {
|
||||||
|
'display_name': 'profile',
|
||||||
|
},
|
||||||
|
'email': {
|
||||||
|
'display_name': 'email',
|
||||||
|
},
|
||||||
|
'address': {
|
||||||
|
'display_name': 'address',
|
||||||
|
},
|
||||||
|
'phone': {
|
||||||
|
'display_name': 'phone',
|
||||||
|
},
|
||||||
|
'https://mbs.rockylinux.org/oidc/mbs-submit-build': {
|
||||||
|
'display_name': 'mbs',
|
||||||
|
},
|
||||||
|
'https://id.fedoraproject.org/scope/groups': {
|
||||||
|
'display_name': 'groups',
|
||||||
|
}
|
||||||
|
}
|
BIN
files/rocky_logo.png
Normal file
BIN
files/rocky_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
11
handlers/main.yml
Normal file
11
handlers/main.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
# Defaults handlers for role ipsilon
|
||||||
|
- name: restart_sssd
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: sssd
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: reload_httpd
|
||||||
|
ansible.builtin.service:
|
||||||
|
name: httpd
|
||||||
|
state: reloaded
|
53
meta/main.yml
Normal file
53
meta/main.yml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
galaxy_info:
|
||||||
|
author: your name
|
||||||
|
description: your role description
|
||||||
|
company: your company (optional)
|
||||||
|
|
||||||
|
# If the issue tracker for your role is not on github, uncomment the
|
||||||
|
# next line and provide a value
|
||||||
|
# issue_tracker_url: http://example.com/issue/tracker
|
||||||
|
|
||||||
|
# Choose a valid license ID from https://spdx.org - some suggested licenses:
|
||||||
|
# - BSD-3-Clause (default)
|
||||||
|
# - MIT
|
||||||
|
# - GPL-2.0-or-later
|
||||||
|
# - GPL-3.0-only
|
||||||
|
# - Apache-2.0
|
||||||
|
# - CC-BY-4.0
|
||||||
|
license: MIT
|
||||||
|
|
||||||
|
min_ansible_version: 2.8
|
||||||
|
|
||||||
|
# If this a Container Enabled role, provide the minimum Ansible Container version.
|
||||||
|
# min_ansible_container_version:
|
||||||
|
|
||||||
|
#
|
||||||
|
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||||
|
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||||
|
# To view available platforms and versions (or releases), visit:
|
||||||
|
# https://galaxy.ansible.com/api/v1/platforms/
|
||||||
|
#
|
||||||
|
# platforms:
|
||||||
|
# - name: Fedora
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 25
|
||||||
|
# - name: SomePlatform
|
||||||
|
# versions:
|
||||||
|
# - all
|
||||||
|
# - 1.0
|
||||||
|
# - 7
|
||||||
|
# - 99.99
|
||||||
|
|
||||||
|
galaxy_tags: []
|
||||||
|
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||||
|
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||||
|
# remove the '[]' above, if you add tags to this list.
|
||||||
|
#
|
||||||
|
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||||
|
# Maximum 20 tags per role.
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
|
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||||
|
# if you add dependencies to this list.
|
||||||
|
|
102
tasks/main.yml
Normal file
102
tasks/main.yml
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
---
|
||||||
|
- name: Install required packages
|
||||||
|
ansible.builtin.dnf:
|
||||||
|
name: "{{ ipsilon_packages }}"
|
||||||
|
state: installed
|
||||||
|
tags:
|
||||||
|
- packages
|
||||||
|
|
||||||
|
- name: Initialize ipsilon if needed
|
||||||
|
ansible.builtin.command: >
|
||||||
|
ipsilon-server-install
|
||||||
|
--secure yes
|
||||||
|
--openid yes
|
||||||
|
--openidc yes
|
||||||
|
--saml2 yes
|
||||||
|
--ipa yes
|
||||||
|
--info-sssd yes
|
||||||
|
--form yes
|
||||||
|
--gssapi-httpd-keytab /etc/httpd.keytab
|
||||||
|
--admin-user admin
|
||||||
|
--hostname {{ idp_hostname }}
|
||||||
|
args:
|
||||||
|
creates: /etc/ipsilon/idp/ipsilon.conf
|
||||||
|
no_log: true
|
||||||
|
register: ipsilon_install
|
||||||
|
tags:
|
||||||
|
- init
|
||||||
|
|
||||||
|
- name: Set booleans
|
||||||
|
ansible.posix.seboolean:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: true
|
||||||
|
persistent: true
|
||||||
|
loop: "{{ ipsilon_booleans }}"
|
||||||
|
tags:
|
||||||
|
- selinux
|
||||||
|
|
||||||
|
- name: Branding ipsilon with logo
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: rocky_logo.png
|
||||||
|
dest: "{{ item }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
with_items:
|
||||||
|
- /usr/share/ipsilon/ui/img/brand-lg.png
|
||||||
|
- /usr/share/ipsilon/ui/img/brand.png
|
||||||
|
|
||||||
|
- name: Distributing openidc genkey script
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: genkey.py
|
||||||
|
dest: /var/lib/ipsilon/idp/genkey.py
|
||||||
|
mode: '0755'
|
||||||
|
owner: ipsilon
|
||||||
|
group: ipsilon
|
||||||
|
|
||||||
|
- name: Generate oidc token script
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: generate-oidc-token
|
||||||
|
dest: /var/lib/ipsilon/idp/generate-oidc-token
|
||||||
|
mode: '0755'
|
||||||
|
owner: ipsilon
|
||||||
|
group: ipsilon
|
||||||
|
|
||||||
|
- name: Distribute ipsilon.conf
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "ipsilon.conf"
|
||||||
|
dest: /etc/ipsilon/idp/ipsilon.conf
|
||||||
|
owner: ipsilon
|
||||||
|
group: ipsilon
|
||||||
|
mode: 0600
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
notify:
|
||||||
|
- restart_httpd
|
||||||
|
|
||||||
|
- name: Distribute configuration.conf
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "configuration.conf"
|
||||||
|
dest: /etc/ipsilon/idp/configuration.conf
|
||||||
|
owner: ipsilon
|
||||||
|
group: ipsilon
|
||||||
|
mode: 0600
|
||||||
|
tags:
|
||||||
|
- config
|
||||||
|
notify:
|
||||||
|
- restart_httpd
|
||||||
|
|
||||||
|
- name: Configure SSSD part 1
|
||||||
|
ansible.builtin.replace:
|
||||||
|
path: /etc/sssd/sssd.conf
|
||||||
|
regexp: ^ldap_user_extra_attrs = [\w,\s]+$
|
||||||
|
replace: ldap_user_extra_attrs = mail, street, locality, st, postalCode, telephoneNumber, givenname, sn, fasTimeZone, fasLocale, fasIRCNick, fasGPGKeyId, fasCreationTime, fasStatusNote, fasRHBZEmail, fasGitHubUsername, fasGitLabUsername, fasWebsiteURL, fasIsPrivate, ipaSshPubKey
|
||||||
|
notify: restart_sssd
|
||||||
|
|
||||||
|
- name: Configure SSSD part 2
|
||||||
|
ansible.builtin.replace:
|
||||||
|
path: /etc/sssd/sssd.conf
|
||||||
|
regexp: ^user_attributes = [\w,\s]+$
|
||||||
|
replace: user_attributes = +mail, +street, +locality, +st, +postalCode, +telephoneNumber, +givenname, +sn, +fasTimeZone, +fasLocale, +fasIRCNick, +fasGPGKeyId, +fasCreationTime, +fasStatusNote, +fasRHBZEmail, +fasGitHubUsername, +fasGitLabUsername, +fasWebsiteURL, +fasIsPrivate, +ipaSshPubKey
|
||||||
|
notify: restart_sssd
|
||||||
|
...
|
74
templates/configuration.conf
Normal file
74
templates/configuration.conf
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
[info_config]
|
||||||
|
sssd preconfigured = True
|
||||||
|
global enabled = sssd,nss,fas
|
||||||
|
fas fas url = https://accounts.rockylinux.org/
|
||||||
|
fas fas proxy client user agent = Ipsilon v1.0
|
||||||
|
fas fas insecure auth = False
|
||||||
|
fas bind username = {{ ipsilon_fas_username }}
|
||||||
|
fas bind password = {{ ipsilon_fas_password }}
|
||||||
|
fas preconfigured=True
|
||||||
|
|
||||||
|
[sssd_data]
|
||||||
|
|
||||||
|
[nss_data]
|
||||||
|
|
||||||
|
[fas_data]
|
||||||
|
|
||||||
|
[login_config]
|
||||||
|
fas fas url = https://accounts.rockylinux.org
|
||||||
|
fas fas proxy client user agent = Ipsilon v1.0
|
||||||
|
fas fas insecure auth = False
|
||||||
|
fas username text = RAS Username
|
||||||
|
fas password text = Password
|
||||||
|
fas help text = Login with your RAS credentials
|
||||||
|
global enabled = gssapi,form
|
||||||
|
|
||||||
|
[gssapi_data]
|
||||||
|
|
||||||
|
[form_data]
|
||||||
|
|
||||||
|
[provider_config]
|
||||||
|
openidc database url = postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}
|
||||||
|
openidc static database url = postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}
|
||||||
|
openidc enabled extensions = ipsilon, mbs, fedora-account
|
||||||
|
openidc endpoint url = https://{{ idp_hostname }}/idp/openidc/
|
||||||
|
openidc documentation url = https://ipsilonproject.org/doc/openidc/
|
||||||
|
openidc policy url = http://www.example.com/
|
||||||
|
openidc tos url = http://www.example.com/
|
||||||
|
openidc idp key file = /var/lib/ipsilon/idp/openidc/openidc.key
|
||||||
|
openidc idp sig key id = 1633884828-sig
|
||||||
|
openidc idp subject salt = {{ ipsilon_oidc_salt }}
|
||||||
|
openidc allow dynamic client registration = True
|
||||||
|
openidc default attribute mapping = [["*", "*"], ["_groups", "groups"], [["_extras", "cla"], "cla"], ["fullname", "name"], ["_username", "nickname"], ["_username", "preferred_username"], ["fasIRCNick", "ircnick"], ["fasLocale", "locale"], ["fasTimeZone", "zoneinfo"], ["fasTimeZone", "timezone"], ["fasWebsiteURL", "website"], ["fasGPGKeyId", "gpg_keyid"], ["ipaSshPubKey", "ssh_key"], ["fasIsPrivate", "privacy"], ["fullname", "human_name"]]
|
||||||
|
openidc default allowed attributes = ["*"]
|
||||||
|
openidc access token lifetime = 3600
|
||||||
|
openidc refresh token lifetime = 31536000
|
||||||
|
global enabled = openidc,saml2,openid
|
||||||
|
openid default allowed attributes = ["*"]
|
||||||
|
openid database url = postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}
|
||||||
|
openid default email domain =
|
||||||
|
openid endpoint url = https://{{ idp_hostname }}/idp/openid/
|
||||||
|
openid identity url template = https://{{ idp_hostname }}/idp/openid/id/%(username)s
|
||||||
|
openid trusted roots = {{ ipsilon_openid_trust_roots }}
|
||||||
|
openid untrusted roots =
|
||||||
|
openid enabled extensions = Attribute Exchange, CLAs, Fedora Teams, Simple Registration, Teams, API
|
||||||
|
openid default attribute mapping = [["*", "*"], ["_groups", "groups"], [["_extras", "cla"], "cla"], ["fullname", "name"], ["_username", "nickname"], ["_username", "preferred_username"], ["fasIRCNick", "ircnick"], ["fasLocale", "locale"], ["fasTimeZone", "zoneinfo"], ["fasTimeZone", "timezone"], ["fasWebsiteURL", "website"], ["fasGPGKeyId", "gpg_keyid"], ["ipaSshPubKey", "ssh_key"], ["fasIsPrivate", "privacy"], ["fullname", "human_name"], ["mail", "email"]]
|
||||||
|
saml2 idp storage path = /var/lib/ipsilon/idp/saml2
|
||||||
|
saml2 idp metadata file = metadata.xml
|
||||||
|
saml2 idp certificate file = /var/lib/ipsilon/idp/saml2/idp.pem
|
||||||
|
saml2 idp key file = /var/lib/ipsilon/idp/saml2/idp.key
|
||||||
|
saml2 idp nameid salt = {{ ipsilon_saml2_salt }}
|
||||||
|
saml2 idp metadata validity = 1825
|
||||||
|
saml2 session database url = postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}
|
||||||
|
|
||||||
|
[openidc_data]
|
||||||
|
|
||||||
|
[saml2_data]
|
||||||
|
|
||||||
|
[openid_data]
|
||||||
|
|
||||||
|
[authz_config]
|
||||||
|
global enabled = allow
|
||||||
|
|
||||||
|
[allow_data]
|
||||||
|
|
24
templates/ipsilon.conf
Normal file
24
templates/ipsilon.conf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
[global]
|
||||||
|
debug = True
|
||||||
|
tools.log_request_response.on = True
|
||||||
|
template_dir = "templates"
|
||||||
|
cache_dir = "/var/cache/ipsilon"
|
||||||
|
cleanup_interval = 30
|
||||||
|
db.conn.log = False
|
||||||
|
db.echo = False
|
||||||
|
|
||||||
|
base.mount = "/idp"
|
||||||
|
base.dir = "/usr/share/ipsilon"
|
||||||
|
#admin.config.db = "configfile:///etc/ipsilon/idp/configuration.conf"
|
||||||
|
admin.config.db = "postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}"
|
||||||
|
user.prefs.db = "postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}"
|
||||||
|
transactions.db = "postgresql://{{ ipsilon_db_user }}:{{ ipsilon_db_password }}@{{ ipsilon_db_host }}/{{ ipsilon_db_name }}"
|
||||||
|
|
||||||
|
tools.sessions.on = True
|
||||||
|
tools.sessions.name = "idp_ipsilon_session_id"
|
||||||
|
tools.sessions.storage_type = "file"
|
||||||
|
tools.sessions.storage_path = "/var/lib/ipsilon/idp/sessions"
|
||||||
|
tools.sessions.path = "/idp"
|
||||||
|
tools.sessions.timeout = 30
|
||||||
|
tools.sessions.httponly = True
|
||||||
|
tools.sessions.secure = True
|
3
vars/main.yml
Normal file
3
vars/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
# vars file - Nothing should really go here but dynamic imports
|
||||||
|
# and truely static items
|
Loading…
Reference in New Issue
Block a user