use of uk.gov.ida.hub.samlengine.domain.InboundResponseFromIdpDto in project verify-hub by alphagov.
the class IdpAuthnResponseTranslatorService method translate.
public InboundResponseFromIdpDto translate(SamlAuthnResponseTranslatorDto samlResponseDto) {
Response response = stringToOpenSamlResponseTransformer.apply(samlResponseDto.getSamlResponse());
MdcHelper.addContextToMdc(response);
try {
InboundResponseFromIdp idaResponseFromIdp = samlResponseToIdaResponseIssuedByIdpTransformer.apply(response);
UnknownMethodAlgorithmLogger.probeResponseForMethodAlgorithm(idaResponseFromIdp);
if (idaResponseFromIdp.getAuthnStatementAssertion().isPresent()) {
Assertion authnStatementAssertion = stringToAssertionTransformer.apply(idaResponseFromIdp.getAuthnStatementAssertion().get().getUnderlyingAssertionBlob());
logAnalytics(authnStatementAssertion, AUTHN_STATEMENT);
}
Assertion matchingDatasetAssertion = null;
if (idaResponseFromIdp.getMatchingDatasetAssertion().isPresent()) {
matchingDatasetAssertion = stringToAssertionTransformer.apply(idaResponseFromIdp.getMatchingDatasetAssertion().get().getUnderlyingAssertionBlob());
logAnalytics(matchingDatasetAssertion, MATCHING_DATASET);
}
InboundResponseFromIdpData inboundResponseFromIdpData = inboundResponseFromIdpDataGenerator.generate(idaResponseFromIdp, samlResponseDto.getMatchingServiceEntityId());
Optional<LevelOfAssurance> levelOfAssurance = Optional.empty();
if (!Strings.isNullOrEmpty(inboundResponseFromIdpData.getLevelOfAssurance())) {
levelOfAssurance = Optional.of(LevelOfAssurance.valueOf(inboundResponseFromIdpData.getLevelOfAssurance()));
}
logVerifiedAttributes(idaResponseFromIdp, matchingDatasetAssertion, levelOfAssurance);
return new InboundResponseFromIdpDto(inboundResponseFromIdpData.getStatus(), inboundResponseFromIdpData.getStatusMessage(), inboundResponseFromIdpData.getIssuer(), inboundResponseFromIdpData.getAuthnStatementAssertionBlob(), inboundResponseFromIdpData.getEncryptedMatchingDatasetAssertion(), inboundResponseFromIdpData.getPersistentId(), inboundResponseFromIdpData.getPrincipalIpAddressAsSeenByIdp(), levelOfAssurance, inboundResponseFromIdpData.getIdpFraudEventId(), inboundResponseFromIdpData.getFraudIndicator());
} catch (SamlTransformationErrorException e) {
throw new SamlContextException(response.getID(), response.getIssuer().getValue(), e);
}
}
use of uk.gov.ida.hub.samlengine.domain.InboundResponseFromIdpDto in project verify-hub by alphagov.
the class IdpAuthnResponseTranslatorServiceTest method shouldExtractAuthnStatementAssertionDetails.
@Test
public void shouldExtractAuthnStatementAssertionDetails() {
when(responseFromIdp.getAuthnStatementAssertion()).thenReturn(of(authStatementAssertion));
InboundResponseFromIdpDto result = translateAndCheckCommonFields();
checkAuthnStatementValues(result);
}
use of uk.gov.ida.hub.samlengine.domain.InboundResponseFromIdpDto in project verify-hub by alphagov.
the class IdpAuthnResponseTranslatorServiceTest method shouldExtractLevelOfAssurance.
@Test
public void shouldExtractLevelOfAssurance() {
AuthnContext authnContext = AuthnContext.LEVEL_1;
when(authStatementAssertion.getAuthnContext()).thenReturn(Optional.of(authnContext));
when(responseFromIdp.getAuthnStatementAssertion()).thenReturn(of(authStatementAssertion));
InboundResponseFromIdpDto result = translateAndCheckCommonFields();
checkAuthnStatementValues(result);
assertThat(result.getLevelOfAssurance().get().name()).isEqualTo(authnContext.name());
}
use of uk.gov.ida.hub.samlengine.domain.InboundResponseFromIdpDto in project verify-hub by alphagov.
the class IdpAuthnResponseTranslatorServiceTest method shouldExtractFraudDetails.
@Test
public void shouldExtractFraudDetails() {
String fraudIndicator = "fraud indicator";
String fraudEventId = "fraud event id";
FraudDetectedDetails fraudDetectedDetails = Mockito.mock(FraudDetectedDetails.class);
when(fraudDetectedDetails.getFraudIndicator()).thenReturn(fraudIndicator);
when(fraudDetectedDetails.getIdpFraudEventId()).thenReturn(fraudEventId);
when(authStatementAssertion.getFraudDetectedDetails()).thenReturn(Optional.of(fraudDetectedDetails));
when(responseFromIdp.getAuthnStatementAssertion()).thenReturn(of(authStatementAssertion));
InboundResponseFromIdpDto result = translateAndCheckCommonFields();
checkAuthnStatementValues(result);
assert (result.getFraudIndicator().get()).equals(fraudIndicator);
assert (result.getIdpFraudEventId().get()).equals(fraudEventId);
}
use of uk.gov.ida.hub.samlengine.domain.InboundResponseFromIdpDto in project verify-hub by alphagov.
the class IdpAuthnResponseTranslatorServiceTest method shouldHandleNoAssertions.
@Test
public void shouldHandleNoAssertions() {
InboundResponseFromIdpDto result = translateAndCheckCommonFields();
assertThat(result.getAuthnStatementAssertionBlob().isPresent()).isFalse();
assertThat(result.getEncryptedMatchingDatasetAssertion().isPresent()).isFalse();
assertThat(result.getLevelOfAssurance().isPresent()).isFalse();
assertThat(result.getPersistentId().isPresent()).isFalse();
assertThat(result.getFraudIndicator().isPresent()).isFalse();
assertThat(result.getIdpFraudEventId().isPresent()).isFalse();
}
Aggregations