CAS als OAuth/OIDC Provider benutzen
CAS bietet OAuth/OIDC als Protokoll zur Authentifizierung samt SSO/SSL an. Im Folgenden werden die Spezifikation des OAuth Protokolls in CAS beschrieben.
OAuth/OIDC Service Account für Dogu erstellen
Damit ein Dogu die OAuth/OIDC-Endpunkte des CAS benutzen kann, muss sich dieser beim CAS als Client anmelden.
Dafür kann die Aufforderung eines CAS-Service Account in der dogu.json
des betreffenden Dogus hinterlegt werden.
Eintrag für einen OAuth Client:
"ServiceAccounts": [
{
"Type": "cas",
"Params": [
"oauth"
]
}
]
Eintrag für einen OIDC Client:
"ServiceAccounts": [
{
"Type": "cas",
"Params": [
"oidc"
]
}
]
Die Credentials des Service Accounts werden zufällig generiert (siehe create-sa.sh)
und verschlüsselt im etcd unter dem Pfad /config/<dogu>/sa-cas/<oauth|oidc>_client_id
und /config/<dogu>/sa-cas/<oauth|oidc>_client_secret
hinterlegt.
Die credentials setzten sich aus der CLIENT_ID
und dem CLIENT_SECRET
zusammen.
Für den CAS wird das CLIENT_SECRET
als Hash im etcd unter dem Pfad /config/cas/service_accounts/<oidc|oauth>/<CLIENT_ID>
abgelegt.
OAuth Endpunkte und Ablauf
Die folgenden Schritte beschreiben einen erfolgreichen Ablauf der OAuth-Authentifizierung.
- Anfordern eines Kurzzeit-Tokens: Authorize-Endpunkt
- Kurzzeittoken gegen ein Langzeittoken tauschen: AccessToken-Endpunkt
- Langzeittoken kann nun zu Authentifizierung gegen Ressourcen benutzen werden. Derzeit bietet CAS nur das Profil der User als Resource an: Profil-Endpunkt