| 
					
				 | 
			
			
				@@ -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) 
			 |