Lenne egy összetettebb problémám és itt fogytak el az AD ismereteim.
Adott egy AD-vel rendelkező irodai hálózat (2008R2, W7/XP kliensek, utóbbiak fogyóban). Adott egy kliens-szerver alapú .NET-es alkalmazás. Továbbá jöhetnek kliensek opcionálisan VPN-en keresztül (amely OpenVPN és nem sok köze van az AD-hez).
Amit el szeretnék érni, hogy ha egy AD-s user indítja el egy olyan gépen, amelyre egy domaines user van belépve, akkor az egész authentikációs folyamatot intézze már SSO módon, ne kelljen jelszavak beírógátasával húzni az időt.
Tehát vegye át a Windowsból az usert és mutatkozzon be a szerver résznek úgy, hogy "Kovács Béla vagyok, xy DC-ről, jó?" Itt további kérdés, hogy szerver oldalon hogyan fogok tudni hozzáférni az user néhány alapvető adatához (pl. usernev, valami egyedi azonosító, stb. - Erre eddig úgy néztem a System.DirectoryServices lesz a nyerő. Viszont nem világos, hogy tudok-e ezzel SSO tokent ellenőrizni)
Viszont az érdekesebb kérdés, hogy mi van akkor, ha pl. VPN-en keresztül indítja valaki a szoftvert. Ilyenkor ugye nem tudunk AD-s security infókat előhalászni semmiképp, tehát marad a jelszóbekérés. Kérdés az, hogy erre van-e valami kulturált megoldás (tehát a Windowsba integrálva, hogy a végén én csak valami tokent kapjak az egész név-jelszó formmal, authentikcáióval, stb. ne kelljen foglalkozni), vagy marad a kézi maszatolás, szerverben AD-ből ellenőrzés?
Lényegében hasonlóan kellene működnie, mintha pl. egy sima fájlmegosztást használnánk: ha van érvényes security token, akkor "just works", ha nincs, akkor jön az username/pw ablak.
Ki hogy csinálná, mit ajánl rá?
Nézelődtem neten, de annyira nem éreztem magam kisegítve, jórészt csak webes rendszerekkel kapcsolatban találtam infót, nekem meg ugye desktop appom van és amit lehet, azt szeretnék a Windowsszal, AD-vel elintéztetni és nem kézimunkázni. Az sem világos nekem, hogy pontosan hogyan hívja a Microsoft azokat a dolgokat, amelyek nekem kellenek. Ha valaki azt meg tudja mondani, hogy merre nézelődjek pontosan, már azt is megköszönném :)
Lenne még egy apróság, bár ez inkább elvi kérdés: érdemes-e esetleg Group Policy-vel jogosultságot kezelni vagy inkább célszerűbb a programon belül megoldani?
--
Az egész SSO-s mókának igazából kettő célja lenne: egyik, hogy ne kelljen +1 rendszerben usereket kezelni (és mivel AD egy elég biztos pont itt, elég kézenfekvő, hogy ahhoz kössem), egyszerűbb adminisztrálni (nem marad el egy account, akár letiltás, akár engedélyezésről van szó). Továbbá nem elhanyagolható kényelmi plusz a felhasználóknak.
- 2193 megtekintés
Hozzászólások
Senki nem csinalt meg itt ilyet? :)
----------------
Lvl86 Troll - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Egy AD-ban van SSO, Kerberos-szal, teljesen integrálva van minden MS technológiába, amit el tudsz képzelni, emiatt el is van rejtve. Én még olyat nem láttam, hogy .NET-ből security tokenekkel kellett volna variálni (habár azt is lehet), tehát innen kezdve szerintem kicsit el vagy tévedve. Már a téma is rossz, .NET-be kellett volna tenni, mert itt minden adott, miközben C++-ból tök máshogy kell mindent csinálni (sokkal több meló, de persze minden megoldható).
Ha domaines user futtat egy programot, akkor az ő domaines userének a nevében fut egy program (WindowsIdentity.GetCurrent()).
Ha ez a program beszélget egy webszerverrel NTLM vagy hasonló authentikációval, akkor a szerver is tudni fogja, hogy ki szólt hozzá (HttpContext.Current.User, ha Windows-ra van állítva az authentikáció). Magától küldi a kliens és olvassa a szerver a belépett felhasználó adatait.
A VPN-re bejövő gépet is be lehet léptetni domainbe, vagy egy másik, trusted domainbe. Ha nincs domain, akkor kliens oldalon DirectoryServices-zel tudsz név+jelszóval AD-hoz kapcsolódni, vagy pl. tudsz webszervernek névvel+jelszóval authentikálni. Kérdés, hogy neked melyik kell.
Az egész attól függ, hogy kliens vagy szerver oldalon akarsz authentikálni, milyen adatokhoz hozzáférni, és azon belül milyen technológiával. Viszont SSO-val foglalkoznod nem kell, csak esetleg 1-2 konfigurációs beállítást megadni az adott technológiának, hogy használja is.
- A hozzászóláshoz be kell jelentkezni