-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add admin login with SAML + Andrvotr instead of Cosign #243
base: master
Are you sure you want to change the base?
Conversation
Vdaka @TomiBelan! Zacneme asi najprv s tou modernizaciou, nech sa to da aspon vyskusat. Ja dnes tiez dost preferujem
Len pre uplnost, co po tych 5 minutach? Treba re-validovat?
V tomto je ta eprihlaska dost schizofrenicka. To administrativne rozhranie (teda eprihlaska/eprihlaska/views.py Line 77 in b3ac77b
Roger!
Ocakavam, ze nech to bude akykolvek z modulov, stale to asi bude moct byt hardcoded URL, ze?
Na tomto panuje (aspon medzi tebou, mnou a @tvinar) naozaj vseobecny suhlas :) |
Moj povodny umysel bol ze na dlzke timeoutu nezalezi lebo kazda predna sluzba okamzite zavola create_client() akonahle dostane SAML login response. Takze 5 minut som zvolil nahodne, len ako rezervu aj ked by malo staci par sekund. Votr hned pri prihlaseni zavola create_client() a dostane Client / Context objekt ktory obsahuje JSESSIONID z ais2.uniba.sk, ktory vydrzi uz dlhsie (niekolko hodin myslim). Ten strci do sessionu. Ak si neskor vsimne, ze JSESSIONID expiroval a prestal fungovat, vyzve usera aby sa prihlasil znovu. Anketa zavola create_client() pocas prihlasovania (teda na /app.php/login co je jedina "protected" url), a ani ho nikam nemusi ukladat, iba rovno z aisu vytiahne zoznam predmetov studenta atd. V eprihlaske ma cele /admin/ nastavene CosignAllowPublicAccess Off.
Ano, Btw podla mna sa mod_auth_mellon o chlp lahsie konfiguruje nez mod_shib, a paci sa mi ze nepotrebuje beziaceho systemoveho daemona, ale oba su vlastne fajn. mod_shib ma meta vyhodu ze ho Zigi lepsie pozna takze sa pouziva na skoro celej unibe. Btw return=/ je klamstvo, IdP ta nikam nazad neposle, zostanes na IdP stranke s napisom "odhlasili ste sa" takze na hodnote vlastne nezalezi. |
Z nejakeho dovodu sme tento pristup s Ten usecase totiz vyzera tak, ze administracne rozhranie sa pouziva hlavne na "administrovanie" roznych veci okolo prihlasok, ako napriklad ich fyzicke vytlacenie, vratenie na dopracovanie, a nakoniec na preklopenie prihlasky, co je jedina cast, kde sa "Votr API" pouziva. Clovek sa tam aj tak raz denne musi prihlasit, takze to vidim na prerobenie na votr styl s jednym Pevne verim, ze o chvilu dam dokopy nejaky proof-of-concept -- este sa ozvem, ak by som mal nejake dalsie otazky. Vdaka! |
Vlastne moment. Myslel som ze AIS2SubmitForm a AIS2CookieForm su nejake komplikovane formulare. Ale neobsahuju skoro nic. To sa mi zacina pozdavat tretia moznost. Cize napr: Vyhoda je ze sa pripojime iba na AIS iba ak treba, co ak spravne rozumiem ani pre adminov nie je velmi casto. A ze netreba riesit session ani pridavat novu /admin/login URL. Ale ci je to dokopy cistejsie, tazko povedat. Necham rozhodnutie na teba. Btw vobec nechapem AIS2CookieForm, obsahuje jediny vyskyt Btw mam virtualku samltest kde sa tieto veci daju testovat relativne pohodlne. Dam ti pristup? Btw som aj na google chate a inych chat platformach. |
Asi pre @mrshu, ledaže by @Adman.
PR upgraduje Votr-knižnicu na novú verziu a používa nové prihlasovanie typu saml_andrvotr.
Navyše Votr už sa dá inštalovať ako normálny python balík, netreba submodule ani meniť sys.path.
Z pohľadu eprihlášky to bude vyzerať takto: Namiesto mod_cosign tam bude nejaký iný modul, buď mod_auth_mellon alebo mod_shib. Bude nastavený že /admin/* vyžaduje prihlásenie od malej povolenej množiny userov, rovnako ako doteraz bol mod_cosign. Keď sa niekto prihlási, v request.environ dostaneme tzv. andrvotr authority token, ktorý v podstate nejako kóduje, kto a kedy sa prihlásil kam (do eprihlášky). Potom stačí inicializovať Votr client s parametrami type="saml_andrvotr", my_entity_id=(konštanta z configu), andrvotr_api_key=(konštanta z configu), andrvotr_authority_token=(hodnota z request.environ). Votr sa pomocou toho prihlási do aisu.
Nie je to úplne dokončené. Čo ešte treba, aby niekto spravil (radšej nie ja):
uv
a dosť sa mi páči, ale ajpoetry
je ok ak chceš.https://login.uniba.sk/logout.cgi
, bude treba zmeniť, závisí od vybraného modulu.