Server IP : 103.119.228.120 / Your IP : 3.128.226.128 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/mysqlsh/lib/python3.9/site-packages/oci/auth/signers/ |
Upload File : |
# coding: utf-8 # Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. import oci.signer import threading SECURITY_TOKEN_FORMAT_STRING = 'ST${}' class SecurityTokenSigner(oci.signer.AbstractBaseSigner): """ The base signer for signing requests where the API key is a token (e.g. instance principals, service-to-service auth) rather representing the details for a specific user. This class expects caller to provide the token and the private key whose corresponding public key was provided when requesting the token. The headers to sign are also customizable but they default to: - date, (request-target), host as generic headers on each request - content-length, content-type and x-content-sha256 on as additional headers requests with bodies """ def __init__(self, token, private_key, generic_headers=["date", "(request-target)", "host"], body_headers=["content-length", "content-type", "x-content-sha256"]): self.api_key = SECURITY_TOKEN_FORMAT_STRING.format(token) self.private_key = private_key self.create_signers(self.api_key, self.private_key, generic_headers, body_headers) class X509FederationClientBasedSecurityTokenSigner(SecurityTokenSigner): """ A SecurityTokenSigner where the token and private key are sourced from a provided X509FederationClient. The token is retrieved via the client's get_security_token() method, and the private key is retrieved by reading it from the session_key_supplier in the client. The headers to sign are also customizable but they default to: - date, (request-target), host as generic headers on each request - content-length, content-type and x-content-sha256 on as additional headers requests with bodies """ def __init__(self, federation_client, generic_headers=["date", "(request-target)", "host"], body_headers=["content-length", "content-type", "x-content-sha256"]): self.federation_client = federation_client self._reset_signers_lock = threading.Lock() super(X509FederationClientBasedSecurityTokenSigner, self).__init__( self.federation_client.get_security_token(), self.federation_client.session_key_supplier.get_key_pair()['private'], generic_headers=generic_headers, body_headers=body_headers ) def __call__(self, request, enforce_content_headers=True): self._reset_signers() return super(X509FederationClientBasedSecurityTokenSigner, self).__call__(request, enforce_content_headers) def refresh_security_token(self): """ Refresh the security token """ self.federation_client.refresh_security_token() def _reset_signers(self): self._reset_signers_lock.acquire() try: refreshed_token = self.federation_client.get_security_token() self.api_key = SECURITY_TOKEN_FORMAT_STRING.format(refreshed_token) self.private_key = self.federation_client.session_key_supplier.get_key_pair()['private'] self._basic_signer.reset_signer(self.api_key, self.private_key) self._body_signer.reset_signer(self.api_key, self.private_key) finally: self._reset_signers_lock.release()