[fria24] Beskrivning av SHS
Anders Lindbäck
vetgirig at linuxbolaget.se
Fre Nov 18 12:42:27 CET 2005
Översiktlig beskrivning av SHS
------------------------------
SHS är ett sätt att utföra tjänster mellan olika myndigheter.
SHS är ett meddelandesystem för tjänster baserat på XML.
XML-Meddelandena skickas till en server och den skickar
tillbaka ett svar(om det förväntas ett svar på tjänsten).
Alla XML-meddelande finns beskriva med DTDer så de kan
verifieras som korrekta både av den som skickar meddelandet
och av servern.
Meddelanden krypteras enligt RFC3280 dvs samma som för
certifikaten för https-protokollet pga att de använder
sig http/SSL (URL:https)för att skicka meddelandena.
Det finns en katalogtjänst (baserad på LDAP) med fysiska
adresser (URL) till de servrar som utför de olika tjänsterna.
Den som vill ha en tjänst utförd går till katalogen och
hittar servern. Skapar sedan en XML-fil enligt DTDn och
skickar den till servern och får tillbaka ett svar som en
XML-fil som den avkodar och använder informationen den
fått i sin applikation.
Det finns ett API för att använda SHS som definieras antingen
som Java/C eller Web Services(med vissa begränsningar).
C-interfacet är gammalt och inte lika över olika implementeringar
vilket tydligen gör att den bästa är Java-API beskrivningen.
Djupare beskrivning av SHS
--------------------------
Meddelanden delas upp i 4 typer:
- Event - meddelanden utan svar
- Request - meddelande som förväntar sig ett svar
- Reply - svaret på ett request.
- Adm - administrativa meddelanden.
Meddelanden kan skickas både synkront eller asynkront.
I hjärtat på SHS sitter SHS Messaging Service den ansvarar
för kontakten med andra noder och tar emot och skickar meddelanden
till andra noder samt avkodar meddelanden och skickar dem
till de applikationer som behandlar dem.
Messaging Service tillhandahåller även loggar och spårmöjligheter
för kontroll av tjänsterna.
I kapitel 5.1 av Arkitekturbeskrivningen finns diagram som beskriver
hur SHSMS skall hantera meddelanden dvs vilka kontroller som
skall göras t.ex. om noden som anropar har rätt att använda
den begärda tjänsten på denna servern.
Det måste alltså finnas avtal mellan de olika noderna om att
de får använda en viss tjänst från en viss server.
I shs-spi finns beskrivning av API och även lite till
Det finns program för att använda det hela från skriptfiler:
shssend - skickar ett meddelande
shsfetch - hämtar ett meddelande
APIerna är mycket dåligt definierade eftersom de inte är definierade
på C-nivå utan på en abstrakt nivå vilket gör att det inte går
att flytta ett program från en implementation till en annan eftersom
datatyperna inte är 100% definierade!
SPI-definitionera för Java fattas t.ex. HELT.
API specifikationerna är i min mening tyvärr ett skämt!
Det enda användbara är shssend och shsfetch resten är
tyvärr oanvändbara som specifikationer.
DTDerna för XML-meddelanden verkar finnas bra beskrivningar av
(Jag har inte lusläst dem för ev inkonsistenser)
Övesiktlig OO-Design av SHS
----------------------------
klass Message
Message hanterar ett meddelande och ger ett API för att
hämta och sätta alla parametrar i XML-filen. Det klarar
även av att leverera en XML-fil med meddelandet och att
avkoda ett XML-meddelande till sina beståndsdelar.
(I grunden används något fritt XML-bibliotek för att
se hantera XML-filen.)
klass Katalog
Katalog är ett interface för att gå till LDAP-katalogen
och hämta upp data om de servrar som finns och även
att kolla om någon som kontaktar en har rätt att använda
en specifik tjänst.
klass MessageService
Messageserive implementerar det API som finns för SHS
och använder sig av Message för att skapa ett meddelande
som skickas iväg och att avkoda svaret och Katalog för
att kontrollera vart meddelandet skall skickar och om
någon som kontakter en har rätt och använda en viss tjänst.
För en server så kan det hela skrivas som t.ex. en Java servlet.
More information about the selinux-fria24
mailing list