Page History
...
Konverter en SAML assertion til et ID kort.
Eksempel:
| Code Block | ||
|---|---|---|
| ||
using dk.nsi.seal;
var response = Saml2SosiStsClient.ExchangeAssertion(clientCertificate, new Uri("http://test2.ekstern-test.nspop.dk:8080/sts/services/OIOSaml2Sosi"), nemidAssertion, authorizationCode); |
Soisi2SamlStsClient
Konverterer et ID kort til en SAML assertion, enten via direkte kald til STS eller via SOSI Gateway.
Eksempel på direkte kald:
| Code Block | ||
|---|---|---|
| ||
using dk.nsi.seal;
// Signer ID kort lokalt og send det til STS for at få et ID kort signeret af STS.
var assertion = idCard.GetAssertion<dk.nsi.seal.dgwstypes.Assertion>();
var localSignedAssertion = SealUtilities.SignAssertion(assertion, UserCert);
idCard.Xassertion = SerializerUtil.Serialize(localSignedAssertion).Root;
var stsSignedIdCard = SealUtilities.SignIn(idCard, "test", TestConstants.SecurityTokenService);
var response = Sosi2SamlStsClient.ExchangeAssertion(new Uri("http://test1.ekstern-test.nspop.dk:8080/sts/services/Sosi2OIOSaml"), "/ststest", stsSignedIdCard);
var responseXml = response.XAssertion; |
ID kort
ID kort
IdCard indpakker svaret fra en STS (IdCard indpakker svaret fra en STS (assertion) og giver mulighed for at benytte data i fremtidige kald.
...
- Føderalt: Et kort der 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.
- 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: Benyttes bl.a. til at cache ID kort, så en session kan håndteres af SOSI Gateway.
- MitID: MitID omvekslinger.
- OIOSAML: Kald til STS for at få tokens til eksterne systemer, f.eks. til Sikker Browser Opstart (SBO).
...
- Opstart (SBO).
TODO
OioSaml2Sosi
Eksempel:
| Code Block | ||
|---|---|---|
| ||
using dk.nsi.seal;
var response = Saml2SosiStsClient.ExchangeAssertion(clientCertificate, new Uri("http://test2.ekstern-test.nspop.dk:8080/sts/services/OIOSaml2Sosi"), nemidAssertion, authorizationCode); |
Føderalt
I et føderalt login skal en bruger først logges på føderationen. Dette gøres ved at kalde 'SealUtilities.SignIn' med et lokalt signeret ID kort.
...
| 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();
var response = client.GetMedicineCard_2015_06_01Async(
Security: SecurityHeaderUtil.MakeSecurityUsingDgwsTypes(idc),
Header: requestHeader,
WhitelistingHeader: makeWhitelistingHeader,
GetMedicineCardRequest: new GetMedicineCardRequestType
{
Security: SecurityHeaderUtil.MakeSecurityUsingDgwsTypes(idc),
PersonIdentifier = new PersonIdentifierType { source Header: requestHeader,= "CPR", Value = requestCpr }
WhitelistingHeader: makeWhitelistingHeader,
GetMedicineCardRequest: new GetMedicineCardRequestType
{
PersonIdentifier = new PersonIdentifierType { source = "CPR", Value = requestCpr }
}
); |
...
}
); |
Token til eksternt system (SBO)
Eksempel på direkte kald til STS for at få en SBO token:
| Code Block | ||
|---|---|---|
| ||
using dk.nsi.seal;
// Signer ID kort lokalt og send det til STS for at få et ID kort signeret af STS.
var assertion = idCard.GetAssertion<dk.nsi.seal.dgwstypes.Assertion>();
var localSignedAssertion = SealUtilities.SignAssertion(assertion, UserCert);
idCard.Xassertion = SerializerUtil.Serialize(localSignedAssertion).Root;
var stsSignedIdCard = SealUtilities.SignIn(idCard, "test", TestConstants.SecurityTokenService);
var response = Sosi2SamlStsClient.ExchangeAssertion(new Uri("http://test1.ekstern-test.nspop.dk:8080/sts/services/Sosi2OIOSaml"), "/ststest", stsSignedIdCard);
var responseXml = response.XAssertion; |
SOSI Gateway
Her vises og beskrives scenarier hvor SOSI Gateway bruges samme med 'Seal.NET'.
...
