private void LogError(string message, SignOutValidationResult result) { // var log = JsonConvert.SerializeObject(result, Formatting.Indented); // _logger.LogError("{0}\n{1}", message, log.ToString()); }
public async Task <SignOutValidationResult> ValidateAsync(WsFederationMessage message, ClaimsPrincipal user) { _logger.LogInformation("Start WS-Federation signout request validation"); var result = new SignOutValidationResult { WsFederationMessage = message }; // check client var client = await _clients.FindEnabledClientByIdAsync(message.Wtrealm); if (client == null) { LogError("Client not found: " + message.Wtrealm, result); return(new SignOutValidationResult { Error = "invalid_relying_party" }); } if (client.Enabled == false) { LogError("Client is disabled: " + message.Wtrealm, result); return(new SignOutValidationResult { Error = "invalid_relying_party" }); } if (client.ProtocolType != IdentityServerConstants.ProtocolTypes.WsFederation) { LogError("Client is not configured for WS-Federation", result); return(new SignOutValidationResult { Error = "invalid_relying_party" }); } result.Client = client; result.ReplyUrl = client.RedirectUris.First(); // check if additional relying party settings exist var rp = await _relyingParties.FindRelyingPartyByRealm(message.Wtrealm); if (rp == null) { rp = new RelyingParty { TokenType = _options.DefaultTokenType, SignatureAlgorithm = _options.DefaultSignatureAlgorithm, DigestAlgorithm = _options.DefaultDigestAlgorithm, SamlNameIdentifierFormat = _options.DefaultSamlNameIdentifierFormat, ClaimMapping = _options.DefaultClaimMapping }; } result.RelyingParty = rp; if (user == null || user.Identity.IsAuthenticated == false) { result.SignOutRequired = false; return(result); } else { result.SessionId = await _userSession.GetSessionIdAsync(); result.ClientIds = await _userSession.GetClientListAsync(); result.SignOutRequired = true; } result.User = user; LogSuccess(result); return(result); }
private void LogSuccess(SignOutValidationResult result) { // var log = JsonConvert.SerializeObject(result, Formatting.Indented); // _logger.LogInformation("End WS-Federation signin request validation\n{0}", log.ToString()); }