Page History
...
Dombuilders er et hierarki, som bliver brugt til at generere XML kode. Til venstre er der 3 klasser der håndterer bygning af selve assertions, mens det højre klasse hierarki klassehierarki bliver brugt til at generere selve SOAP beskeden uden Assertion.
...
- Føderalt: Et kort oprettes lokalt valideres via et kald til en STS, som returnerer et kort der er digitalt underskrevet. Dette kort benyttes til fremtidige kald af webservices. Service Udbyderen skal nu kun autentificere STS'en.
- Via NemId:Hvis en bruger allerede er logget på et system via NemLogin, kan dette login benyttes til at kalde en webservice. Til NemLogin er associeret en SAML token. Denne token skal veksles til et DGWS ID kort. Når ID kortet er modtaget, benyttes det til fremtidige kald.
- SOSI Gateway: Kan benyttes Benyttes bl.a. til Sikker Browser Opstart (SBO).
- MitID/OIOSAML SecurityTokenServiceBst2Sosi har endpoint der også indeholder MitID omveksling.
...
| Code Block | ||
|---|---|---|
| ||
var userInfo = new UserInfo(
cpr,
givenName,
surName,
email,
occupation,
role,
authCode
);
var idCardRequest = SOSIFactory.CreateNewUserIdCard(
systemName,
userInfo,
new CareProvider(systemCareProviderIdFormat, systemCareProviderId, systemCareProviderName),
AuthenticationLevel.MocesTrustedUser,
username,
password,
userCertificate,
alternativeIdentifier
);
SOSIFactory factory = CreateFactory();
idCardRequest.Sign<Assertion>(factory.SignatureProvider);
var idc = SealUtilities.SignIn(
idCardRequest,
systemName,
"http://test2.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService"
);
var client = new MedicineCardPortTypeClient(MedicineCardPortTypeClient.EndpointConfiguration.MedicineCardPort, new EndpointAddress(new Uri("https://test2.fmk.netic.dk/fmk12/ws/MedicineCard")));
var response = client.GetMedicineCard_2015_06_01Async(
Security: SecurityHeaderUtil.MakeSecurityUsingDgwsTypes(idc),
Header: requestHeader,
WhitelistingHeader: makeWhitelistingHeader,
GetMedicineCardRequest: new GetMedicineCardRequestType
{
PersonIdentifier = new PersonIdentifierType { source = "CPR", Value = requestCpr }
}
); |
SOSI Gateway
Her vises og beskrives scenarier hvor SOSI Gateway bruges samme med 'Seal.NET'.
Oprettelse af ID kort i SOSI Gateway
Her vises Oprettelse af et SOSI ID kort i GW på baggrund af et bruger-signeret ID kort.
...
| Code Block | ||
|---|---|---|
| ||
public static async Task<Assertion> LoginToGateway(IdCard idCard, X509Certificate2 userCert)
{
var sosiGwAssertion = idCard.GetAssertion<GW.AssertionType>();
var security = new GW.Security
{
Timestamp = new GW.Timestamp { Created = DateTimeEx.UtcNowRound - TimeSpan.FromMinutes(5) },
Assertion = sosiGwAssertion
};
const string endpointAddress = "http://test1.ekstern-test.nspop.dk:8080/sosigw/service/sosigw";
await using var gwClient = new SosiGWFacadeClient(SosiGWSoapBinding, endpointAddress);
var dig = (await gwClient.requestIdCardDigestForSigningAsync(security, "whatever")).requestIdCardDigestForSigningResponse;
var digestHash = SHA1.HashData(dig.DigestValue);
var signature = userCert.GetRSAPrivateKey().SignHash(digestHash, HashAlgorithmName.SHA1, RSASignaturePadding.Pkcs1);
var cardRequestBody = new signIdCardRequestBody
{
SignatureValue = signature,
KeyInfo = new GW.KeyInfo
{
Item = new GW.X509Data { Item = userCert.Export(X509ContentType.Cert) }
}
};
// The STS signed card is saved in the sosiGw cache and is used for future calls through the proxy
var res = (await gwClient.signIdCardAsync(security, cardRequestBody)).signIdCardResponse;
if (res != signIdCardResponse.ok) { throw new Exception("Gateway logon error"); }
// Convert the GW Assertion to a dgwsType Assertion
var sosiGwAssertionDocument = SerializerUtil.Serialize(sosiGwAssertion).Root;
return SerializerUtil.Deserialize<dk.nsi.seal.dgwstypes.Assertion>(sosiGwAssertionDocument, nameof(GW.AssertionType));
} |
Kald gennem SOSI Gateway
Dette bruges til almindelige SOAP kald, hvor GW vil berige ID kortet med det den har gemt i dens cache. Det er derfor et krav at ID kortet først er oprettet i GW.
...
Der henvises til dokumentation af SOSI Gateway for yderligere detaljer.
SOSI Gateway SBO
SOSI Gateway kan bruges til SBO (Sikker Browser Opstart).
...
