140 likes | 322 Views
Google Apps identiteetinhallinta. Jyväskylän yliopisto, IT-palvelut Viljo Viitanen viljo.v.viitanen@jyu.fi. Sisältö. Johdanto Kertakirjautuminen Erillinen salasana Käyttäjätunnusten hallinta Vanhojen käyttäjien migrointi Konfiguraatio- ja koodiesimerkkejä. Johdanto.
E N D
Google Apps identiteetinhallinta Jyväskylän yliopisto, IT-palvelut Viljo Viitanen viljo.v.viitanen@jyu.fi
Sisältö Johdanto Kertakirjautuminen Erillinen salasana Käyttäjätunnusten hallinta Vanhojen käyttäjien migrointi Konfiguraatio- ja koodiesimerkkejä
Johdanto Yliopisto päätti että vanhalle sähköpostijärjestelmälle on tehtävä jotain. Käytössä oli ”unix”-posti (uw imapd), uudempi Cyrus imapd ja Novell Groupwise. Sentään Groupwisestä on päästy jo eroon. Henkilökunta ja henkilökuntaan verrattavat jatko-opiskelijat ovat Microsoft Exchangessa, viimeiset siirrot ovat käynnissä. Opiskelijat päätettiin ulkoistaa, ja valinta osui Googleen Apuna projektissa oli Googlen suomalainen jälleenmyyjä Käynnissä on myös identiteetinhallinnan uudistaminen...
Kertakirjautuminen Google tarjoaa SAML-tekniikkaan perustuvan kertakirjautumisen Shibboleth-ohjelmisto toimii mainiosti Kertakirjautuminen rajoitettu WWW:n Olisi myös mahdollista synkronoida salasanoja, mutta... Estää käytännössä Googlen "two step" kirjautumisen toiminnan
Käyttäjätunnusten hallinta Käytetään sekä Googlen rajapintaa pythonilla että Googlen Directory Sync-työkalua Rajapinnalla: tunnusten luonti ”lennossa”, lähettäjäosoitteen asetus Directory Syncillä: nimenmuutokset, voimassaolo, haetaan käyttäjät paikallista ldapista ryhmällä
Vanhojen käyttäjien migrointi Aloitus käyttäjähallintoportaalista Teknisesti otetaan käyttäjän salasana rsa-kryptattuna tietokantaan hetkeksi talteen Siirto tehdään imap:n yli imapsync-nimisellä työkalulla, meidän päässä oikea salasana, googlen päässä satunnainen Ongelmia on ollut jonkin verran: Jotkut postit eivät siirry, toisilla imap-kirjautuminen Cyrukseen ei onnistu Vaihtoehto: rajapinta, vaatii enemmän koodausta
Hankaluuksia... Päätettiin antaa myös henkilökunnalle @jyu.fi -google -tunnukset Tunnuksia oli jo rekisteröity paljon, vähän yli 100 kpl etunimi.sukunimi@jyu.fi -muotoiset piti uudelleennimetä tunnus@jyu.fi -muotoisiksi On mahdollista, että samalla (vanhalla) sähköpostiosoitteella on kaksi erillistä google -tiliä... ("varsinainen" google.com -tili sekä "google apps" -tili)
Google Appsin konfiguraatio Shibboleth IDP:n allekirjoitussertifikaatti SAML SSO-osoite ”domain specific issuer” jos kirjaudutaan samasta IDP:stä moneen google apps -domainiin Käyttäjätunnus välitetään SAML ”NameID”:nä, ei attribuuttina
Shibbolethin konfiguraatio Metadata: <EntityDescriptor entityID="google.com/a/student.jyu.fi" xmlns="urn:oasis:names: tc:SAML:2.0:metadata"> <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:email</NameIDFormat> <AssertionConsumerService index="1" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.google.com/a/student.jyu.fi/acs" /> <AttributeConsumingService index="1" isDefault="true"> <ServiceName xml:lang="en">Isa mail</ServiceName> <ServiceName xml:lang="fi">Isa-posti</ServiceName> </AttributeConsumingService> </SPSSODescriptor> </EntityDescriptor> Attribute resolver: <resolver:AttributeDefinition id="googleprincipal" xsi:type="PrincipalName" xmlns="urn:mace:shibboleth:2.0:resolver:ad" > <resolver:AttributeEncoder xsi:type="SAML2StringNameID" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:email" /> </resolver:AttributeDefinition> Attribute filter: <AttributeFilterPolicy id="googlestudent"> <PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="google.com/a/student.jyu.fi" /> <AttributeRule attributeID="googleprincipal"><PermitValueRule xsi:type="basic:ANY" /> </AttributeRule></AttributeFilterPolicy>
Koodiesimerkkejä 1 Käyttäjätunnusten luonti. Merkistöjen kanssa oli hankaluuksia... displayname=sys.argv[4].decode("latin_1").encode("utf-8") surname=sys.argv[5].decode("latin_1").encode("utf-8") ... service.CreateUser(username, surname, displayname, googlepassword, suspended='false') service.CreateNickname(username, alias) ... name=displayname+" "+surname … client.CreateSendAs(username=username, name=name.decode("utf-8"), address=alias+'@'+domain, make_default=True)
Koodiesimerkkejä 2 Salasanan vaihto. Dokumentaatio puutteellinen... password=sys.argv[2] ... e=service.RetrieveUser(username) e.login.password=password service.UpdateUser(username,e)
Koodiesimerkkejä 3 Käyttäjätunnuksen uudelleennimeäminen. Taaskin Googlen dokumentaatio erittäin puutteellista username=sys.argv[1] new=sys.argv[2] ... service.UpdateUser(username, gdata.apps.UserEntry(login = gdata.apps.Login(user_name=new)))
Kysymyksiä? Kiitos mielenkiinnosta!