public static Saml2ResponseSecurityTokenHandler GetSaml2SecurityTokenHandler(Saml2IdentityConfiguration configuration)
        {
            var handler = new Saml2ResponseSecurityTokenHandler();

#if NETFULL
            handler.Configuration = new SecurityTokenHandlerConfiguration
            {
                SaveBootstrapContext      = configuration.SaveBootstrapContext,
                AudienceRestriction       = configuration.AudienceRestriction,
                IssuerNameRegistry        = configuration.IssuerNameRegistry,
                CertificateValidationMode = configuration.CertificateValidationMode,
                RevocationMode            = configuration.RevocationMode,
                CertificateValidator      = configuration.CertificateValidator,
                DetectReplayedTokens      = configuration.DetectReplayedTokens,
                Caches = configuration.Caches,
                TokenReplayCacheExpirationPeriod = configuration.TokenReplayCacheExpirationPeriod,
                IssuerTokenResolver = configuration.IssuerTokenResolver
            };

            handler.SamlSecurityTokenRequirement.NameClaimType = ClaimTypes.NameIdentifier;
#else
            handler.TokenValidationParameters = configuration;
#endif
            return(handler);
        }
        public Saml2Request(Saml2Configuration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            Config = config;
            Issuer = config.Issuer;
            IdentityConfiguration = Saml2IdentityConfiguration.GetIdentityConfiguration(config);

            Id           = new Saml2Id();
            Version      = Saml2Constants.VersionNumber;
            IssueInstant = DateTimeOffset.UtcNow;
#if DEBUG
            Debug.WriteLine("Message ID: " + Id);
#endif
        }