News:

Velkommen til FMK Teknik

Main Menu

Sikkerbrowser opstart af FMK-online

Started by Leon, 2012-05-10 07:17:13

Previous topic - Next topic

Leon

Hej

I tråden "Vælj patient i FMK-online" nævnes der sikkerbrowseropstart, nogen der kan forklarer lidt nærmere hvad det går ud på og hvordan det gøres, specielt delen med at man kan bruge SOSI Gateway er interessant  for mig.

På forhånd tak

Leon

Ulrik Skyt

Hej Leon,

"Sikker browseropstart" er en måde at foretage automatisk login i en browserapplikation ud fra et SOSI-idkort som haves enten i en klient applikation eller i en SOSI-Gateway, som klienten anvender.

I praksis skal man "veksle" sit SOSI-idkort til et "SOSIID", som reelt er et system-specifikt Identity Token, som beviser brugeren identitet men kun er gyldigt til brug i et bestemt system (fx FMK-online). Det gøres ved at kalde en separat Identity Token Service (ITS) på STS-serveren. Dette vekslingskald er en normalt DGWS kald, så SOSI-idkortet skal med i headeren, enten fra klienten eller fordi SOSI-Gateway sætter det på. Dette foregår på Sundhedsdatanettet (SDN).

Når man har fået sit SOSIID kan det anvendes ved opstart af FMK-online, som også beskrevet i den refererede tråd:

https://fmk-online.dk/fmk/sosiid?SOSIID=xxxxx#cpr=1234567890

Så logges brugeren automatisk ind og hvis #cpr parameteren også er med, vil FMK-online direkte slå op på den ønskede patient.

Et kald til ITS kan fx se således ud, hvis man kalder direkte fra en klient til ITS'en.
Der er nok forskel på angivelsen af idkort, hvis man kalder via SOSI-Gateway, men det kan jeg ikke lige specificere uden at undersøge nærmere først.
Herunder er XML-delen pænt opstillet (hvilket man ikke skal gøre i rigtige requests):


POST /sts/services/IdentityTokenService HTTP/1.1
SOAPAction: http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue
Content-Type: text/xml; encoding=utf-8
User-Agent: Java/1.6.0_31
Host: niab01.nsp-test.netic.dk:8080
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-Length: 6439

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:wst14="http://docs.oasis-open.org/ws-sx/ws-trust/200802">
<soapenv:Header>
<wsa:Action>http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</wsa:Action>
<wsa:MessageID>urn:uuid:de8e9776-b074-49fa-9572-b0b8cb8421d1</wsa:MessageID>
<wsa:To>http://niab01.nsp-test.netic.dk:8080/sts/services/IdentityTokenService</wsa:To>
</soapenv:Header>
<soapenv:Body>
<wst:RequestSecurityToken Context="urn:uuid:7d194b03-f9a1-47f3-a11a-ee6cb1424126">
<wst:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0</wst:TokenType>
<wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType>
<wst14:ActAs>
<saml:Assertion IssueInstant="2012-05-10T07:35:37Z" Version="2.0" id="IDCard">
<saml:Issuer>TESTSTS</saml:Issuer>
<saml:Subject>
<saml:NameID Format="medcom:cprnumber">2006271866</saml:NameID>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:2.0:cm:holder-of-key</saml:ConfirmationMethod>
<saml:SubjectConfirmationData>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyName>OCESSignature</ds:KeyName>
</ds:KeyInfo>
</saml:SubjectConfirmationData>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2012-05-10T07:35:37Z" NotOnOrAfter="2012-05-11T07:35:37Z"/>
<saml:AttributeStatement id="IDCardData">
<saml:Attribute Name="sosi:IDCardID">
<saml:AttributeValue>QT0q6c2rZms8mnTLO5OlOA==</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="sosi:IDCardVersion">
<saml:AttributeValue>1.0.1</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="sosi:IDCardType">
<saml:AttributeValue>user</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="sosi:AuthenticationLevel">
<saml:AttributeValue>4</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="sosi:OCESCertHash">
<saml:AttributeValue>fWnwGlZ+b73DMkNIb2I7rzx5YJ8=</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<saml:AttributeStatement id="UserLog">
<saml:Attribute Name="medcom:UserCivilRegistrationNumber">
<saml:AttributeValue>2006271866</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:UserGivenName">
<saml:AttributeValue>Muhamad</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:UserSurName">
<saml:AttributeValue>Danielsen</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:UserEmailAddress">
<saml:AttributeValue>min.email@adatatest.com</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:UserRole">
<saml:AttributeValue>Doctor</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:UserAuthorizationCode">
<saml:AttributeValue>19901</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:UserOccupation">
<saml:AttributeValue>Overtester</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<saml:AttributeStatement id="SystemLog">
<saml:Attribute Name="medcom:ITSystemName">
<saml:AttributeValue>SOSITEST</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:CareProviderID" NameFormat="medcom:cvrnumber">
<saml:AttributeValue>25520041</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="medcom:CareProviderName">
<saml:AttributeValue>TRIFORK SERVICES A/S // CVR:25520041</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" id="OCESSignature">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#IDCard">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>QhHn/IAWralrd0Zlg/6RjYyALwA=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>e6cmnFygFtaWo6IMBAxekYFRI56+9szevPDi1mlsN8clDnrPGRRilro1D9ADc3AbeCOIm6ANqxJ3A0XaVA+wwJ8zVK4BZiuBxfAzhZ9gX//cK/ZBCQ9RtIKuzEa3VzsFRwCEUtYCdgMf9G9mINQD7RHtwJx6idFm/cz2BK7+FQk=</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIFBjCCBG+gAwIBAgIEQDfroDANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGEwJESzEMMAoGA1UEChMDVERDMSIwIAYDVQQDExlUREMgT0NFUyBTeXN0ZW10ZXN0IENBIElJMB4XDTExMDkwMTEzNDAwOFoXDTEzMDkwMTE0MTAwOFowgYMxCzAJBgNVBAYTAkRLMSgwJgYDVQQKEx9EYW5za2UgUmVnaW9uZXIgLy8gQ1ZSOjU1ODMyMjE4MUowIQYDVQQDExpEYW5za2UgUmVnaW9uZXIgLSBTT1NJIFNUUzAlBgNVBAUTHkNWUjo1NTgzMjIxOC1VSUQ6MTE2MzQ0NzM2ODYyNzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAnTc5xPDQBn95WZlY/yKH0vu4L0qOc9/M14bzAJEULYO55vqOYqSgFkOwPGqTwoK9Ajlqmn1zkdLBbwQYXRb+bEOSfJ+FTCvVo9IzKee0yQznJk0HZNTuuznpcoSybde1YXLrHupPxXUl2gNakmf65XczvE3E2J62hMYIM6Pxa9MCAwEAAaOCAsgwggLEMA4GA1UdDwEB/wQEAwIDuDArBgNVHRAEJDAigA8yMDExMDkwMTEzNDAwOFqBDzIwMTMwOTAxMTQxMDA4WjBGBggrBgEFBQcBAQQ6MDgwNgYIKwYBBQUHMAGGKmh0dHA6Ly90ZXN0Lm9jc3AuY2VydGlmaWthdC5kay9vY3NwL3N0YXR1czCCAQMGA1UdIASB+zCB+DCB9QYJKQEBAQEBAQEDMIHnMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNlcnRpZmlrYXQuZGsvcmVwb3NpdG9yeTCBswYIKwYBBQUHAgIwgaYwChYDVERDMAMCAQEagZdUREMgVGVzdCBDZXJ0aWZpa2F0ZXIgZnJhIGRlbm5lIENBIHVkc3RlZGVzIHVuZGVyIE9JRCAxLjEuMS4xLjEuMS4xLjEuMS4zLiBUREMgVGVzdCBDZXJ0aWZpY2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMS4xLjEuMS4xLjEuMS4xLjMuMBcGCWCGSAGG+EIBDQQKFghvcmdhbldlYjAdBgNVHREEFjAUgRJkcmlmdHZhZ3RAZGFuaWQuZGswgZcGA1UdHwSBjzCBjDBXoFWgU6RRME8xCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxIjAgBgNVBAMTGVREQyBPQ0VTIFN5c3RlbXRlc3QgQ0EgSUkxDjAMBgNVBAMTBUNSTDI4MDGgL6AthitodHRwOi8vdGVzdC5jcmwub2Nlcy5jZXJ0aWZpa2F0LmRrL29jZXMuY3JsMB8GA1UdIwQYMBaAFByYCUcaTDi5EMUEKVvx9E6Aasx+MB0GA1UdDgQWBBQLXbSSnyHTIbP7jK5RemgCp28B2zAJBgNVHRMEAjAAMBkGCSqGSIb2fQdBAAQMMAobBFY3LjEDAgOoMA0GCSqGSIb3DQEBBQUAA4GBAIetUxFyQTFl5xNN/21EGk/U8r1/E5X/9oYLOdzOjzH3tV0al56vAovy+R16c4wjUwM3P6LPJeZeU0m5GyIGYdcbdZeNi0Z693XXcWvROfGEzOsTHe2T8j1tDu8DzY6mCVnXb8Q9aeY1G3hFLL70mE8rbtwVHgPdg3riuIbcdTXs</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</saml:Assertion>
</wst14:ActAs>
<wsp:AppliesTo>
<wsa:EndpointReference>
<wsa:Address>http://fmk-online.dk</wsa:Address>
</wsa:EndpointReference>
</wsp:AppliesTo>
</wst:RequestSecurityToken>
</soapenv:Body>
</soapenv:Envelope>

Leon

Hej Ulrik,

Tak for et godt svar.  Er det korrekt forstået at man kan kalde ITS gennem SOSI gateway også få SOSIID?

Ulrik Skyt

Ja, det er korrekt. Og jeg har kendskab til nogen der gør det!
Men jeg kan pt. ikke helt gøre rede for hvordan requestet skal se ud.

Leon

Alletiders. Nu bevæger jeg mig nok lidt udenfor FMK-online området.
1)Ved du om kald til ITS understøttes af NSP'en?
2)Skal der laves et nyt SOSIID hver gang en bruger skal på FMK-online? Eller kan det SOSIID en bruger allerede har fået genbruges?


Ulrik Skyt


Ad 1: ITS er inkluderet i STS og NSP leverancer fra v1.5.

Ad 2: SOSIID har en begrænset tidsmæssig gyldighed (5 minutter), som er beregnet på at det anvendes én gang til at etablere en session og så ikke mere. Skal man bruge et igen, skaffer man et nyt.