Java i .Net w drodze do bezpiecznych systemów

Web Services i szyfrowanie

Odrębnym problemem jest bezpieczeństwo usług Web. W praktyce obecnie jedyną receptą na zabezpieczenie tego sposobu uruchamiania procesów na serwerze jest wykorzystanie bezpiecznego kanału SSL. Pozostaje kwestia identyfikacji nadawcy "żądania" uruchomienia usługi czy weryfikacja jego uprawnień.

Usługi kryptograficzne w .Net są tak naprawdę wrapperem do funkcjonalności modułu CryptoAPI - obsługiwane są najpopularniejsze algorytmy asymetryczne RSA/DSA, algorytmy typu DES, TripleDES czy RC2, a także dwa główne algorytmy "haszowania". Warto dodać, że z punktu widzenia programisty szyfrowanie/deszyfrowanie to po prostu dodatkowa operacja na strumieniu danych. Równocześnie dostępne są procedury wyższego poziomu, np. podpis cyfrowy, autoryzacja komunikatów czy obsługa standardu XMLDSIG (sygnatura wiadomości XML).

Zbliżone możliwości oferuje Java. Pakiet java.security zawiera interfejsy do m.in. DES, RSA, obsługi X509 i ogólny interfejs do zarządzania magazynem kluczy. Niemal w taki sam sposób jak w .Net - przy użyciu strumieni - następuje kodowanie/dekodowanie danych. Jednak w specyfikacji Javy nie zdefiniowano klas "użytkowych" - tak naprawdę programista musi definiować je samodzielnie.

Identyfikacja

Usługa identyfikacyjna w .Net jest związana albo z Windows (czyli - autoryzacja oparta na Kerberos itp.), albo z bazą Microsoft Passport. Dołączenie Passport do istniejącej witryny ASP.Net wymaga 30 linii kodu. Można też stosować autoryzację z wykorzystaniem szyfrowanych plików cookies i własnych formularzy Web.

W Javie są uniwersalne interfejsy dostępu do różnych metod identyfikacji użytkownika, np. przy użyciu LDAP. Projekt federacyjnej bazy danych Liberty, który miał być konkurencją dla MS Passport, nie ma na razie gotowej implementacji.

Z MS Passport można też skorzystać pośrednio z poziomu rozwiązania stworzonego w Javie.

Narzędzia

Dla Javy istnieje szeroka gama narzędzi do tworzenie aplikacji. Można wybierać takie, które umożliwiają szybkie tworzenie interfejsu użytkownika czy strony JSP. Są też takie, które dobrze integrują się z serwerem aplikacyjnym danego producenta.

W .Net mamy do dyspozycji jeden uniwersalny pakiet Visual Studio .Net, a także wiele mniejszych narzędzi - wygodnych, małych edytorów stron ASP czy środowiska IDE do wykorzystywania darmowych elementów .Net Framework.

Edukacja

Większość uniwersytetów wzbogaciła program nauczania w kursy związane z językiem Java. W wielu miejscach ten język wyparł Pascal, królujący dotychczas na kursach podstawowych i przeznaczony do nauki algorytmiki czy podstaw programowania. Także Microsoft próbuje promować .Net w szkołach wyższych. Ważnym atutem jest niezależność od języka programowania. Dostępny jest też SML.Net, przeznaczony m.in. do operacji na języku i tworzenia interperterów, kompilatorów, automatycznego dowodzenia twierdzeń oraz F# - implementacja języka Caml (język częściowo funkcyjny).

Standardy

Obie technologie są oparte na standardach. Sun opracował własny schemat standaryzacji Java Community Process i definiuje standardy dla świata Java. Microsoft zapoczątkował prace nad wieloma elementami technologii Web Services, a po opracowaniu podstaw .Net, część tej platformy udostępnił jako otwartą specyfikację (standardy ECMA-334 oraz ECMA-335, obejmujące język C# i CLI). Równocześnie implementacja tych standardów jest dostępna z kodem źródłowym jako "shared source" - w ramach projektu Rotor. Prawdopodobnie standardy te będą także poddane procesowi stadaryzacyjnemu ISO (nie jest to pełna specyfikacja .Net Framework, a tylko bazowe usługi oraz ta część, która odpowiada za współpracę różnych języków).


TOP 200