|  | @@ -1,7 +1,8 @@
 | 
	
		
			
				|  |  |  from collections.abc import Generator
 | 
	
		
			
				|  |  |  from datetime import UTC, datetime, timedelta
 | 
	
		
			
				|  |  | +from typing import Optional
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -from azure.identity import DefaultAzureCredential
 | 
	
		
			
				|  |  | +from azure.identity import ChainedTokenCredential, DefaultAzureCredential
 | 
	
		
			
				|  |  |  from azure.storage.blob import AccountSasPermissions, BlobServiceClient, ResourceTypes, generate_account_sas
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from configs import dify_config
 | 
	
	
		
			
				|  | @@ -19,6 +20,7 @@ class AzureBlobStorage(BaseStorage):
 | 
	
		
			
				|  |  |          self.account_name = dify_config.AZURE_BLOB_ACCOUNT_NAME
 | 
	
		
			
				|  |  |          self.account_key = dify_config.AZURE_BLOB_ACCOUNT_KEY
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        self.credential: Optional[ChainedTokenCredential] = None
 | 
	
		
			
				|  |  |          if self.account_key == "managedidentity":
 | 
	
		
			
				|  |  |              self.credential = DefaultAzureCredential()
 | 
	
		
			
				|  |  |          else:
 | 
	
	
		
			
				|  | @@ -64,7 +66,7 @@ class AzureBlobStorage(BaseStorage):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _sync_client(self):
 | 
	
		
			
				|  |  |          if self.account_key == "managedidentity":
 | 
	
		
			
				|  |  | -            return BlobServiceClient(account_url=self.account_url, credential=self.credential)
 | 
	
		
			
				|  |  | +            return BlobServiceClient(account_url=self.account_url, credential=self.credential)  # type: ignore
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          cache_key = "azure_blob_sas_token_{}_{}".format(self.account_name, self.account_key)
 | 
	
		
			
				|  |  |          cache_result = redis_client.get(cache_key)
 |