Auto-Complete AWS/OKTA Authorization requested

Confirm automatically.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name Auto-Complete AWS/OKTA Authorization requested
// @namespace Zeko Scripts
// @include *://device.sso.us-east-1.amazonaws.com/?user_code*
// @include *://${comp}-sso.awsapps.com/start/user-consent/authorize.html?clientId*
// @include https://${comp}-sso.awsapps.com/start/user-consent/login-success.html
// @include *://${comp}.okta.com/oauth2/v1/authorize?client_id*
// @include *//${comp}.okta.com/app/amazon_aws_sso*
// @grant none
// @description Confirm automatically.
// @author zeko zhang
// @version 1.0.0
// @require https://code.jquery.com/jquery-1.7.2.min.js
// @icon https://device.sso.us-east-1.amazonaws.com/favicon.png
// @license MIT
// ==/UserScript==

var waitInterval = 500;
var loadInterval = 3000;
var pwd = ''


$(() => {
  var clickOKTASubmit = function() {
    // Get password
    var password = $('input[name="credentials.passcode"]')[0];

    let event = document.createEvent('HTMLEvents');
    event.initEvent('input', true, true);
    password.value = pwd;
    password.dispatchEvent(event)

    setTimeout(function () {
      var savaButton = $('input[data-type="save"]');
      savaButton[0].click();
    }, waitInterval);
  }

  var waitPasswordAndClickOKTASubmit = function() {
    if ($('input[name="credentials.passcode"]')[0] !== undefined) {
        clickOKTASubmit();
    } else {
        setTimeout(waitPasswordAndClickOKTASubmit, waitInterval);
    }
  }

  var clickOKTAVerify = function() {
    // Click Okta Verify
    setTimeout(function () {
      var windowX = window.screenX;
      var windowY = window.screenY;
      console.log('当前窗口位置:', windowX, windowY);

      var windowWidth = window.innerWidth;
      var windowHeight = window.innerHeight;

      console.log('窗口宽度:', windowWidth);
      console.log('窗口高度:', windowHeight);

      var buttonX = windowX + windowWidth/2 - 130;
      var buttonY = windowY + windowHeight/2 + (470/2)/1.647 - 30
      console.log('按钮位置:', buttonX, buttonY);

      setTimeout(function () {
        // 创建一个虚拟的点击目标
        var virtualTarget = document.createElement('div');
        virtualTarget.style.width = '100px';
        virtualTarget.style.height = '30px';
        virtualTarget.style.backgroundColor = 'red';
        virtualTarget.style.position = 'absolute';
        virtualTarget.style.top = buttonY+'px'; // 设置点击目标的位置
        virtualTarget.style.left = buttonX+'px'; // 设置点击目标的位置
        document.body.appendChild(virtualTarget);

        // 创建一个鼠标点击事件
        var clickEvent = new MouseEvent('click', {
            bubbles: true,
            cancelable: true,
            view: window
        });

        // 在虚拟点击目标上触发点击事件
        virtualTarget.dispatchEvent(clickEvent);
      }, 5000);

    }, 5000);
  }

  var waitUserNameOrPasswordThenRun = function() {
    if ($('input[name="identifier"]')[0] !== undefined || $('input[name="credentials.passcode"]')[0] !== undefined) {
        var userNames = $('input[name="identifier"]');
        if(userNames !== undefined && userNames.length > 0) {
          // Submit username
          setTimeout(function () {
            var savaButton = $('input[data-type="save"]');
            savaButton[0].click();
          }, waitInterval);


          // Submit password
          waitPasswordAndClickOKTASubmit();
        } else {
          // Submit password
          waitPasswordAndClickOKTASubmit();
        }
    } else {
        setTimeout(waitUserNameOrPasswordThenRun, waitInterval);
    }
  }

  var autoConfirmFunc = function () {
      var confirmCodeButton = $('#cli_verification_btn');
      if(confirmCodeButton !== null) {
        confirmCodeButton.click();
      }

      var loginButton = $('#cli_login_button');
      if(loginButton !== null) {
          loginButton.click();
      }

      var currentUrl = window.location.href;
      if(currentUrl === 'https://${comp}-sso.awsapps.com/start/user-consent/login-success.html') {
        console.log("Current URL:" + currentUrl);
      }

      if(currentUrl.startsWith('https://${comp}.okta.com/oauth2/v1/authorize?client_id') || currentUrl.startsWith('https://${comp}.okta.com/app/amazon_aws_sso')) {
        waitUserNameOrPasswordThenRun();
      }
  }

  setTimeout(function () {
      autoConfirmFunc();
  }, waitInterval);
})