コード例 #1
0
def get_refresh_token_string(verbose=False):
    try:
        curl = Client._Curl()
        curl.verbose = verbose
        tmp_log = PLogger.getPandaLogger()
        oidc = curl.get_oidc(tmp_log)
        token_file = oidc.get_token_path()
        if os.path.exists(token_file):
            with open(token_file) as f:
                data = json.load(f)
                enc = data['id_token'].split('.')[1]
                enc += '=' * (-len(enc) % 4)
                dec = json.loads(base64.urlsafe_b64decode(enc.encode()))
                exp_time = datetime.datetime.utcfromtimestamp(dec['exp'])
                delta = exp_time - datetime.datetime.utcnow()
                minutes = delta.total_seconds() / 60
                print('Token will expire in %s minutes.' % minutes)
                print('Token expiration time : {0} UTC'.format(
                    exp_time.strftime("%Y-%m-%d %H:%M:%S")))
                if delta < datetime.timedelta(minutes=0):
                    print("Token already expired. Cannot refresh.")
                    return False, None, None
                return True, data['refresh_token'], delta
        else:
            print("Cannot find token file.")
    except Exception as e:
        print('failed to decode cached token with {0}'.format(e))
    return False, None, None
コード例 #2
0
def get_token_info(verbose=False):
    # c = panda_api.get_api()
    curl = Client._Curl()
    curl.verbose = verbose
    token_info = curl.get_token_info()
    # print(token_info)
    if token_info and type(token_info) in [dict]:
        for key in token_info:
            print("%s: %s" % (key, token_info[key]))
        get_expire_time()
    else:
        print(token_info)
コード例 #3
0
def refresh_token(minutes=30, verbose=False):
    curl = Client._Curl()
    curl.verbose = verbose
    tmp_log = PLogger.getPandaLogger()
    oidc = curl.get_oidc(tmp_log)

    status, refresh_token, delta = get_refresh_token_string()
    if not status:
        print("Cannot refresh token.")
        return False

    print("Fetching auth configuration from: %s" % str(oidc.auth_config_url))
    s, o = oidc.fetch_page(oidc.auth_config_url)
    if not s:
        print("Failed to get Auth configuration: " + o)
        return False
    auth_config = o

    print("Fetching endpoint configuration from: %s" %
          str(auth_config['oidc_config_url']))
    s, o = oidc.fetch_page(auth_config['oidc_config_url'])
    if not s:
        print("Failed to get endpoint configuration: " + o)
        return False
    endpoint_config = o

    # s, o = oidc.refresh_token(endpoint_config['token_endpoint'], auth_config['client_id'],
    #                           auth_config['client_secret'], refresh_token)
    s, o = oidc_refresh_token(oidc, endpoint_config['token_endpoint'],
                              auth_config['client_id'],
                              auth_config['client_secret'], refresh_token)
    if not s:
        print("Failed to refresh token: " + o)
        if delta < datetime.timedelta(minutes=minutes):
            print(
                "The left lifetime of the token is less than required %s minutes"
                % minutes)
            return False
        else:
            return True
    else:
        print("Success to refresh token: " + o)
        if delta < datetime.timedelta(minutes=minutes):
            print(
                "The left lifetime of the token is less than required %s minutes"
                % minutes)
            return False
        else:
            return True
    return True
コード例 #4
0
def get_expire_time(verbose=False):
    try:
        # token_file = openidc_utils.OpenIdConnect_Utils().get_token_path()
        curl = Client._Curl()
        curl.verbose = verbose
        tmp_log = PLogger.getPandaLogger()
        oidc = curl.get_oidc(tmp_log)
        token_file = oidc.get_token_path()
        if os.path.exists(token_file):
            with open(token_file) as f:
                data = json.load(f)
                enc = data['id_token'].split('.')[1]
                enc += '=' * (-len(enc) % 4)
                dec = json.loads(base64.urlsafe_b64decode(enc.encode()))
                exp_time = datetime.datetime.utcfromtimestamp(dec['exp'])
                delta = exp_time - datetime.datetime.utcnow()
                minutes = delta.total_seconds() / 60
                print('Token will expire in %s minutes.' % minutes)
                print('Token expiration time : {0} UTC'.format(
                    exp_time.strftime("%Y-%m-%d %H:%M:%S")))
        else:
            print("Cannot find token file.")
    except Exception as e:
        print('failed to decode cached token with {0}'.format(e))