Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1.NET web szolgáltatások Web szolgáltatás biztonság WS-*, GXA WSE Bilicki Vilmos

Hasonló előadás


Az előadások a következő témára: "1.NET web szolgáltatások Web szolgáltatás biztonság WS-*, GXA WSE Bilicki Vilmos"— Előadás másolata:

1 1.NET web szolgáltatások Web szolgáltatás biztonság WS-*, GXA WSE Bilicki Vilmos bilickiv@inf.u-szeged.hu www.inf.u-szeged.hu/~bilickiv

2 2 Az előadás tartalma Web szolgáltatás biztonság WS-* (GXA) WSE Web Service Extension framework

3 3 Források 2524 9-es fejezet MSportal.hu/dokumentumok/Web Szolgáltatások GxaArch Inside the Web Services Enhancements Pipeline Programming with Web Services Enhancements Understanding WS WS_SECURITY

4 4 Web szolgáltatás és biztonság Biztonsági kérdések áttekintése Beépített azonosítás SOAP fejlécek használata saját azonosításhoz Szerep alapú jogosultság kezelés Kód alapú jogosultság kezelés Titkosítás

5 5 Biztonság átekintése Azonosítás vs. Jogosultság kezelés Azonosítás típusai Jogosultság kezelés típusai Titkosítási megoldások

6 6 Azonosítás vs. Jogosultság kezelés Azonosítás A felhasználó identitásának ellenőrzése Azonosító hatóságok segítségével történik Jogosultság kezelés A már azonosított felhasználó jogosultságának ellenőrzése Azonosítás után történik A felhasználó azonosságán alapul

7 7 Azonosítás típusai IIS azonosítás ASP.NET azonosítás Űrlap alapú azonosítás Passport azonosítás Saját SOAP fejlécek használata IIS azonosítás ASP.NET azonosítás Űrlap alapú azonosítás Passport azonosítás Saját SOAP fejlécek használata

8 8 Engedélykezelés típusai Windows NT biztonság (DACL) Szerep alapú biztonság Kód alapú biztonság ASP.NET alkalmazás beállításai (Web.config) Windows NT biztonság (DACL) Szerep alapú biztonság Kód alapú biztonság ASP.NET alkalmazás beállításai (Web.config)...

9 9 Titkosítási megoldások Mit szeretnénk titkosítani? Az egész üzenetet, Csak a törzset vagy a fejlécet Csak kiválasztott üzeneteke Particionálás Az egész üzenetet, Csak a törzset vagy a fejlécet Csak kiválasztott üzeneteke Particionálás Megoldások: SSL SOAP kiterjesztések SSL SOAP kiterjesztések

10 10 Beépítet azonosítás Egyszerű és kivonatolt azonosítás Integrált Windows Azonosítás IIS azonosítás használata

11 11 Egyszerű és kivonatolt azonos. Egyszerű azonosítás Az IIS bekéri a név/jelszó párost Titkosítás nélkül küldik át SSL használata megoldja a problémát Kivonatolt azonosítás A bizalmas adatok kivonatolva küldik át Csak a HTTP 1.1-es kliensek támogatják

12 12 Integrált Windows Azonosítás Tulajdonságai Rossz esetben NTLM azonosítás Jó esetben Kerberos azonosítás Korlátok Nem windows.... HTTP proxy nem érti Tűzfalakon újabb portokat kell kinyitni Inranetre optimális Ugyanazokat a csoportokat, hierarchiát használhatjuk mint a meglévő Windows rendszerben

13 13 IIS azonosítás Beállításai Belépési jogosultság az adott fióknak Titkosítatlan jelszó a szerveren.... ASP.NET web szolgáltatás beállításai A felhasználó azonosság kezelése web szolgáltatásban Bizonyítékok prezentálása IIS... [WebMethod] public string HelloWorld() { return "Hello" + Context.User.Identity.Name; }

14 14 Felhasználók használata A proxy osztályok a SoapHttpClientProtocol osztályból származnak Credentials tulajdonság (ezzel adhatjuk/kérhetjük le a felhasználó azonosságát) Ezt mindhárom megoldásnál használhatjuk (Alap, Kivonatolt, Integrált) HelloService service = new HelloService(); //Create a NetworkCredential object ICredentials credentials = new NetworkCredential("Administrator", "password", "woodgrovebank.com"); //Set client-side credentials using Credentials property service.Credentials = credentials; //Invoke the XML Web service method string s; try {s = service.HelloWorld(); } catch {Console.WriteLine("Authentication failed");}

15 15 Saját SOAP fejlécek használata Interneten nem nyerő az előző megoldás Titkosítás? Nem windows felhasználóink vannak pl.: más LDAP szerver, SQL adatbázisban lévő felhasználók,... SOAP saját fejlécek használata a web szolgáltatás szolgáltatóban és fogyasztóban Web Service Consumer Web Service

16 16 SOAP fejléc Web szolgáltatásban Teendők: Származtassuk osztályunkat a SoapHeader-ből 1 1 Adjuk hozzá a SoapHeader attribútumot 3 3 Adjunk hozzá publikus mezőt a SoapHeader-ből származtatott osztályhoz 2 2

17 17 Példa using System.Web.Services; using System.Web.Services.Protocols; public class AuthHeader : SoapHeader { public string Username; public string Password; } public class AccountService : WebService { public AuthHeader sHeader; [WebMethod] [SoapHeader("sHeader")] public decimal GetAcctBalance(string acctID) {... }

18 18 SOAP fejlécek WSDL-ből nyerhetőek kiWSDL Web szolgáltatás proxy-k és SOAP fejlécek SOAP fejlécek használata web szolgáltatásokban SOAP fejléc, fogyasztóban Web Service Consumer [SoapHeaderAttribute("WoodgroveAuthInfoValue", Required=false)] public Acct GetAccount(int acctID) {... WoodgroveOnlineBank bank = new WoodgroveOnlineBank(); WoodgroveAuthInfo authInfo = new WoodgroveAuthInfo (); authInfo.Username = "Adam"; authInfo.Password = "password"; bank.WoodgroveAuthInfoValue = authInfo; Acct acct = bank.GetAccount(1);

19 19 Szerep alapú jogosultságkezelés COM+ szerepkörök egy alkalmazáson belül, Windows témaszámokat rendeltek hozzá szerepkörökhöz A szerepkörök tagsága az alkalmazás telepítésekor van beállítva, nem kell a kódhoz nyúlni Az alkalmazáson belüli jogosultságokat kezeli (nem csak futathatja/nem futtathatja) Nem lényeges a felhasználó pontos azonossága.NET fogalmak: Azonosságok Megbízók Használható a beépített és saját azonosítási megoldásokal is Azonosítás és jogosultság kezelés HttpModul-lokban

20 20 Azonosságok WindowsIdentity GenericIdentity Custom identity IIdentity Azonosított entitás A GenericIdentiy csak a nevet tárolja, ha ettől többre van szükségünk akkor az IIdentity interfészt kell megvalósítani a saját osztályunkkal

21 21 Megbízók A megbízó objektumot azt a környezetet jelenti melyben a kód fut Felhasználó Szerepek Egy vagy több szerepkör tagja lehet, ezek alapján az alkalmazás eldöntheti jogosultságait Szerepek: Megbízottak olyan halmaza melyek egyforma jogokal rendelkeznek Windows egyed Általános egyed Saját egyed (IPrincipal) A megbízottak az adott szál biztonsági környezetét (jogosultágát) határozzák meg Security context

22 22 A WindowsIdentity és WindowsPrincipal objektumok Az Identity objektumok Name paraméterének használata a kód hozzáférés szabályozásához A IsInRole metódus használata WindowsIdentity esetén a WindowsBuiltInRole enumból ki lehet olvasni a beépített csoporttagságait(BUILTIN\\Adm..) Példa if (User.Identity.Name == "CONTOSO\\Fred") // Permit access to some code. if (User.Identity.Name == "CONTOSO\\Fred") // Permit access to some code. Példa if (User.IsInRole("CONTOSO\\Administrators")) // Permit access to some code. if (User.IsInRole("CONTOSO\\Administrators")) // Permit access to some code. if (User.IsInRole(WindowsBuiltInRole.Administrator)) { // only administrators can do this }

23 23 Példa using System.Text; using System.Security.Principal; // Required for role-based security... [WebMethod] public string HelloWorld() { // not required. Just shows the User property is an Identity IIdentity identity = Context.User.Identity; string name = User.Identity.Name; bool isAuth = User.Identity.IsAuthenticated; string identType = User.Identity.AuthenticationType; bool isAdmin = User.IsInRole("Domain\\Administrators"); StringBuilder s = new StringBuilder(); s.Append("Hello " + name + ", "); s.Append(isAuth ? "authenticated" : "not authenticated"); s.Append(" using " + identType + ", "); s.Append("you are "); s.Append(isAdmin ? "an admin" : "not an admin"); return s.ToString(); }

24 24 A GenericIdentity és a GenericPrincipal objekumok használata GenericIdentity objektum létrehozása GenericPrincipal objektum létrehozása A jelenlegi egyed elmentése Előny: Minden szerelvény-hozzáférésnél ellenőrizhető a jogosultság Hátrány: Egy szál több viszony metódus által megosztva van használva, a metódus visszatérése előtt reszetelni kell GenericIdentity MyIdentity = new GenericIdentity("User1"); String[] MyStringArray = {"Manager", "Teller"}; GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray); String[] MyStringArray = {"Manager", "Teller"}; GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyStringArray); GenericPrincipal save = Thread.CurrentPrincipal;

25 25 HttpModules használata Minden ASP.NET alkalmazás rendelkezik egy HttpApplication objektummal amelynél feliratkozhat bizonyos eseményekre pl.: AuthenticateRequest Ezekre felíratkozhatunk a Global.asax fájlba is (ekkor az egész alkalmazásra adunk meg paramétereket) A másik megoldás a HttpModules osztály melyet a web.config fájlban adhatunk meg public sealed class CustomAuthenticationModule : IHttpModule { public void Init(HttpApplication app) { app.AuthenticateRequest += new EventHandler(this.OnAuthenticate);}

26 26 Eseménykezelő public void OnAuthenticate(Object src, EventArgs e) { HttpApplication app = (HttpApplication)src;HttpContext ctx = app.Context; string soapUser;string soapPassword; XmlDocument dom = new XmlDocument(); Stream httpStream = ctx.Request.InputStream; long posStream = httpStream.Position; try { dom.Load(httpStream); httpStream.Seek(posStream,System.IO.SeekOrigin.Begin); dom.Save(httpStream); soapUser = dom.GetElementsByTagName("User").Item(0).InnerText; soapPassword = dom.GetElementsByTagName ("Password").Item(0).InnerText; string [ ] roles; roles = GetRolesForUser(soapUser,soapPassword); ctx.User = new GenericPrincipal(new GenericIdentity(soapUser, "MyAuthType"), roles); } catch (Exception ex) { httpStream.Position = posStream; XmlQualifiedName name = new XmlQualifiedName("Load"); SoapException soapException = new SoapException( "Unable to read SOAP request", name, ex); throw soapException;}}

27 27 Kód alapú biztonság A kód olyan dolgokat is művelhet amiről a felhasználónak nincs tudomása Megbízható felhasználó, nem megbízható kód Bizonyíték alapú biztonság alapján szabályozzuk az erőforrásokhoz való hozzáférések jogát Erős név Kiadó Zóna URL Kivonat Kód hozzáférés jogosultságok Kód csoportok (közös tulajdonság pl.: URL) Szabály szintek (Vállalati, Gép, Felhasználó, Alkalmazás tartomány) Nevesített jogosultság halmazok (pl.: Internet, Lokális,...)

28 28 Kód alapú biztonság Helyi vs. ISP telepítés Helyi gépen Full trust, ekkor nincs szerepe a kód alapú biztonságnak (My_Computer_Zone) ISP ? Kód alapú jogosultságok (mire van a kódnak szüksége?).NET Framework SDK leírja, hogy melyik osztálynak milyen jogosultságra van szüksége Tesztelni pl.: Internet jogosultságal Engedélyek kérése a kódban (SecurityPermission attribútum, ezt betöltésekor ellenőrzi a rendszer) RequestMinimum – ha ez nincs teljesítve akkor nem lesz lefutatva a kód RequestOptional RequestRefused [assembly:SecurityPermissionAttribute( SecurityAction.RequestMinimum, UnmangedCode = true)]

29 29 SSL használata X.509 digitális bizonyítányok Hogyan engedélyezzük? IIS

30 30 Saját SOAP bővítmények A DESCryptoServiceProvider osztály A CryptoStream osztály Titkosításg SOAP bővítményekkel encryptor = des.CreateEncryptor(key, IV); decryptor = des.CreateDecryptor(key, IV); ICryptoTransform encryptor; ICryptoTransform decryptor; encryptor = des.CreateEncryptor(key, IV); decryptor = des.CreateDecryptor(key, IV); CryptoStream cs; cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);... cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read);

31 31 Global XML Web Services Architecture A GXA Forgalomirányítás és hivatkozások Biztonság és Jogosítványok

32 32 A Web Szolgáltatások korlátai Web szolgáltatások felhasználási területei: IEA – Vállalati alkalmazás integráció B2B – fontos partnerekkel való együttműködés A holnap igényei: Több szervezet közötti együttműködés Problémák melyekkel a jelenlegi szabványok (SOAP, WSDL, UDDI) nem foglalkoznak Hogyan tegyük biztonságossá a web szolgáltatást? Hogyan menedzseljük dinamikusan az üzenet útvonalakat? Hogyan tehetjük megbízhatóvá a szolgáltatások kézbesítését hosszú ügymenetek folyamán? Hogyan kezeljük a hosszútávú tranzakciókat?

33 33 A GXA Tervezési szempontok Általános célú Moduláris Föderációs elvű Szabvány alapú Kiadott specifikációk WS-Routing WS-Referral WS-Security WS-License Tervek: Megbízható üzenetküldés Tranzakciók (BPEL)

34 34 GXA architektúra Infrastructure Protocols SOAP SOAP Modules Discovery Directory Inspection Description Referral Routing License Security … … Reliable Messaging Transactions … … HTTP/SMTP XML TCP/IP Internet

35 35 WS-Routing SOAP üzenet feldolgozási modell SOAP elosztott feldolgozási modell SOAP:actor Nem definiálja az üzenet útvonalat WS-Routing A megfelelő köztes SOAP csomópontok felé viszi az aszinkron üzenet forgalmat az üzenet útvonalak segítségével Átvitel és útvonal rugalmasság Üzenet továbbítás (egyirányú, kétirányú, p2p, hosszú dialógusok), feloldás, válasz útvonal,,, Ahogy az üzenet halad minden csomópont átmozgatja saját via bejegyzését a fwd-ból a rev-ba

36 36 WS-Referral A WS-ROUTE kiegészítője A SOAP forgalomirányítók konfigurációját teszi lehetővé Egy hivatkozást ír le Lekérdezhetünk egy SOAP forgalomirányítót egy hivatkozásért A hivatkozások beszúrása, törlése, cseréje Hivatkozás formula Regisztrációs üzenetek (push) Lekérdező üzenetek (pull) Hivatkozás fejlécek (dinamikus útvonalválasztás),,,,

37 37 Forgalomirányítás példa A A SN1 B B Schedule Package Pickup Schedule Package Pickup Pickup Scheduled

38 38 A – SN1 http://example.org/alert soap://serverB.com/B soap://SN1.com soap://serverA.com/A soap://serverA.com/A uuid:12dfs83476-4asd-s234-s3df-d25656adssf4 …

39 39 SN1 - B http://example.org/alert soap://serverB.com/B soap://SN1.com soap://serverA.com/A soap://serverA.com/A uuid:12dfs83476-4asd-s234-s3df-d25656adssf4 …

40 40 B – SN1 http://example.org/alert soap://SN1.com soap://serverA.com/A soap://serverB.com/B uuid:74583476-45gd-sg6g-sf54-dfgsgfgdssf4 Pickup scheduled

41 41 SN1 - A http://example.org/alert soap://serverA.com/A soap://serverB.com/B uuid:74583476-45gd-sg6g-sf54-dfgsgfgdssf4 Pickup scheduled

42 42 Hivatkozás példa A A SN1 B B Schedule Package Pickup Schedule Package Pickup Who told A about SN?

43 43 … soap://serverB.com/B 43200000 soap://SN1.com uuid:09233523-345b-4351-b623-  5dsf35sgs5d6

44 44 WS-Security XML Siganture XML Encrypition Bizonyíték csere, üzenet azonosítás, és üzenet titkosítás Szolgáltatásai: Felhasználó név/Jelszó X509/PKI Kerberos

45 45 Példák scott KE6QugOpkPyT3Eo0SEgT30W4Keg= 5uW4ABku/m6/S5rnE+L7vg== <wsu:Created xmlns:wsu= "http://schemas.xmlsoap.org/ws/2002/07/utility"> 2002-08-19T00:44:02Z <wsse:BinarySecurityToken ValueType="wsse:X509v3" EncodingType="wsse:Base64Binary" Id="SecurityToken-f49bd662-59a0-401a-ab23-1aa12764184f" >MIIHdjCCB...

46 46 WS-License Az ismertebb jogosítványok formátumát specifikálja - Például: X.509, Kerberos, SAML, XrML - A WS-Security bővítménye

47 47 Példa Kliens Passport Kerberos jegy beszerzése 1 1 License Service XrML jogosítvány beszerzése 2 2 Bankszámla Meghívja a státuszt az XrML jogosítvánnyal 3 3 A klines engedélyezése 4 4 Szüksége s jogok Bejovő jogosítvá nyok Engedélyezve? Policy Engine Subsequent calls to Status service do not require presentation of Passport licenses

48 48 Web Services Enhancements WSE bővítmények jelenleg 2.0 Itt az 1.0-át nézzük Segítségével használhatjuk: WS-Security WS-Routing DIME WS-Attachments Viszonylag alacsony szintű megoldás Bonyolult, nem gyárt WSDL-t Bővíthető, testreszabható

49 49 WSE működése Két szűrő csoport Bejövő Kimenő Ezek hajtják végre a szükséges transzformációkat Ezekből lehet kiolvasni a megfelelő értékeket is Proxy: System.Web.Services.SoapHttpClientProtocol helyett Microsoft.Web.Services.WebServicesClientProtocol. WebServicesClientProtocol Microsoft.Web.Services.SoapWebRequest Microsoft.Web.Services.SoapWebResponse

50 50 WSE kliens kérés, válasz

51 51 Példa kliens static void Main(){ UsernameReflector proxy = new UsernameReflector(); SoapContext reqCtx = proxy.RequestSoapContext; UsernameToken tok = new UsernameToken(Environment.UserName, Environment.UserName.ToUpper(), PasswordOption.SendHashed)); reqCtx.Security.Tokens.Add(tok); reqCtx.Security.Elements.Add(new Signature(tok)); // send message and process result Console.WriteLine("Username is: " + proxy.GetUsername());}

52 52 Szerver oldal Microsoft.Web.Services.WebServicesExtension

53 53 Szerver példa public class UsernameReflector{ [WebMethod] public string GetUsername() { string Username = string.Empty; SoapContext reqCtx = HttpSoapContext.RequestContext; foreach(SecurityToken tok in reqCtx.Security.Tokens) { if (tok is UsernameToken) { Username = ((UsernameToken)tok).Username; break; } if (Username == string.Empty) throw new Exception("No username"); return Username; }

54 54 Beállítások

55 55 Azonosító forrás Microsoft.Web.Services.Security.IPasswordProvider Microsoft.Web.Services.Security.UsernameToken azonosítására public class PasswordProvider : IPasswordProvider{ public string GetPassword(UsernameToken usernameToken) { return usernameToken.Username.ToUpper(); }

56 56 Az előadás tartalma Web szolgáltatás biztonság WS-* (GXA) WSE Web Service Extension framework

57 57 Mai Web Szolgáltatás Arch.

58 58 BPEL

59 59

60 60 A következő előadás tartalma WS-profilok, WS-I Basic profile 1.0 BPEL4WS Egy példa Web szolgáltatás (a feladat egy megoldása és az értékelő keretrendszer) Speckoll. értékelés


Letölteni ppt "1.NET web szolgáltatások Web szolgáltatás biztonság WS-*, GXA WSE Bilicki Vilmos"

Hasonló előadás


Google Hirdetések