Hallo.
Ich würde gerne einen Dienst per keycloak / SSO anbinden. Dazu habe ich eine Übersicht von Angaben erhalten, die benötigt werden, um das zu realisieren. Es geht um „OpenID Connect“.
Nun ist es ja so, dass der edulution-Host bereits ein fix und fertiges keycloak mitbringt und die User bereits alle im Realm „edulution“ enthalten sind. Hat jemand damit bereits weitere Dienste (Clients) angebunden und könnte hier ein paar hilfreiche Tipps diesbzgl. geben?
die meisten adressen findest du wenn du in keyclaok auf realm settings klickst und dann runterscrollst und auf den blauen link klickst „OpenId Configuration Endpoint“. dann wirst du auf die .well-known url geleitet. die kann man auch direkt eingeben, aber dann ist die seite nicht so schön formatiert. hier der screen shot:
allerdings hier nicht das realm master sondern eben edulaiton auswählen
für client id und secret musst du einen neuen client erstellen mit authorization an und dann die url des dienstes eintragen an den weitergeleitet wird. zb https:/meindienst.com/oauth/* oder sowas… (haengt vom dienst ab)… wenn das falsch eingstellt ist kommt ein berechtigungs fehler bei der weiterleitung
nach erstellen des clients findest du das secret unter credentials.
die claims… das weiss ich jetzt net wie das in edulution eingerichtet ist…
die claims… das weiss ich nicht wie die in edulution eingerichtet sind…
da gibt standard sachen aber ne schulid ist ja net standard
die claims sind aber im scope enthalten der oft openid profile heisst und dann eben standard claims drin hat…
Hallo @sucher
Ich habe mir die Sache nochmal genauer angesehen. Viele der gesuchten Einträge kann man tasächlich finden, wenn man sich den .well-known Eintrag ansieht. Die noch offenen Punkte betreffen die Einträge UserID-Claim, SchulID-Claim und GroupID-Claim.
Offenbar stammen die Daten ursprünglich von einem Univention Server . Dort wird das scheinbar in dieser Form verwendet
Ich bin in Sachen keycloak aber nicht fit genug, um beurteilen zu können, wie man diese client-Scopes einrichten müsste. Sehe ich das richtig, dass der Dienstanbieter wissen muss, wie diese Einträge auszusehen haben?
Hallo Jens,
ja, den Thread kenne ich und habe ich mir auch gerade nochmal vorgenommen. Die Integration hat @Tobi super dokumentiert.
Es hilft in meinem Fall aber leider nur bedingt weiter, da ich nur die eine Hälfte des Zugangs verwalten und einstellen kann – während die andere Seite beim Dienstleister liegt und ich dort nichts einsehen kann. Daher kommt mir diese SSO-Einrichtung auch ein bisschen wie der Blick in die Glaskugel vor.
Da andere Schulen den Dienst offenbar mit einem Univention-Server anbinden, kann es ja sein, dass die gesuchten Felder da bereits alle vorhanden oder ganz einfach zu ermitteln sind … aber ich stehe etwas ratlos da und weiß nicht so recht, wie ich weitermachen soll.
Ohne Hilfe des Dienstleisters wird das meiner Meinung nach nix, oder?
Viele Grüße,
Michael
wenn dir der provider des dienstes dir sagen kann oder wenigstens dokumentiert hat welche infos er braucht ist das sehr hilfreich… aber ich hab auch webuntis eingerichtet gekriegt… und da bekommt man jetzt auch net so viel hilfe… also geht schon… aber wenn man wo nachfragen kann gehts vielleicht schneller…
Die Tokenclaims sind in etwas sowas wie bei LDAP die Datenfelder…
wenn du weisst welche ein Token haben soll, kannst du das keycloakseitig schon so einrichten dass die Tokens die Information auch haben. Ist jetzt die Frage ob du das lieber fix konfiguriert haben willst oder verstehen willst was passiert…
Ich hatte kuerzlich die KI einen IMAP Proxy basteln lassen… der oauth2 faehig ist.
Wenn an den IMAPproxy ein oauth2 faehiger client dran kofniguriert ist, schickt er die anmeldetokens mit einem IMAP Befehl AUTHENTICATE XOAUTH an den imapserver. der empfangene token kann dann entschluesselt werden (base64) und du siehst dann als json was da genau gesendet wurde.
man kann dann den empfangenen token zurekc an keycloak schicken an dne introspect endpoint und validieren oder einen userinfo token anfordern usw
das konnte mir die KI ganz gut erklären wie das geht…
und dann sieht man welche Infos keycloaks da liefert… das hat das verständnis für mciha auf alle fälle bereichert… wirst du jetzt aber nicht unbedingt brauchen…
Im Endeffekt wollen die von dir ja 3 Tokenclaims haben.
UserID-Claim… koennte jetzt eventuell der Token username gemeint sein wenn es der anmeldename ist… Ist es ne GUID aus LDAP? dann musst du das LDAP Feld ja irgendwo her erst in keycloak einlesen und dann mit einem mapper diese Information in dem Token bereistellen, dem du einen beliebigen Namen geben kannst.
SchulID-Claim…? wenn du nur eine Schule bist… was meinen die da…?? einen festen string?
GroupID-Claim… vermutlich gruppenzugehörigkeiten?
im Prinzip ist der standard client scope immer profile. in dem client scope profile stecken schon ganz viele infos drin und viele tokens. das ist quasi nen json wo die inhalte in der form „username: Adam“ usw drin stehen
Klicke auf client scopes, dann auf profile dann auf mapper
dann landest du in diesem fenster:
Hier siehst du alle Infos die dem Client gegeben werden wenn er Zugriff hat auf den client scope profile… da findest du auch den tokenclaim username (mehr als 10 items anziegen lassen
bloed… gruppen werden nicht angezieigt… also machst du oben add mapper und kannst einen claim hinzufügen wo dann die info hinterlegt ist. für gruppen gibt es schon einen vorgefertigten clam… aber dass er funktioniert muss natürlich die ldap anbindung auch gruppen auslesen… ich gehmal davon aus das edulution das schon sowieso schon macht in der konfiguration…
achja nochwas… wenn die tokenclaims nicht richtig sind…
dann klappt ja beim client die account zuordnung irgendwie… je nach dienst… kriegst du vielleicht doch ne fehlermeldung angezeigt was er nicht finden kann. manchmal hilft auch ein blick in die develloper browser tools um zu sehen wo es hakt…
Und: In diesem Screenshot (vgl. public_api_docs/OIDC_Connection/ClientScopes_03.png at main · BILDUNGSLOGIN/public_api_docs · GitHub ) sieht man, dass bereits alle möglichen BiLo-Einträge unter „mapper“ vorhanden sind. Leider ist aber nicht dokumentiert, wie die dort hingekommen sind bzw. wie die Einträge dahinter genau auszusehen haben.
Von daher bin ich leider auch mit der Anleitung bisher noch nicht weitergekommen als das, was abgebildet ist.
Hast Du noch eine gute Idee?
Viele Grüße,
Michael
Das mit den BiLo Mappern kann ich dir auch nicht sagen. In der Anleitung steht ja nichts über die. Meine Vermutung ist dass die in dem Testsystem halt vorhanden sind aber nicht relevant für die Anbindung sind und sie eher zusatzinfos beinhalten („support email adresse“)
Das user_id bezieht sich auf die Accounts in Keycloak, die UUID die keycloak beim erzeugen eines nutzers erstellt. Da schaust du dir mal ein user an in keycloak am besten; bei user mal nach einem Benutzer suchen und anschauen welche attribute es da gibt. user_id muesste also das sein was beim user unter ID hinterlegt ist…
der anmeldename in keycloak ist aber unter username hinterlegt.
ich zitiere jetzt mal die anleitung die du verlinkt hast mti dem screenshot darunter " BILDUNGSLOGIN requires a persistent user- id for each user. If you cannot or don’t want to use a standard value like sub or preferred_username, you can set this value from another user- attribute as follows…"
ich sehe es also in deiner entscheidungsfreiheit was du da nimmst…
sub or preferred username waere der anmeldename in keycloak und auch in linuxmuster.
ich weiss net bei linuxmuster ob bentuzernamen bei schuljahreswechsel wiederverwendet werden und ob das ein problem sein könnte. ansonsten denke ich sollte es einfach der standard username sein
Hi. Ok, danke für die Zusatzinfos.
Ich denke, dass beim BiLo alle User ein neues Konto mit dem gleichen Username bekommen, der auch auf dem v7-Server verwendet wird. Sicher bin ich da aber nicht, denn ich kann’s ja nicht nachsehen.
Ich habe mir aber gerade mal einen v7-User im keycloak → edulution angeschaut … da gibt es kein Feld namens user_id … wohl aber ganz am Ende LDAP_ID in dem der Username steht.
(Daneben gibt es aber auch die Felder ID (langer alphanumerischer Eintrag)) sowie einfach nur Username, wo ebenfalls der gesuchte Benutzername erscheint. Diese Felder sind hier aber vermutlich alle nicht gemeint, richtig? )
Wäre doch schick, wenn es doch noch klappt.
Viele Grüße,
Michael
der username steht in mehrern attributen drin
ldap_id username sub … ist wahrscheinlich alles dasselbe, also inhaltsgleich
user_ wäre der alphnumerische eintrag unter ID würde ich meinen
ich meine nicht von einem bestehenden schueler sondern:
Judith Mueller wird in die Schule aufgenommen. Verlässt die Schule.
Eine andere Judith Mueller wird in die Schule aufgenommen.
Haben dann beide verschiedene Benutzernamen obwohl die eine schon lange weg und geloescht ist? dieses problem hatte ich auch schon in moodle mal so… aber da kann ich selber kontrollieren dass alte user geloescht werden. wie das beim bilo ist weiss ich nicht…