Plugin Directory

Changeset 3360768


Ignore:
Timestamp:
09/12/2025 09:34:33 PM (7 months ago)
Author:
teamwpminiorange
Message:

Release v6.26.13

Location:
miniorange-login-with-eve-online-google-facebook
Files:
352 added
5 edited

Legend:

Unmodified
Added
Removed
  • miniorange-login-with-eve-online-google-facebook/trunk/class-mooauth-debug.php

    r3331464 r3360768  
    1515
    1616    /**
     17     * Delete the debug log file if it is older than 7 days, using WordPress options for time tracking.
     18     */
     19    public static function auto_delete_old_log() {
     20        $mo_log_enable  = ( null !== get_option( 'mo_debug_enable' ) ) ? get_option( 'mo_debug_enable' ) : '';
     21        $mo_oauth_debug = ( null !== get_option( 'mo_oauth_debug' ) ) ? get_option( 'mo_oauth_debug' ) : '';
     22
     23        $log_file_path = self::get_log_file_path();
     24
     25        if ( 'on' === $mo_log_enable ) {
     26            $key            = 604800; // 7 days in seconds (7 * 24 * 60 * 60)
     27            $mo_debug_times = ( null !== get_option( 'mo_debug_time' ) ) ? get_option( 'mo_debug_time' ) : '';
     28            $mo_curr_time   = time();
     29
     30            if ( ! $mo_debug_times ) {
     31                update_option( 'mo_debug_time', $mo_curr_time );
     32                return;
     33            }
     34
     35            $mo_oauth_var = (int) ( ( $mo_curr_time - $mo_debug_times ) / ( $key ) );
     36            if ( $mo_oauth_var >= 1 ) {
     37                update_option( 'mo_debug_enable', 0 );
     38                if ( file_exists( $log_file_path ) ) {
     39                    wp_delete_file( $log_file_path );
     40                }
     41            }
     42        }
     43    }
     44    /**
    1745     * Get the log file path
    1846     *
     
    3058     */
    3159    public static function mo_oauth_log( $mo_message ) {
     60        // Only log if debug is enabled and a log file exists.
     61        if ( get_option( 'mo_debug_enable' ) !== 'on' ) {
     62            return;
     63        }
    3264        $mo_pluginlog = self::get_log_file_path();
    33 
     65        if ( ! file_exists( $mo_pluginlog ) ) {
     66            return;
     67        }
    3468        $mo_time = time();
    3569        $mo_log  = '[' . gmdate( 'Y-m-d H:i:s', $mo_time ) . ' UTC] : ' . print_r( $mo_message, true ) . PHP_EOL; //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r, WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Used for debugging purposes
    3670
    37         if ( get_option( 'mo_debug_enable' ) === 'on' ) {
    3871            // Only write the message if it's not empty or if it's not the initial check.
    39             if ( ! get_option( 'mo_debug_check' ) && ! empty( $mo_message ) ) {
    40                 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
    41                 error_log( $mo_log . PHP_EOL, 3, $mo_pluginlog );
    42             }
     72        if ( ! get_option( 'mo_debug_check' ) && ! empty( $mo_message ) ) {
     73            // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
     74            error_log( $mo_log . PHP_EOL, 3, $mo_pluginlog );
    4375        }
     76
    4477    }
    4578}
  • miniorange-login-with-eve-online-google-facebook/trunk/class-mooauth-widget.php

    r3293145 r3360768  
    283283                }
    284284
    285                 $state             = base64_encode( $appname ); //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode -- Base64 encode will be required for fetching appname from state.
    286                 $authorization_url = $app['authorizeurl'];
     285                $timestamp           = time();
     286                $client_ip           = mooauth_get_client_ip();
     287                $hmac_secret         = wp_salt( 'auth' );
     288                $timestamp_hmac      = hash_hmac( 'sha256', $timestamp, $hmac_secret );
     289                $state_nonce         = bin2hex( \openssl_random_pseudo_bytes( 32 ) );
     290                $state_nonce_hmac    = hash_hmac( 'sha256', $state_nonce, $timestamp_hmac );
     291                $ip_hmac             = hash_hmac( 'sha256', $client_ip, $timestamp_hmac );
     292                $state_string        = $appname . '|' . $timestamp . '|' . $ip_hmac . '|' . $state_nonce_hmac;
     293                $state_string_cookie = $appname . '|' . $timestamp . '|' . $ip_hmac . '|' . $state_nonce;
     294                $state_cookie        = base64_encode( $state_string_cookie );//phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode -- Base64 encode will be required for fetching appname from state.
     295                $state               = base64_encode( $state_string ); //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode -- Base64 encode will be required for fetching appname from state.
     296                $authorization_url   = $app['authorizeurl'];
    287297
    288298                if ( strpos( $authorization_url, '?' ) !== false ) {
     
    291301                    $authorization_url = $authorization_url . '?client_id=' . $app['clientid'] . '&scope=' . $app['scope'] . '&redirect_uri=' . $app['redirecturi'] . '&response_type=code&state=' . $state;
    292302                }
     303
     304                setcookie(
     305                    'mo_oauth_sso_' . $appname . '_state',
     306                    $state_cookie,
     307                    array(
     308                        'expires'  => time() + 300,   // 5 minutes
     309                        'httponly' => true,
     310                        'secure'   => is_ssl(),
     311                        'samesite' => 'Lax',
     312                        'path'     => COOKIEPATH,
     313                        'domain'   => COOKIE_DOMAIN,
     314                    )
     315                );
    293316
    294317                if ( strpos( $authorization_url, 'apple' ) !== false ) {
     
    330353                    session_start();
    331354                }
    332                 $_SESSION['oauth2state'] = $state;
     355                $_SESSION['oauth2state'] = $state_cookie;
    333356                $_SESSION['appname']     = $appname;
    334357
     
    344367                    $authorization_url = $authorization_url . '?client_id=' . $app['clientid'] . '&scope=' . $app['scope'] . '&redirect_uri=' . $app['redirecturi'] . '&response_type=code';
    345368                }
    346 
     369                setcookie(
     370                    'mo_oauth_sso_' . $appname . '_state',
     371                    $state_cookie,
     372                    array(
     373                        'expires'  => time() + 300,   // 5 minutes
     374                        'httponly' => true,
     375                        'secure'   => is_ssl(),
     376                        'samesite' => 'Lax',
     377                        'path'     => COOKIEPATH,
     378                        'domain'   => COOKIE_DOMAIN,
     379                    )
     380                );
    347381                if ( session_id() === '' || ! isset( $_SESSION ) ) {
    348382                    session_start();
    349383                }
    350                 $_SESSION['oauth2state'] = $state;
     384                $_SESSION['oauth2state'] = $state_cookie;
    351385                $_SESSION['appname']     = $appname;
    352386
     
    515549                if ( isset( $_SESSION['appname'] ) && ! empty( $_SESSION['appname'] ) ) {
    516550                    $currentappname = sanitize_text_field( $_SESSION['appname'] );
    517                 } elseif ( isset( $_REQUEST['state'] ) && ! empty( $_REQUEST['state'] ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Ignoring nonce verification because we are fetching data from URL and not on form submission.
    518                     $currentappname = sanitize_text_field( wp_unslash( base64_decode( $_REQUEST['state'] ) ) ); //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.NonceVerification.Recommended, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Base64 encoding will be required to fetch current app name from state. Sanitizing late for $_REQUEST['state'] as we need to sanitize after decode.
     551                }
     552                if ( isset( $_REQUEST['state'] ) && ! empty( $_REQUEST['state'] ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Ignoring nonce verification because we are fetching data from URL and not on form submission.
     553                    $state_encoded  = sanitize_text_field( wp_unslash( $_REQUEST['state'] ) ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Ignoring nonce verification because we are fetching data from URL and not on form submission.
     554                    $state_data     = mooauth_validate_state( $state_encoded );
     555                    $currentappname = $state_data['appname'];
     556                } else {
     557                    $appslist       = get_option( 'mo_oauth_apps_list' );
     558                    $state_required = false;
     559                    foreach ( $appslist as $key => $app ) {
     560                        MOOAuth_Debug::mo_oauth_log( 'Send State Value: ' );
     561                        MOOAuth_Debug::mo_oauth_log( $app['send_state'] );
     562                        if ( isset( $app['send_state'] ) && $app['send_state'] == true ) {
     563                            $state_required = true;
     564                            break;
     565                        }
     566                    }
     567                    if ( $state_required ) {
     568                        MOOAuth_Debug::mo_oauth_log( 'ERROR : State parameter is required but not found in request.' );
     569                        wp_die( 'Authentication failed. State parameter is required.' );
     570                    }
    519571                }
    520572
     
    574626                    } else { // Openid flow.
    575627                        $code = ! empty( $_GET['code'] ) ? sanitize_text_field( wp_unslash( $_GET['code'] ) ) : ''; //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Ignoring nonce verification because we are fetching data from URL and not on form submission.
    576                         if ( isset( $_REQUEST['id_token'] ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Ignoring nonce verification because we are fetching data from URL and not on form submission.
    577                             $id_token = sanitize_text_field( wp_unslash( $_REQUEST['id_token'] ) ); //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Ignoring nonce verification because we are fetching data from URL and not on form submission.
    578                         } else {
    579                             if ( ! isset( $currentapp['send_headers'] ) ) {
    580                                 $currentapp['send_headers'] = false;
    581                             }
    582                             if ( ! isset( $currentapp['send_body'] ) ) {
    583                                 $currentapp['send_body'] = false;
    584                             }
    585                             $token_response = $mo_oauth_handler->get_id_token(
    586                                 $currentapp['accesstokenurl'],
    587                                 'authorization_code',
    588                                 $currentapp['clientid'],
    589                                 $currentapp['clientsecret'],
    590                                 $code,
    591                                 $currentapp['redirecturi'],
    592                                 $currentapp['send_headers'],
    593                                 $currentapp['send_body']
    594                             );
    595 
    596                             $id_token = isset( $token_response['id_token'] ) ? $token_response['id_token'] : $token_response['access_token'];
    597 
     628                        if ( ! isset( $currentapp['send_headers'] ) ) {
     629                            $currentapp['send_headers'] = false;
    598630                        }
    599 
    600                         if ( ! $id_token ) {
    601                             MOOAuth_Debug::mo_oauth_log( 'Token Response Recieved => ERROR : Invalid token received.' );
    602                             exit( 'Invalid token received.' );
    603                         } else {
    604                             MOOAuth_Debug::mo_oauth_log( 'ID Token => ' );
    605                             MOOAuth_Debug::mo_oauth_log( $id_token );
    606                             $resource_owner = $mo_oauth_handler->get_resource_owner_from_id_token( $id_token );
    607                             MOOAuth_Debug::mo_oauth_log( 'Resource Owner Response => ' . wp_json_encode( $resource_owner ) );
     631                        if ( ! isset( $currentapp['send_body'] ) ) {
     632                            $currentapp['send_body'] = false;
    608633                        }
     634                        $token_response = $mo_oauth_handler->get_id_token(
     635                            $currentapp['accesstokenurl'],
     636                            'authorization_code',
     637                            $currentapp['clientid'],
     638                            $currentapp['clientsecret'],
     639                            $code,
     640                            $currentapp['redirecturi'],
     641                            $currentapp['send_headers'],
     642                            $currentapp['send_body']
     643                        );
     644
     645                        $id_token = isset( $token_response['id_token'] ) ? $token_response['id_token'] : $token_response['access_token'];
     646                        MOOAuth_Debug::mo_oauth_log( 'ID Token => ' );
     647                        MOOAuth_Debug::mo_oauth_log( $id_token );
     648                        $resource_owner = $mo_oauth_handler->get_resource_owner_from_id_token( $id_token );
     649                        MOOAuth_Debug::mo_oauth_log( 'Resource Owner Response => ' . wp_json_encode( $resource_owner ) );
    609650                    }
    610651                } else {
     
    9871028    add_action( 'widgets_init', 'mooauth_register_widget' );
    9881029    add_action( 'init', 'mooauth_login_validate' );
     1030
     1031/**
     1032 * Get client IP address
     1033 *
     1034 * @return string Client IP address
     1035 */
     1036function mooauth_get_client_ip() {
     1037    $ipaddress = '';
     1038    if ( getenv( 'HTTP_CLIENT_IP' ) ) {
     1039        $ipaddress = getenv( 'HTTP_CLIENT_IP' );
     1040    } elseif ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
     1041        $ipaddress = getenv( 'HTTP_X_FORWARDED_FOR' );
     1042    } elseif ( getenv( 'HTTP_X_FORWARDED' ) ) {
     1043        $ipaddress = getenv( 'HTTP_X_FORWARDED' );
     1044    } elseif ( getenv( 'HTTP_FORWARDED_FOR' ) ) {
     1045        $ipaddress = getenv( 'HTTP_FORWARDED_FOR' );
     1046    } elseif ( getenv( 'HTTP_FORWARDED' ) ) {
     1047        $ipaddress = getenv( 'HTTP_FORWARDED' );
     1048    } elseif ( getenv( 'REMOTE_ADDR' ) ) {
     1049        $ipaddress = getenv( 'REMOTE_ADDR' );
     1050    } else {
     1051        $ipaddress = 'UNKNOWN';
     1052    }
     1053    return $ipaddress;
     1054}
     1055
     1056/**
     1057 * Validate OAuth state parameter
     1058 * Expected format: appname|timestamp|ip_hmac
     1059 *
     1060 * @param string $state_encoded Base64 encoded state parameter.
     1061 * @return array Decoded state data or wp_die() if invalid
     1062 */
     1063function mooauth_validate_state( $state_encoded ) {
     1064    $state_string = base64_decode( $state_encoded ); //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Base64 decode will be required for fetching appname from state.
     1065
     1066    if ( ! $state_string ) {
     1067        MOOAuth_Debug::mo_oauth_log( 'ERROR : Invalid state parameter format.' );
     1068        wp_die( 'Authentication failed. Please try again.' );
     1069    }
     1070
     1071    $state_parts = explode( '|', $state_string );
     1072
     1073    if ( count( $state_parts ) !== 4 ) {
     1074        MOOAuth_Debug::mo_oauth_log( 'ERROR : Invalid state parameter structure.' );
     1075        wp_die( 'Authentication failed. Please try again.' );
     1076    }
     1077
     1078    $appname                  = $state_parts[0];
     1079    $timestamp                = $state_parts[1];
     1080    $ip_hmac                  = $state_parts[2];
     1081    $state_nonce_hmac_request = $state_parts[3];
     1082
     1083    $hmac_secret = wp_salt( 'auth' );
     1084
     1085    $current_time = time();
     1086    $state_time   = intval( $timestamp );
     1087    $time_diff    = $current_time - $state_time;
     1088
     1089    if ( $time_diff > 300 ) { // 5 minutes = 300 seconds
     1090        MOOAuth_Debug::mo_oauth_log( 'ERROR : State parameter expired. Time difference: ' . $time_diff . ' seconds.' );
     1091        wp_die( 'Authentication failed. Please try again.' );
     1092    }
     1093
     1094    $timestamp_hmac = hash_hmac( 'sha256', $timestamp, $hmac_secret );
     1095    $cookie_name    = 'mo_oauth_sso_' . $appname . '_state';
     1096    $cookie_state   = sanitize_text_field( wp_unslash( $_COOKIE[ $cookie_name ] ?? '' ) );
     1097    $current_ip     = mooauth_get_client_ip();
     1098    if ( ! empty( $cookie_state ) ) {
     1099        $state_string            = base64_decode( $cookie_state ); //phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode -- Base64 decode will be required for fetching appname from state.
     1100        $state_parts             = explode( '|', $state_string );
     1101        $state_nonce_cookie      = $state_parts[3];
     1102        $state_nonce_hmac_cookie = hash_hmac( 'sha256', $state_nonce_cookie, $timestamp_hmac );
     1103        if ( $state_nonce_hmac_request !== $state_nonce_hmac_cookie ) {
     1104            MOOAuth_Debug::mo_oauth_log( 'ERROR : State parameter mismatch. Expected: ' . $cookie_state . ', Got: ' . $state_encoded );
     1105            wp_die( 'Authentication failed. Please try again.' );
     1106        }
     1107    } else {
     1108        $current_ip_hmac = hash_hmac( 'sha256', $current_ip, $timestamp_hmac );
     1109
     1110        if ( $current_ip_hmac !== $ip_hmac ) {
     1111            MOOAuth_Debug::mo_oauth_log( 'ERROR : IP address mismatch. Expected: ' . $ip_hmac . ', Got: ' . $current_ip_hmac );
     1112            wp_die( 'Authentication failed. Please try again.' );
     1113        }
     1114    }
     1115    return array(
     1116        'appname'   => $appname,
     1117        'timestamp' => $state_time,
     1118        'ip'        => $current_ip,
     1119    );
     1120}
    9891121?>
  • miniorange-login-with-eve-online-google-facebook/trunk/class-mooauth.php

    r3331464 r3360768  
    1919    public function __construct() {
    2020
     21        add_action( 'mo_oauth_auto_delete_debug_logs', array( $this, 'handle_debug_log_cleanup' ) );
    2122        add_action( 'admin_init', array( $this, 'miniorange_oauth_save_settings' ), 11 );
    2223        add_action( 'plugins_loaded', array( $this, 'mo_load_plugin_textdomain' ) );
     
    4546    public function mo_oauth_debug_log_ajax_hook() {
    4647        add_action( 'wp_ajax_mo_oauth_debug_ajax', array( $this, 'mo_oauth_debug_log_ajax' ) );
     48        $mo_log_enable = get_option( 'mo_debug_enable' );
     49        if ( isset( $mo_log_enable ) && 'on' === $mo_log_enable && get_option( 'mo_debug_time' ) === false ) {
     50            $cron_exists = wp_next_scheduled( 'mo_oauth_auto_delete_debug_logs' );
     51            if ( ! $cron_exists ) {
     52                wp_schedule_single_event( time() + 604800, 'mo_oauth_auto_delete_debug_logs' );
     53            }
     54            update_option( 'mo_debug_time', time() );
     55        }
     56    }
     57
     58    /**
     59     * Handle debug log cleanup
     60     */
     61    public function handle_debug_log_cleanup() {
     62        if ( class_exists( 'MOOAuth_Debug' ) ) {
     63
     64            MOOAuth_Debug::auto_delete_old_log();
     65        }
    4766    }
    4867
     
    107126                    }
    108127                }
     128                if ( ! wp_next_scheduled( 'mo_oauth_auto_delete_debug_logs' ) ) {
     129                    wp_schedule_single_event( time() + 604800, 'mo_oauth_auto_delete_debug_logs' );
     130                }
     131                $mo_curr_time = time();
     132                update_option( 'mo_debug_time', $mo_curr_time );
    109133
    110134                update_option( 'mo_debug_check', 0 );
     
    112136
    113137            if ( 'off' === $debug_enable ) {
     138                if ( wp_next_scheduled( 'mo_oauth_auto_delete_debug_logs' ) ) {
     139                    wp_clear_scheduled_hook( 'mo_oauth_auto_delete_debug_logs' );
     140                }
     141
    114142                if ( $log_filename ) {
    115143                    $mo_file_path = MOOAuth_Debug::get_log_file_path();
     
    118146                        wp_delete_file( $mo_file_path );
    119147                    }
     148                    delete_option( 'mo_debug_time' );
     149
    120150                }
    121151            }
     
    191221            wp_schedule_event( time() + 604800, 'weekly', 'check_if_wp_rest_apis_are_open' ); // update timestamp and name according to interval.
    192222        }
     223        $mo_log_enable = get_option( 'mo_debug_enable' );
     224        if ( isset( $mo_log_enable ) && 'on' === $mo_log_enable && ! wp_next_scheduled( 'mo_oauth_auto_delete_debug_logs' ) ) {
     225            wp_schedule_single_event( time() + 604800, 'mo_oauth_auto_delete_debug_logs' );
     226        }
    193227    }
    194228
     
    197231     */
    198232    public function mo_oauth_deactivate() {
     233        if ( class_exists( 'MOOAuth_Debug' ) ) {
     234            $log_file_path = MOOAuth_Debug::get_log_file_path();
     235            if ( file_exists( $log_file_path ) ) {
     236                wp_delete_file( $log_file_path );
     237            }
     238        }
    199239        delete_option( 'host_name' );
    200240        delete_option( 'mo_oauth_client_new_registration' );
     
    210250        delete_option( 'mo_oauth_log' );
    211251        delete_option( 'mo_oauth_debug' );
     252        delete_option( 'mo_debug_time' );
    212253        wp_clear_scheduled_hook( 'check_if_wp_rest_apis_are_open' );
     254        wp_clear_scheduled_hook( 'mo_oauth_auto_delete_debug_logs' );
    213255    }
    214256
  • miniorange-login-with-eve-online-google-facebook/trunk/mo_oauth_settings.php

    r3331464 r3360768  
    1313 * Plugin URI: https://wordpress.org/plugins/miniorange-login-with-eve-online-google-facebook
    1414 * Description: This WordPress Single Sign-On plugin allows login into WordPress with your Azure AD B2C, AWS Cognito, Salesforce, Keycloak, Discord, WordPress or other custom OAuth 2.0 / OpenID Connect providers. WordPress OAuth Client plugin works with any Identity provider that conforms to the OAuth 2.0 and OpenID Connect (OIDC) 1.0 standard.
    15  * Version: 6.26.12
     15 * Version: 6.26.13
    1616 * Author: miniOrange
    1717 * Author URI: https://www.miniorange.com
     
    3636require 'admin' . DIRECTORY_SEPARATOR . 'partials' . DIRECTORY_SEPARATOR . 'mo_plugins' . DIRECTORY_SEPARATOR . 'autoload.php';
    3737require_once 'class-mooauth.php';
    38 define( 'MO_OAUTH_CSS_JS_VERSION', '6.26.12' );
     38define( 'MO_OAUTH_CSS_JS_VERSION', '6.26.13' );
    3939define( 'MO_OAUTH_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
    4040
  • miniorange-login-with-eve-online-google-facebook/trunk/readme.txt

    r3331464 r3360768  
    55Tested up to: 6.8
    66Requires PHP: 7.0
    7 Stable tag: 6.26.12
     7Stable tag: 6.26.13
    88License: Expat
    99License URI: https://plugins.miniorange.com/mit-license
     
    2424The following providers support OAuth 2.0/OpenID Connect SSO for WordPress login.
    2525
    26 *   [WordPress AWS Cognito SSO | WordPress Login with AWS Cognito](https://plugins.miniorange.com/aws-cognito-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_6)
    27 *   [WordPress Office 365 SSO | WordPress Login with Office 365](https://plugins.miniorange.com/office-365-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_5)
    28 *   [WordPress Azure B2C SSO | WordPress Login with Azure B2C](https://plugins.miniorange.com/azure-b2c-ad-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_3)
    29 *   [WordPress Azure AD SSO | WordPress Login with Azure AD](https://plugins.miniorange.com/azure-ad-single-sign-on-wordpress-sso-oauth-openid-connect)
    30 *   [WordPress ADFS SSO | WordPress Login with ADFS](https://plugins.miniorange.com/adfs-single-sign-on-wordpress-sso-oauth-openid-connect)
    31 *   [WordPress Auth0 SSO | WordPress Login with Auth0](https://plugins.miniorange.com/auth0-single-sign-on-wordpress-sso-oauth-openid-connect)
    32 *   [WordPress OKTA SSO | WordPress Login with OKTA](https://plugins.miniorange.com/okta-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_8)
    33 *   [WordPress ClassLink SSO | WordPress Login with ClassLink](https://plugins.miniorange.com/classlink-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_12)
    34 *   [WordPress Keycloak SSO | WordPress Login with Keycloak](https://plugins.miniorange.com/keycloak-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_9)
    35 *   [WordPress Clever SSO | WordPress Login with Clever](https://plugins.miniorange.com/clever-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_11)
    36 *   [WordPress Google Classroom SSO | WordPress Login with Google Classroom](https://plugins.miniorange.com/google-classroom-single-sign-on-sso)
    37 *   [WordPress Salesforce SSO | WordPress Login with Salesforce](https://plugins.miniorange.com/salesforce-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_10)
    38 *   [WordPress G Suite / Google Apps SSO | WordPress Login with Google](https://plugins.miniorange.com/google-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_4)
    39 *   [WordPress Ping Federate SSO ( Ping / Ping Identity ) | WordPress Login with Ping Federate](https://plugins.miniorange.com/ping-federate-single-sign-on-wordpress-sso-oauth-openid-connect)
    40 *   [WordPress IdentityServer4 SSO | WordPress Login with IdentityServer4](https://plugins.miniorange.com/identityserver4-single-sign-on-wordpress-sso-oauth-openid-connect)
    41 *   [WordPress WordPress IdentityServer3 SSO | WordPress Login with IdentityServer3](https://plugins.miniorange.com/identityserver3-single-sign-on-wordpress-sso-oauth-openid-connect)
    42 *   [WordPress Discord SSO | WordPress Login with Discord](https://plugins.miniorange.com/discord-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_7)
    43 *   [WordPress OneLogin SSO | WordPress Login with OneLogin](https://plugins.miniorange.com/onelogin-single-sign-on-wordpress-sso-oauth-openid-connect)
    44 *   [WordPress Swiss-RX-Login SSO ( Swiss RX Login ) | WordPress Login with Swiss-RX-Login](https://plugins.miniorange.com/swiss-rx-login-single-sign-on-for-wordpress-using-oauth)
    45 *   [WordPress Neon CRM SSO | WordPress Login with Neon CRM](https://plugins.miniorange.com/neon-crm-single-sign-on-wordpress-sso-oauth-openid-connect)
    46 *   [WordPress iMIS SSO | WordPress Login with iMIS](https://plugins.miniorange.com/imis-oauth-and-openid-connect-single-sign-on-sso)
    47 *   [WordPress Signicat SSO | User Verification with Signicat](https://plugins.miniorange.com/signicat-single-sign-on-wordpress-sso-oauth-openid-connect)
    48 *   [WordPress ID.me SSO | WordPress Login with ID.me](https://plugins.miniorange.com/id-me-oauth-and-openid-connect-single-sign-on-sso-login)
    49 *   [WordPress Canvas SSO | WordPress Login with Canvas](https://plugins.miniorange.com/canvas-single-sign-on-wordpress-sso-oauth-openid-connect)
    50 *   [WordPress SSO | WordPress Login with WordPress](https://plugins.miniorange.com/guide-to-setup-single-sign-on-between-two-wordpress-sites)
    51 *   [WordPress WSO2 SSO | WordPress Login with WSO2](https://plugins.miniorange.com/wso2-single-sign-on-wordpress-sso-oauth-openid-connect)
    52 *   [WordPress OpenAthens SSO | WordPress Login with OpenAthens](https://plugins.miniorange.com/openathens-single-sign-on-wordpress-sso-oauth-openid-connect)
    53 *   [WordPress HP SSO | WordPress Login with HP](https://plugins.miniorange.com/hp-single-sign-on-sso-oauth-and-openid-connect)
    54 *   [WordPress Servicenow SSO | WordPress Login with Servicenow](https://plugins.miniorange.com/servicenow-single-sign-on-wordpress-sso-oauth-openid-connect)
    55 *   [WordPress Invision Community SSO | WordPress Login with Invision Community](https://plugins.miniorange.com/invision-community-single-sign-on-wordpress-sso-oauth-openid-connect)
    56 *   [WordPress OpenAM / Forgerock SSO | WordPress Login with Forgerock](https://plugins.miniorange.com/forgerock-open-am-single-sign-on-for-wordpress-using-oauth)
    57 *   [WordPress Laravel Passport SSO | WordPress Login with Laravel Passport](https://plugins.miniorange.com/laravel-passport-single-sign-on-wordpress-sso-oauth-openid-connect)
    58 *   [WordPress NextCloud SSO | WordPress Login with NextCloud](https://plugins.miniorange.com/nextcloud-single-sign-on-wordpress-sso-oauth-openid-connect)
    59 *   [WordPress Orcid SSO | WordPress Login with Orcid](https://plugins.miniorange.com/orcid-single-sign-on-wordpress-sso-oauth-openid-connect)
    60 *   [WordPress Memberclicks SSO | WordPress Login with MemberClicks](https://plugins.miniorange.com/memberclicks-oauth-and-openid-connect-single-sign-on-sso-login)
    61 *   [WordPress Open edX / eduNEXT SSO | WordPress Login with Open edX](https://plugins.miniorange.com/open-edx-edunext-oauth-and-openid-connect-single-sign-on-sso-login)
    62 *   [WordPress SheepCRM SSO | WordPress Login with SheepCRM](https://plugins.miniorange.com/sheepcrm-oauth-and-openid-connect-single-sign-on-sso-login)
    63 *   [WordPress IBM APP ID SSO | WordPress Login with IBM](https://plugins.miniorange.com/ibm-app-id-single-sign-on-wordpress-sso-oauth-openid-connect)
    64 *   [WordPress Amazon SSO | WordPress Login with Amazon](https://plugins.miniorange.com/amazon-oauth-and-openid-connect-single-sign-on-sso-login)
    65 *   [WordPress UNA SSO | WordPress Login with UNA](https://plugins.miniorange.com/una-oauth-and-openid-connect-single-sign-on-sso-login)
    66 *   [WordPress Bitrix24 SSO | WordPress Login with Bitrix24](https://plugins.miniorange.com/bitrix24-single-sign-on-wordpress-sso-oauth-openid-connect)
    67 *   [WordPress Slack SSO | WordPress Login with Slack](https://plugins.miniorange.com/slack-single-sign-on-wordpress-sso-oauth-openid-connect)
    68 *   [WordPress Yahoo SSO | WordPress Login with Yahoo](https://plugins.miniorange.com/yahoo-single-sign-on-wordpress-sso-oauth-openid-connect)
    69 *   [WordPress LinkedIn SSO | WordPress Login with LinkedIn](https://plugins.miniorange.com/linkedin-single-sign-on-wordpress-sso-oauth-openid-connect)
    70 *   [WordPress Gitlab SSO | WordPress Login with Gitlab](https://plugins.miniorange.com/gitlab-single-sign-on-wordpress-sso-oauth-openid-connect)
    71 *   [WordPress GitHub SSO | WordPress Login with GitHub](https://plugins.miniorange.com/github-single-sign-on-wordpress-sso-oauth-openid-connect)
    72 *   [WordPress  SSO | WordPress Login with Apple](https://plugins.miniorange.com/login-with-apple-app-using-wordpress-oauth-client)
    73 *   [WordPress Strava SSO | WordPress Login with Strava](https://plugins.miniorange.com/strava-single-sign-on-wordpress-sso-oauth-openid-connect)
    74 *   [WordPress Blizzard / Battle.net SSO | WordPress Login with Battle.net](https://plugins.miniorange.com/blizzard-single-sign-on-wordpress-sso-oauth-openid-connect)
    75 *   [WordPress Basecamp SSO | WordPress Login with Basecamp](https://plugins.miniorange.com/basecamp-oauth-and-openid-connect-single-sign-on-sso-login)
    76 *   [WordPress PayPal SSO | WordPress Login with PayPal](https://plugins.miniorange.com/paypal-single-sign-on-wordpress-sso-oauth-openid-connect)
    77 *   [WordPress Eve Online SSO | WordPress Login with Eve Online](https://plugins.miniorange.com/eve-online-single-sign-on-wordpress-sso-oauth-openid-connect)
    78 *   [WordPress Intuit SSO | WordPress Login with Intuit](https://plugins.miniorange.com/login-with-intuit-using-wordpress-oauth-openid-connect)
    79 *   [WordPress Hubspot SSO | WordPress Login with Hubspot](https://plugins.miniorange.com/hubspot-single-sign-on-for-wordpress-using-oauth)
    80 *   [WordPress X(Twitter) SSO | WordPress Login with Twitter](https://plugins.miniorange.com/twitter-single-sign-on-wordpress-sso-oauth-openid-connect)
    81 *   [WordPress Oracle IDCS SSO | WordPress Login with Oracle IDCS](https://plugins.miniorange.com/oracle-idcs-oauth-and-openid-connect-single-sign-on-sso-login)
    82 *   [WordPress Zoho SSO | WordPress Login with Zoho](https://plugins.miniorange.com/zoho-single-sign-on-wordpress-sso-oauth-openid-connect)
    83 *   [WordPress Idaptive SSO | CyberArk SSO | WordPress Login with CyberArk](https://plugins.miniorange.com/idaptive-single-sign-on-for-wordpress-using-oauth)
    84 *   [WordPress WHMCS SSO | WordPress Login with WHMCS](https://plugins.miniorange.com/whmcs-single-sign-on-wordpress-sso-oauth-openid-connect)
    85 *   [WordPress France Connect SSO | WordPress Login with France Connect](https://plugins.miniorange.com/franceconnect-single-sign-on-sso-wordpress-oauth)
     26*   [AWS Cognito SSO | Login with AWS Cognito](https://plugins.miniorange.com/aws-cognito-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_6)
     27*   [Office 365 SSO | Login with Office 365](https://plugins.miniorange.com/office-365-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_5)
     28*   [Azure B2C SSO | Login with Azure B2C](https://plugins.miniorange.com/azure-b2c-ad-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_3)
     29*   [Azure AD SSO | Login with Azure AD](https://plugins.miniorange.com/azure-ad-single-sign-on-wordpress-sso-oauth-openid-connect)
     30*   [ADFS SSO | Login with ADFS](https://plugins.miniorange.com/adfs-single-sign-on-wordpress-sso-oauth-openid-connect)
     31*   [Auth0 SSO | Login with Auth0](https://plugins.miniorange.com/auth0-single-sign-on-wordpress-sso-oauth-openid-connect)
     32*   [OKTA SSO | Login with OKTA](https://plugins.miniorange.com/okta-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_8)
     33*   [ClassLink SSO | Login with ClassLink](https://plugins.miniorange.com/classlink-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_12)
     34*   [Keycloak SSO | Login with Keycloak](https://plugins.miniorange.com/keycloak-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_9)
     35*   [Clever SSO | Login with Clever](https://plugins.miniorange.com/clever-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_11)
     36*   [Google Classroom SSO | Login with Google Classroom](https://plugins.miniorange.com/google-classroom-single-sign-on-sso)
     37*   [Salesforce SSO | Login with Salesforce](https://plugins.miniorange.com/salesforce-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_10)
     38*   [G Suite / Google Apps SSO | Login with Google](https://plugins.miniorange.com/google-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_4)
     39*   [Ping Federate SSO ( Ping / Ping Identity ) | Login with Ping Federate](https://plugins.miniorange.com/ping-federate-single-sign-on-wordpress-sso-oauth-openid-connect)
     40*   [IdentityServer4 SSO | Login with IdentityServer4](https://plugins.miniorange.com/identityserver4-single-sign-on-wordpress-sso-oauth-openid-connect)
     41*   [WordPress IdentityServer3 SSO | Login with IdentityServer3](https://plugins.miniorange.com/identityserver3-single-sign-on-wordpress-sso-oauth-openid-connect)
     42*   [Discord SSO | Login with Discord](https://plugins.miniorange.com/discord-single-sign-on-wordpress-sso-oauth-openid-connect?utm_source=wordpress_readme&utm_medium=marketplace&utm_campaign=readme_traffic&utm_id=wpor_7)
     43*   [OneLogin SSO | Login with OneLogin](https://plugins.miniorange.com/onelogin-single-sign-on-wordpress-sso-oauth-openid-connect)
     44*   [Swiss-RX-Login SSO ( Swiss RX Login ) | Login with Swiss-RX-Login](https://plugins.miniorange.com/swiss-rx-login-single-sign-on-for-wordpress-using-oauth)
     45*   [Neon CRM SSO | Login with Neon CRM](https://plugins.miniorange.com/neon-crm-single-sign-on-wordpress-sso-oauth-openid-connect)
     46*   [iMIS SSO | Login with iMIS](https://plugins.miniorange.com/imis-oauth-and-openid-connect-single-sign-on-sso)
     47*   [Signicat SSO | User Verification with Signicat](https://plugins.miniorange.com/signicat-single-sign-on-wordpress-sso-oauth-openid-connect)
     48*   [ID.me SSO | Login with ID.me](https://plugins.miniorange.com/id-me-oauth-and-openid-connect-single-sign-on-sso-login)
     49*   [Canvas SSO | Login with Canvas](https://plugins.miniorange.com/canvas-single-sign-on-wordpress-sso-oauth-openid-connect)
     50*   [SSO | Login with WordPress](https://plugins.miniorange.com/guide-to-setup-single-sign-on-between-two-wordpress-sites)
     51*   [WSO2 SSO | Login with WSO2](https://plugins.miniorange.com/wso2-single-sign-on-wordpress-sso-oauth-openid-connect)
     52*   [OpenAthens SSO | Login with OpenAthens](https://plugins.miniorange.com/openathens-single-sign-on-wordpress-sso-oauth-openid-connect)
     53*   [HP SSO | Login with HP](https://plugins.miniorange.com/hp-single-sign-on-sso-oauth-and-openid-connect)
     54*   [Servicenow SSO | Login with Servicenow](https://plugins.miniorange.com/servicenow-single-sign-on-wordpress-sso-oauth-openid-connect)
     55*   [Invision Community SSO | Login with Invision Community](https://plugins.miniorange.com/invision-community-single-sign-on-wordpress-sso-oauth-openid-connect)
     56*   [OpenAM / Forgerock SSO | Login with Forgerock](https://plugins.miniorange.com/forgerock-open-am-single-sign-on-for-wordpress-using-oauth)
     57*   [Laravel Passport SSO | Login with Laravel Passport](https://plugins.miniorange.com/laravel-passport-single-sign-on-wordpress-sso-oauth-openid-connect)
     58*   [NextCloud SSO | Login with NextCloud](https://plugins.miniorange.com/nextcloud-single-sign-on-wordpress-sso-oauth-openid-connect)
     59*   [Orcid SSO | Login with Orcid](https://plugins.miniorange.com/orcid-single-sign-on-wordpress-sso-oauth-openid-connect)
     60*   [Memberclicks SSO | Login with MemberClicks](https://plugins.miniorange.com/memberclicks-oauth-and-openid-connect-single-sign-on-sso-login)
     61*   [Open edX / eduNEXT SSO | Login with Open edX](https://plugins.miniorange.com/open-edx-edunext-oauth-and-openid-connect-single-sign-on-sso-login)
     62*   [SheepCRM SSO | Login with SheepCRM](https://plugins.miniorange.com/sheepcrm-oauth-and-openid-connect-single-sign-on-sso-login)
     63*   [IBM APP ID SSO | Login with IBM](https://plugins.miniorange.com/ibm-app-id-single-sign-on-wordpress-sso-oauth-openid-connect)
     64*   [Amazon SSO | Login with Amazon](https://plugins.miniorange.com/amazon-oauth-and-openid-connect-single-sign-on-sso-login)
     65*   [UNA SSO | Login with UNA](https://plugins.miniorange.com/una-oauth-and-openid-connect-single-sign-on-sso-login)
     66*   [Bitrix24 SSO | Login with Bitrix24](https://plugins.miniorange.com/bitrix24-single-sign-on-wordpress-sso-oauth-openid-connect)
     67*   [Slack SSO | Login with Slack](https://plugins.miniorange.com/slack-single-sign-on-wordpress-sso-oauth-openid-connect)
     68*   [Yahoo SSO | Login with Yahoo](https://plugins.miniorange.com/yahoo-single-sign-on-wordpress-sso-oauth-openid-connect)
     69*   [LinkedIn SSO | Login with LinkedIn](https://plugins.miniorange.com/linkedin-single-sign-on-wordpress-sso-oauth-openid-connect)
     70*   [Gitlab SSO | Login with Gitlab](https://plugins.miniorange.com/gitlab-single-sign-on-wordpress-sso-oauth-openid-connect)
     71*   [GitHub SSO | Login with GitHub](https://plugins.miniorange.com/github-single-sign-on-wordpress-sso-oauth-openid-connect)
     72*   [ SSO | Login with Apple](https://plugins.miniorange.com/login-with-apple-app-using-wordpress-oauth-client)
     73*   [Strava SSO | Login with Strava](https://plugins.miniorange.com/strava-single-sign-on-wordpress-sso-oauth-openid-connect)
     74*   [Blizzard / Battle.net SSO | Login with Battle.net](https://plugins.miniorange.com/blizzard-single-sign-on-wordpress-sso-oauth-openid-connect)
     75*   [Basecamp SSO | Login with Basecamp](https://plugins.miniorange.com/basecamp-oauth-and-openid-connect-single-sign-on-sso-login)
     76*   [PayPal SSO | Login with PayPal](https://plugins.miniorange.com/paypal-single-sign-on-wordpress-sso-oauth-openid-connect)
     77*   [Eve Online SSO | Login with Eve Online](https://plugins.miniorange.com/eve-online-single-sign-on-wordpress-sso-oauth-openid-connect)
     78*   [Intuit SSO | Login with Intuit](https://plugins.miniorange.com/login-with-intuit-using-wordpress-oauth-openid-connect)
     79*   [Hubspot SSO | Login with Hubspot](https://plugins.miniorange.com/hubspot-single-sign-on-for-wordpress-using-oauth)
     80*   [X(Twitter) SSO | Login with Twitter](https://plugins.miniorange.com/twitter-single-sign-on-wordpress-sso-oauth-openid-connect)
     81*   [Oracle IDCS SSO | Login with Oracle IDCS](https://plugins.miniorange.com/oracle-idcs-oauth-and-openid-connect-single-sign-on-sso-login)
     82*   [Zoho SSO | Login with Zoho](https://plugins.miniorange.com/zoho-single-sign-on-wordpress-sso-oauth-openid-connect)
     83*   [Idaptive SSO | CyberArk SSO | Login with CyberArk](https://plugins.miniorange.com/idaptive-single-sign-on-for-wordpress-using-oauth)
     84*   [WHMCS SSO | Login with WHMCS](https://plugins.miniorange.com/whmcs-single-sign-on-wordpress-sso-oauth-openid-connect)
     85*   [France Connect SSO | Login with France Connect](https://plugins.miniorange.com/franceconnect-single-sign-on-sso-wordpress-oauth)
    8686
    8787
     
    220220
    221221== Changelog ==
     222= 6.26.13 =
     223* Added automatic clear of plugin log file after 7 days
     224* Improvement in the OpenID flow to handle ID token
     225* Improvement in the state verification flow
     226
    222227= 6.26.12 =
    223228* Updated debug log file path
     
    820825
    821826== Upgrade Notice ==
     827= 6.26.13 =
     828* Added automatic clear of plugin log file after 7 days
     829* Improvement in the OpenID flow to handle ID token
     830* Improvement in the state verification flow
     831
    822832= 6.26.12 =
    823833* Updated debug log file path
Note: See TracChangeset for help on using the changeset viewer.