private Saml2StatusCodes ErrorToSamlStatus(LoginSequenceError error) { switch (error) { case LoginSequenceError.LoginCanceled: return(Saml2StatusCodes.AuthnFailed); case LoginSequenceError.LoginRequired: return(Saml2StatusCodes.NoAuthnContext); default: throw new NotImplementedException(); } }
private string ErrorToOAuth2OidcString(LoginSequenceError error) { switch (error) { // Default case LoginSequenceError.LoginCanceled: return(Constants.OAuth.ResponseErrors.LoginCanceled); // OAuth // Oidc case LoginSequenceError.LoginRequired: return(IdentityConstants.ResponseErrors.LoginRequired); default: throw new NotImplementedException(); } }
public async Task <IActionResult> LoginResponseErrorAsync(LoginSequenceError error, string errorDescription = null) { logger.ScopeTrace("Login error response."); var sequenceData = await sequenceLogic.GetSequenceDataAsync <LoginUpSequenceData>(); logger.SetScopeProperty("upPartyId", sequenceData.UpPartyId); logger.ScopeTrace($"Response, Down type '{sequenceData.DownPartyType}'."); switch (sequenceData.DownPartyType) { case PartyTypes.OAuth2: throw new NotImplementedException(); case PartyTypes.Oidc: return(await serviceProvider.GetService <OidcAuthDownLogic <OidcDownParty, OidcDownClient, OidcDownScope, OidcDownClaim> >().AuthenticationResponseErrorAsync(sequenceData.DownPartyId, ErrorToOAuth2OidcString(error), errorDescription)); case PartyTypes.Saml2: return(await serviceProvider.GetService <SamlAuthnDownLogic>().AuthnResponseAsync(sequenceData.DownPartyId, status: ErrorToSamlStatus(error))); default: throw new NotSupportedException($"Party type '{sequenceData.DownPartyType}' not supported."); } }