DFN-AAI (Deutsche Forschungsnetz Authentication and Authorization Infrastructure) is the German Shibboleth federation that enables federated authentication for universities and research institutions. This guide explains how to integrate openDesk Edu with DFN-AAI.
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ User │ │ DFN-AAI IdP │ │ openDesk │
│ (Browser) │ │ (Shibboleth)│ │ Edu SP │
└──────┬──────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ 1. Access Service │ │
├─────────────────────────────►│ │
│ │ │
│ 2. Redirect to DFN-AAI IdP │
│◄─────────────────────────────┼──────────────────────────────┤
│ │ │
│ 3. Login at DFN-AAI IdP │ │
├─────────────────────────────►│ │
│ │ │
│ 4. SAML Assertion │ │
│◄─────────────────────────────┼──────────────────────────────┤
│ │ │
│ 5. Access to Service │
├─────────────────────────────────────────────────────────────►│
│ │
│ 6. Token from Keycloak │
│◄─────────────────────────────────────────────────────────────┤
Contact your institution’s DFN-AAI administrator to register openDesk Edu as a Service Provider.
Required Information:
https://yourdomain.de/saml/sp/metadataurn:auth:opendesk:edu:yourdomainhttps://yourdomain.de/saml/sp/ssohttps://yourdomain.de/saml/sp/sloEdit helmfile/charts/keycloak/values.yaml:
# Enable SAML SP
keycloak:
enabled: true
auth:
saml:
enabled: true
idp:
name: "DFN-AAI"
ssoUrl: "https://idp.yourinstitution.de/idp/profile/SAML2/Redirect/SSO"
sloUrl: "https://idp.yourinstitution.de/idp/profile/SAML2/POST/SLO"
metadataUrl: "https://idp.yourinstitution.de/idp/shibboleth"
nameIdFormat: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
sp:
entityId: "urn:auth:opendesk:edu:yourdomain"
nameIdFormat: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
assertionConsumerServiceUrl: "https://yourdomain.de/saml/sp/sso"
singleLogoutServiceUrl: "https://yourdomain.de/saml/sp/slo"
DFN-AAI provides standard eduPerson attributes. Map these to Keycloak claims in helmfile/charts/keycloak/values.yaml:
keycloak:
auth:
saml:
attributeMapper:
- name: "eduPersonPrincipalName"
friendlyName: "eduPersonPrincipalName"
samlAttributeName: "eduPersonPrincipalName"
userAttributeName: "username"
- name: "mail"
friendlyName: "mail"
samlAttributeName: "mail"
userAttributeName: "email"
- name: "displayName"
friendlyName: "displayName"
samlAttributeName: "displayName"
userAttributeName: "firstName"
- name: "sn"
friendlyName: "sn"
samlAttributeName: "sn"
userAttributeName: "lastName"
- name: "eduPersonAffiliation"
friendlyName: "eduPersonAffiliation"
samlAttributeName: "eduPersonAffiliation"
userAttributeName: "affiliation"
- name: "eduPersonEntitlement"
friendlyName: "eduPersonEntitlement"
samlAttributeName: "eduPersonEntitlement"
userAttributeName: "entitlement"
Create Keycloak groups and map DFN-AAI affiliations to these groups:
keycloak:
realm:
roles:
- name: student
description: "Student access"
federationId: "student"
- name: employee
description: "Employee access"
federationId: "employee"
- name: faculty
description: "Faculty access"
federationId: "faculty"
- name: staff
description: "Staff access"
federationId: "staff"
roleMappings:
- affiliation: "student"
role: "student"
- affiliation: "employee"
role: "employee"
- affiliation: "faculty"
role: "faculty"
- affiliation: "staff"
role: "staff"
Ensure backchannel logout is configured for DFN-AAI:
keycloak:
auth:
saml:
backchannel:
enabled: true
logoutUrl: "https://idp.yourinstitution.de/idp/profile/SAML2/SLO/SOAP"
Test your SAML SP metadata:
curl -X GET https://yourdomain.de/saml/sp/metadata
Verify:
Check that DFN-AAI IdP is releasing required attributes:
kubectl logs -n keycloak deployment/keycloak -f
Look for:
eduPersonPrincipalName - Your institutional usernamemail - Your institutional emaildisplayName - Your display namesn - Your surnameeduPersonAffiliation - Your affiliation (student/employee/faculty/staff)Problem: DFN-AAI cannot retrieve your metadata Solution:
Problem: User cannot login - attributes not released Solution:
Problem: User has wrong roles/permissions Solution:
eduPersonAffiliation value returned by IdPProblem: Logging out of openDesk Edu doesn’t logout from IdP Solution:
Enable verbose logging for Keycloak SAML:
keycloak:
logging:
level:
root: DEBUG
org.keycloak.saml: DEBUG
org.keycloak.saml.processing: TRACE
For DFN-AAI-specific issues, contact your institution’s DFN-AAI administrator or the DFN-AAI support team.
For openDesk Edu configuration issues, open an issue on GitHub.