Beispiel #1
0
        public async Task <IActionResult> SingleLogoutRequestAsync(string partyId, SingleLogoutSequenceData sequenceData)
        {
            logger.ScopeTrace("Down, SAML Single Logout request.");
            logger.SetScopeProperty("downPartyId", partyId);
            var party = await tenantRepository.GetAsync <SamlDownParty>(partyId);

            if (!ValidatePartySingleLogoutSupport(party))
            {
                return(await singleLogoutDownLogic.HandleSingleLogoutAsync(sequenceData));
            }

            var claims = await claimsDownLogic.FromJwtToSamlClaimsAsync(sequenceData.Claims.ToClaimList());

            switch (party.LogoutBinding.RequestBinding)
            {
            case SamlBindingTypes.Redirect:
                return(await SingleLogoutRequestAsync(party, new Saml2RedirectBinding(), claims));

            case SamlBindingTypes.Post:
                return(await SingleLogoutRequestAsync(party, new Saml2PostBinding(), claims));

            default:
                throw new NotSupportedException($"SAML binding '{party.LogoutBinding.RequestBinding}' not supported.");
            }
        }
Beispiel #2
0
 public Task <IActionResult> LogoutDoneAsync()
 {
     return(singleLogoutDownLogic.HandleSingleLogoutAsync());
 }