version: 1 metadata: labels: blueprints.goauthentik.io/instantiate: "true" name: Alpina - OAuth2 Apps entries: {% set apps = { "Grafana": { "redirect_uri": "https://grafana."~ domain ~"/login/generic_oauth", "icon": "https://grafana."~ domain ~"/public/img/grafana_icon.svg", "client_secret": auth_grafana_client_secret, "ui_group": "Services", "allowed_for_groups": ["admins"], }, "Gitea": { "redirect_uri": "https://gitea."~ domain ~"/user/oauth2/Authentik/callback", "icon": "https://gitea."~ domain ~"/assets/img/logo.svg", "client_secret": auth_gitea_client_secret, "ui_group": "Apps", "allowed_for_groups": ["admins", "users"], }, "Nextcloud": { "redirect_uri": "https://nc."~ domain ~"/apps/sociallogin/custom_oidc/authentik", "icon": "https://nc."~ domain ~"/apps/theming/favicon", "client_secret": auth_nextcloud_client_secret, "ui_group": "Apps", "allowed_for_groups": ["admins", "users"], }, } -%} {% for app in apps.keys() -%} - identifiers: name: {{ app }} model: authentik_providers_oauth2.oauth2provider id: {{ app }} attrs: authorization_flow: !Find [authentik_flows.flow, [slug, default-provider-authorization-implicit-consent]] invalidation_flow: !Find [authentik_flows.flow, [slug, default-provider-invalidation-flow]] client_type: confidential client_id: {{ app | lower }} client_secret: {{ apps[app]["client_secret"] }} property_mappings: - !Find [authentik_providers_oauth2.scopemapping, [scope_name, openid]] - !Find [authentik_providers_oauth2.scopemapping, [scope_name, email]] - !Find [authentik_providers_oauth2.scopemapping, [scope_name, profile]] redirect_uris: - matching_mode: strict url: {{ apps[app]["redirect_uri"] }} signing_key: !Find [authentik_crypto.certificatekeypair, [name, "authentik Self-signed Certificate"]] - identifiers: slug: {{ app | lower }} model: authentik_core.application id: app-{{ app }} attrs: name: {{ app }} group: "{{ apps[app]["ui_group"] }}" meta_description: "Hello, I'm {{ app }}!" meta_publisher: Alpina icon: "{{ apps[app]["icon"] }}" open_in_new_tab: true provider: !KeyOf {{ app }} {% for group in apps[app]["allowed_for_groups"] -%} - identifiers: group: !Find [authentik_core.group, [name, {{ group }}]] target: !KeyOf app-{{ app }} model: authentik_policies.policybinding attrs: order: 10 {% endfor %} {% endfor %}