
    9i                         d Z ddlZddlZddlZddlZddlZ	 ddlmZ ddlm	Z	  ej                  e      Zd Zd Zd	dZy#  ddlmZ Y -xY w)
zPThis module wraps Cloud Shell's IMDS-like interface inside an OAuth2-like helper    N)urlparse   )decode_partc                  `    t         j                  j                  dd      j                  d      S )NAZUREPS_HOST_ENVIRONMENT zcloud-shell)osenvironget
startswith     B/var/www/html/venv/lib/python3.12/site-packages/msal/cloudshell.py_is_running_in_cloud_shellr      s#    ::>>4b9DD]SSr   c                 l   ddg}|D ]  }| j                  |      s|c S  t        |       }|j                  s*|j                  s|j                  j                  d      d   S |j                  rF|j                  j                  d      rdnd}dj                  |j                  |j                  |      S | S )Nz(https://analysis.windows.net/powerbi/apiz4https://pas.windows.net/CheckMyAccess/Linux/.default/r   z//r   z	{}://{}{})r   r   schemenetlocpathsplitformat)scopecloud_shell_supported_audiencesautrailers        r   _scope_to_resourcer      s    2>'
# - AH 	A88AHHvv||C ##xx66$$T*C 	!!!((AHHg>>Lr   c                    | j                  dt        |xs i dj                  t        t        |                  ddi      }|j
                  dk\  rt        j                  d|j                         t        j                  |j                        j                  d	i       }|j                  d
      |j                  d      dj                         D ci c]
  \  }}|r|| c}}S t        j                  |j                        }d}	|d   t        |d         |j                  d|	      d}
|xs i j                  d|	      }|
d   |k7  rddj                  |      dS |d   j                  d      }ddd}t!        j                          }d}dd||dz   ||d|
d<   t#        |      dk(  r	 t        j                  t%        |d               }|j                  dd      |j                  dd      d}|d    |d!   ||d"   |d#   |j                  d$      xs |j                  d%      xs |d|
d<   t)        j*                  t        j,                  |      j/                  d'            j1                  d'      |
d(<   |d)   |
d   d<   |j                  d*      r|d*   |
d*<   |
S c c}}w # t&        $ r t        j                  d&|d          Y w xY w)+Nz#http://localhost:50342/oauth2/token )resourceMetadatatrue)dataheadersi,  zCloud Shell IMDS error: %serrorcodemessage)r%   error_descriptionBeareraccess_token
expires_in
token_type)r*   r+   r,   broker_errorz>token_type {} is not supported by this version of Azure Portal.user
cloudshell)uidutidzcurrentuser@cloudshelli  )isssubaudexpiatpreferred_usernameid_token_claims   r   oidtidr3   r4   r6   r7   r8   unique_namez Unable to decode jwt payload: %szutf-8client_infor2   refresh_token)postdictjoinmapr   status_codeloggerdebugtextjsonloadsr   itemsintr   r   timelenr   
ValueErrorbase64	b64encodedumpsencodedecode)http_clientscopes	client_idr#   respcs_errorkvimds_payloadBEARERoauth2_responseexpected_token_typepartsr>   nowr8   jwt_payloads                    r   _obtain_tokenrb   ,   s   -JBXXc"4f=>@ V$  
D 31499=::dii(,,Wb9\\&)!)i!8" egA  1  	 ::dii(LF$^4,|45"&&|V<
O
  :2**<@|$(;;#!a!h!h#"% 	
 (..s3E 
K ))+C1Tz0*
O%& 5zQ	G**[q%:;K #uf5#|<	K #5)"5) "5)"5)&1oo6J&K '*"}5'*)	2O-. &,%5%5

;&&w/&117 M" 1<F0CO%&u- (+7+H(Mp  	GLL;U1XF	Gs   J -BJ& &"K
K)NN)__doc__rO   rH   loggingr	   rL   r   urllib.parseoauth2cli.oidcr   	getLogger__name__rE   r   r   rb   r   r   r   <module>ri      sV    W    	 &! ( 
		8	$T$Q=&%s   A A