private static void ValidateOptions() { // Load web root path from config if (string.IsNullOrWhiteSpace(Options.VirtualDirectory)) { Options.VirtualDirectory = "/"; } Options.VirtualDirectory = NormalizeUrl(Options.VirtualDirectory); // Set default options if (string.IsNullOrWhiteSpace(Options.ResponseType)) { Options.ResponseType = "code"; } if (string.IsNullOrWhiteSpace(Options.Scope)) { Options.Scope = "openid"; } if (string.IsNullOrWhiteSpace(Options.CallbackPath)) { Options.CallbackPath = $"{Options.VirtualDirectory}/owin/security/keycloak/{Uri.EscapeDataString(Options.AuthenticationScheme)}/callback"; } if (string.IsNullOrWhiteSpace(Options.PostLogoutRedirectUrl)) { Options.PostLogoutRedirectUrl = Options.VirtualDirectory; } if (Options.SignInAsAuthenticationSchema == null) { try { //Options.SignInAsAuthenticationType = App.GetDefaultSignInAsAuthenticationType(); Options.SignInAsAuthenticationSchema = ""; } catch (Exception) { Options.SignInAsAuthenticationSchema = ""; } } // Switch composite options if (Options.EnableWebApiMode) { Options.EnableBearerTokenAuth = true; Options.ForceBearerTokenAuth = true; } // Validate other options if (Options.ForceBearerTokenAuth && !Options.EnableBearerTokenAuth) { Options.EnableBearerTokenAuth = true; } Options.KeycloakUrl = NormalizeUrl(Options.KeycloakUrl); Options.CallbackPath = NormalizeUrlPath(Options.CallbackPath); // Final parameter validation KeycloakIdentity.ValidateParameters(Options); }
private void ValidateOptions() { // Check to ensure authentication type isn't already used var authType = Options.AuthenticationType; if (!Global.KeycloakOptionStore.TryAdd(authType, Options)) { throw new Exception( $"KeycloakAuthenticationOptions: Authentication type '{authType}' already used; required unique"); } // Verify required options if (Options.KeycloakUrl == null) { ThrowOptionNotFound(nameof(Options.KeycloakUrl)); } if (Options.Realm == null) { ThrowOptionNotFound(nameof(Options.Realm)); } // Load web root path from config if (string.IsNullOrWhiteSpace(Options.VirtualDirectory)) { Options.VirtualDirectory = "/"; } Options.VirtualDirectory = NormalizeUrl(Options.VirtualDirectory); if (!Uri.IsWellFormedUriString(Options.VirtualDirectory, UriKind.Relative)) { ThrowInvalidOption(nameof(Options.VirtualDirectory)); } // Set default options if (string.IsNullOrWhiteSpace(Options.ResponseType)) { Options.ResponseType = "code"; } if (string.IsNullOrWhiteSpace(Options.Scope)) { Options.Scope = "openid"; } if (string.IsNullOrWhiteSpace(Options.CallbackPath)) { Options.CallbackPath = $"{Options.VirtualDirectory}/owin/security/keycloak/{Uri.EscapeDataString(Options.AuthenticationType)}/callback"; } if (string.IsNullOrWhiteSpace(Options.PostLogoutRedirectUrl)) { Options.PostLogoutRedirectUrl = Options.VirtualDirectory; } if (Options.SignInAsAuthenticationType == null) { try { Options.SignInAsAuthenticationType = App.GetDefaultSignInAsAuthenticationType(); } catch (Exception) { Options.SignInAsAuthenticationType = ""; } } // Switch composite options if (Options.EnableWebApiMode) { Options.EnableBearerTokenAuth = true; Options.ForceBearerTokenAuth = true; } // Validate other options if (Options.ForceBearerTokenAuth && !Options.EnableBearerTokenAuth) { Options.EnableBearerTokenAuth = true; } Options.KeycloakUrl = NormalizeUrl(Options.KeycloakUrl); Options.CallbackPath = NormalizeUrlPath(Options.CallbackPath); // Final parameter validation KeycloakIdentity.ValidateParameters(Options); }
private void ValidateOptions() { var logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); // Check to ensure authentication type isn't already used var authType = Options.AuthenticationType; if (!Global.KeycloakOptionStore.TryAdd(authType, Options)) { logger.Error($"KeycloakAuthenticationOptions: Authentication type '{authType}' already used; required unique"); throw new Exception( $"KeycloakAuthenticationOptions: Authentication type '{authType}' already used; required unique"); } // Verify required options if (Options.KeycloakUrl == null) { ThrowOptionNotFound(nameof(Options.KeycloakUrl)); } if (Options.Realm == null) { ThrowOptionNotFound(nameof(Options.Realm)); } // Load web root path from config if (string.IsNullOrWhiteSpace(Options.VirtualDirectory)) { Options.VirtualDirectory = "/"; } Options.VirtualDirectory = NormalizeUrl(Options.VirtualDirectory); if (!Uri.IsWellFormedUriString(Options.VirtualDirectory, UriKind.Relative)) { ThrowInvalidOption(nameof(Options.VirtualDirectory)); } // Set default options if (string.IsNullOrWhiteSpace(Options.ResponseType)) { Options.ResponseType = "code"; } if (string.IsNullOrWhiteSpace(Options.Scope)) { Options.Scope = "openid"; } if (string.IsNullOrWhiteSpace(Options.CallbackPath)) { Options.CallbackPath = $"{Options.VirtualDirectory}/owin/security/keycloak/{Uri.EscapeDataString(Options.AuthenticationType)}/callback"; } if (string.IsNullOrWhiteSpace(Options.PostLogoutRedirectUrl)) { Options.PostLogoutRedirectUrl = Options.VirtualDirectory; } if (Options.SignInAsAuthenticationType == null) { try { Options.SignInAsAuthenticationType = App.GetDefaultSignInAsAuthenticationType(); } catch (Exception) { Options.SignInAsAuthenticationType = ""; } } // Switch composite options if (Options.EnableWebApiMode) { Options.EnableBearerTokenAuth = true; Options.ForceBearerTokenAuth = true; } // Validate other options if (Options.ForceBearerTokenAuth && !Options.EnableBearerTokenAuth) { Options.EnableBearerTokenAuth = true; } Options.KeycloakUrl = NormalizeUrl(Options.KeycloakUrl); Options.CallbackPath = NormalizeUrlPath(Options.CallbackPath); //for more than 2 minutes set default value if (TimeSpan.Compare(Options.RefreshBeforeTokenExpiration.Duration(), TimeSpan.FromSeconds(120).Duration()) > 0) { Options.RefreshBeforeTokenExpiration = TimeSpan.FromSeconds(30); } // Final parameter validation KeycloakIdentity.ValidateParameters(Options); }