Status | ||||
---|---|---|---|---|
|
Inhalt |
---|
Was ist oAuth2 (open Authorization) und wofür wird es verwendet?
- oAuth2 ist ein Protokoll, welches dem Nutzer ermöglicht mehrere (externe) Dienste, die einer Anmeldung bedürfen, mit nur einem DLRG-Account zu nutzen. Das kann z.B. interessant sein, wenn eine Gliederung eine eigene Cloud (nicht die DLRG-Cloud) betreibt und möchte, dass sich die Mitglieder der Gliederung über den DLRG-Account anmelden können. So müssten sich die Mitglieder nicht mehrere Passwörter merken
- ein gutes Beispiel für oAuth ist z.B. die Möglichkeit sich mit seinem Facebook-Account bei Spotify anzumelden. Hier kommt oAuth ebenfalls zum Einsatz
- Des Weiteren wird das Anmeldeverfahren durch oAuth2 besonders sicher, da der Drittanbieter (nicht DLRG eigen) keine Account-Passwörter mehr übermittelt bekommt.
Einrichtung
- Die Einrichtung muss vom Betreiber des externen Dienstes, z.B. die Gliederung mit eigener Cloud, selbst vorgenommen werden.
- Es erfolgt seitens der DLRG kein Support bei der Einrichtung von oAuth2 auf eigenen Servern!
...
technische Erklärung wie oAuth2 funktioniert
Erste Anfrage:
GET https://www.dlrg.net/oauth2/authorize
mit den Parametern:
- response_type=code
- client_id={vom AK IT erhaltene Client-ID}
- redirect_uri={URL des eigenen Dienstes}
- scope={eine Liste der Berechtigungen, die für den Dienst vom Nutzer erbeten werden}properties
- state={ein CSRF-Token} (optional)
Wenn der Benutzer sich einloggt und die Anfrage bestätigt erfolgt eine Weiterleitung auf die URl des eigenen Dienstes mit den Parametern:
- code={der Autorisierungscode}
- state={das CSRF-Token der vorherigen Anfrage}
Nach dem Login und Bestätigung der Rechtegewährung muss der eigene Dienst folgende Abfrage durchführen:
POST https://www.dlrg.net/oauth2/token
mit den Parametern:
- grant_type=authorization_code
- client_id={vom AK IT erhaltene Client-ID}
- client_secret={vom AK IT erhaltenes Client-Passwort}
- redirect_uri={URL des eigenen Dienstes}
- code={der Autorisierungscode}
Es wird als Antwort ein JSON-Objekt gesendet mit folgenden Eigenschaften:
- token_type: Bearer
- expires_in: 3600
- access_token: {das Token, welches u.a. die Benutzer-ID und die erhaltenen Rechte [Scopes] beinhaltet)
- refresh_token: {ein "Auffrischungstoken", mit dem ein neues Token generiert werden kann, sollte dieses ungültig geworden sein}
Derzeit sind folgende Rechte vom Nutzer beantragbar:
- profile : das Recht, den Benutzername, Vorname und Nachname des Nutzers abfragen zu dürfen
- email : das Recht, die Email-Adresse des Nutzers abfragen zu dürfen
Diese Informationen sind abzufragen unter:
GET https://www.dlrg.net/oauth2/userinfo
mit dem "Authorization"-Header vom Typ "Bearer" und dem erhaltenen Token