Page History
| Navitabs | ||||
|---|---|---|---|---|
| ||||
I det følgende beskrives hvad en En service provider skal gøre følgende når der modtages et IDWS request.
- CredentialVa
- Er requestet gyldigt i tid?
- Kan requestets signatur valideres?
- Hent Identity Token
- Er Identity Token gyldigt i tid?
- Kan Identity Token signatur valideres?
- Matcher audience?
- Gennemløb øvrige OIO SAML Attributter og verificer dem..
Der vil også være kodeeksempler der vise hvordan det skal gøres i praksis.
Først skal der laves en instans af den factory der kan håndtere IDWS. Den skal oprettes med den Federation man ønsker at anvende (Test eller Prod) og i dette eksmpel benyttes Test:
| Code Block |
|---|
// Opret instans af den ønskede Federation
SOSITestFederation sosiTestFederation = new SOSITestFederation(new Properties());
// Opret ny instans af factory der kan håndtere IDWS:
OIOIDWSFactory factory = new OIOIDWSFactory(sosiTestFederation, null); |
Bemærk: Den andet argument til OIOIDWSFactory er "null". Det er den CredentialVault der ønskes anvendt og hvis man sætter den til "null", så anvendes CredentialVault fra STS.
Hvis man modtager det indkomne request som en Stream, så kan man benytte Seal til at validere det og hente Identity Token ud, som man så kan arbejde videre med og benytte informationerne i servicen:
| Code Block |
|---|
// Deserialisering af den indkomne "inputStream" til et Document
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
Document document = documentBuilderFactory.newDocumentBuilder().parse(inputStream);
// I forbindelse med deserialisering til LibertyRequest bliver det både signatur og gyldighed valideret
LibertyRequest request = factory.createRequest(document);
// Nu har man et IdentityToken man kan arbejde videre med informationerne f.eks.cpr nummer
CitizenIdentityToken identityToken = request.getIdentityToken();
String cpr = identityToken.getCpr(); |
| Code Block |
Document providerRequest = XmlUtil.readXml(new Properties(), providerRequestXml, false);
// Er det et DGWS eller IDWS request
Element securityProtocol = provider.getElementsByTagName("dk:gov:saml:attribute:SpecVer").item(0);
// Pseudokode indtil videre...
if (securityProtocol != null && securityProtocol.contains("DK-SAML-2.0")) {
// IDWS
// Tjek om Identity Token er gyldigt
citizenIdentityToken.validateTimestamp();
}
|