Skip to content

Commit 55a61da

Browse files
authored
[Storage] Refine Create user delegation SAS logic (#27517)
1 parent 6e2b4d6 commit 55a61da

File tree

5 files changed

+45
-16
lines changed

5 files changed

+45
-16
lines changed

src/Storage/Storage.Management/ChangeLog.md

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* When create Storage context, allowed user input StorageAccountName
22+
- `New-AzStorageContext`
23+
* Reported error when user create user delegation SAS with a storage context not contains StorageAccountName.
24+
- `New-AzStorageBlobSASToken`
25+
- `New-AzStorageContainerSASToken`
26+
- `New-AzDataLakeGen2SasToken`
2127

2228
## Version 8.3.0
2329
* Supported NFS File Share and NFS file and directory properties

src/Storage/Storage.Management/help/New-AzStorageContext.md

+25-16
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ Creates an Azure Storage context.
1616
### OAuthAccount (Default)
1717
```
1818
New-AzStorageContext [-StorageAccountName] <String> [-UseConnectedAccount] [-Protocol <String>]
19-
[-Endpoint <String>] [-EnableFileBackupRequestIntent]
20-
[<CommonParameters>]
19+
[-Endpoint <String>] [-EnableFileBackupRequestIntent] [<CommonParameters>]
2120
```
2221

2322
### AccountNameAndKey
@@ -59,14 +58,19 @@ New-AzStorageContext [-StorageAccountName] <String> -SasToken <String> -Environm
5958
### OAuthAccountEnvironment
6059
```
6160
New-AzStorageContext [-StorageAccountName] <String> [-UseConnectedAccount] [-Protocol <String>]
62-
-Environment <String> [-EnableFileBackupRequestIntent]
63-
[<CommonParameters>]
61+
-Environment <String> [-EnableFileBackupRequestIntent] [<CommonParameters>]
6462
```
6563

6664
### AccountNameAndKeyServiceEndpoint
6765
```
6866
New-AzStorageContext [-StorageAccountName] <String> [-StorageAccountKey] <String> -BlobEndpoint <String>
69-
[-FileEndpoint <String>] [-QueueEndpoint <String>] [-TableEndpoint <String>]
67+
[-FileEndpoint <String>] [-QueueEndpoint <String>] [-TableEndpoint <String>] [<CommonParameters>]
68+
```
69+
70+
### OAuthAccountServiceEndpoint
71+
```
72+
New-AzStorageContext [[-StorageAccountName] <String>] [-UseConnectedAccount] [-BlobEndpoint <String>]
73+
[-FileEndpoint <String>] [-QueueEndpoint <String>] [-TableEndpoint <String>] [-EnableFileBackupRequestIntent]
7074
[<CommonParameters>]
7175
```
7276

@@ -92,13 +96,6 @@ New-AzStorageContext [-Anonymous] [-BlobEndpoint <String>] [-FileEndpoint <Strin
9296
[-TableEndpoint <String>] [<CommonParameters>]
9397
```
9498

95-
### OAuthAccountServiceEndpoint
96-
```
97-
New-AzStorageContext [-UseConnectedAccount] [-BlobEndpoint <String>] [-FileEndpoint <String>]
98-
[-QueueEndpoint <String>] [-TableEndpoint <String>] [-EnableFileBackupRequestIntent]
99-
[<CommonParameters>]
100-
```
101-
10299
## DESCRIPTION
103100
The **New-AzStorageContext** cmdlet creates an Azure Storage context.
104101
The default Authentication of a Storage Context is OAuth (Microsoft Entra ID), if only input Storage account name.
@@ -263,7 +260,7 @@ Accept wildcard characters: False
263260
264261
```yaml
265262
Type: System.String
266-
Parameter Sets: SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint, OAuthAccountServiceEndpoint
263+
Parameter Sets: OAuthAccountServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint
267264
Aliases:
268265

269266
Required: False
@@ -352,7 +349,7 @@ Azure storage file service endpoint
352349

353350
```yaml
354351
Type: System.String
355-
Parameter Sets: AccountNameAndKeyServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint, OAuthAccountServiceEndpoint
352+
Parameter Sets: AccountNameAndKeyServiceEndpoint, OAuthAccountServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint
356353
Aliases:
357354
358355
Required: False
@@ -398,7 +395,7 @@ Azure storage queue service endpoint
398395

399396
```yaml
400397
Type: System.String
401-
Parameter Sets: AccountNameAndKeyServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint, OAuthAccountServiceEndpoint
398+
Parameter Sets: AccountNameAndKeyServiceEndpoint, OAuthAccountServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint
402399
Aliases:
403400
404401
Required: False
@@ -455,12 +452,24 @@ Accept pipeline input: False
455452
Accept wildcard characters: False
456453
```
457454

455+
```yaml
456+
Type: System.String
457+
Parameter Sets: OAuthAccountServiceEndpoint
458+
Aliases:
459+
460+
Required: False
461+
Position: 0
462+
Default value: None
463+
Accept pipeline input: False
464+
Accept wildcard characters: False
465+
```
466+
458467
### -TableEndpoint
459468
Azure storage table service endpoint
460469

461470
```yaml
462471
Type: System.String
463-
Parameter Sets: AccountNameAndKeyServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint, OAuthAccountServiceEndpoint
472+
Parameter Sets: AccountNameAndKeyServiceEndpoint, OAuthAccountServiceEndpoint, SasTokenServiceEndpoint, AnonymousAccountServiceEndpoint
464473
Aliases:
465474
466475
Required: False

src/Storage/Storage/Common/Cmdlet/NewAzureStorageContext.cs

+2
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ public class NewAzureStorageContext : AzureDataCmdlet
121121
Mandatory = true, ParameterSetName = OAuthEnvironmentParameterSet)]
122122
[Parameter(Position = 0, HelpMessage = StorageAccountNameHelpMessage,
123123
Mandatory = true, ParameterSetName = AccountNameKeyServiceEndpointParameterSet)]
124+
[Parameter(HelpMessage = StorageAccountNameHelpMessage,
125+
Mandatory = false, ParameterSetName = OAuthServiceEndpointParameterSet)]
124126
[ValidateNotNullOrEmpty]
125127
public string StorageAccountName { get; set; }
126128

src/Storage/Storage/Common/SasTokenHelper.cs

+8
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,10 @@ public static string GetBlobSharedAccessSignature(AzureStorageContext context, B
755755
}
756756
if (generateUserDelegationSas)
757757
{
758+
if (context.StorageAccountName.StartsWith("["))
759+
{
760+
throw new InvalidOperationException("Please provide '-Context' as a storage context created by cmdlet `New-AzStorageContext` with parameters include '-StorageAccountName'.");
761+
}
758762
global::Azure.Storage.Blobs.Models.UserDelegationKey userDelegationKey = null;
759763
BlobServiceClient oauthService = new BlobServiceClient(context.StorageAccount.BlobEndpoint, context.Track2OauthToken, ClientOptions);
760764

@@ -784,6 +788,10 @@ public static string GetDatalakeGen2SharedAccessSignature(AzureStorageContext co
784788
}
785789
if (generateUserDelegationSas)
786790
{
791+
if (context.StorageAccountName.StartsWith("["))
792+
{
793+
throw new InvalidOperationException("Please provide '-Context' as a storage context created by cmdlet `New-AzStorageContext` with parameters include '-StorageAccountName'.");
794+
}
787795
global::Azure.Storage.Files.DataLake.Models.UserDelegationKey userDelegationKey = null;
788796
DataLakeServiceClient oauthService = new DataLakeServiceClient(context.StorageAccount.BlobEndpoint, context.Track2OauthToken, clientOptions);
789797

src/Storage/Storage/Common/StorageExtensions.cs

+4
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,10 @@ private static string GetBlobSasToken(BlobBaseClient blob, AzureStorageContext c
291291
string sasToken = null;
292292
if (context != null && context.StorageAccount.Credentials.IsToken) //oauth
293293
{
294+
if (context.StorageAccountName.StartsWith("["))
295+
{
296+
throw new InvalidOperationException("Please provide '-Context' as a storage context created by cmdlet `New-AzStorageContext` with parameters include '-StorageAccountName', or provide the source blob object get with such storage context.");
297+
}
294298
global::Azure.Storage.Blobs.Models.UserDelegationKey userDelegationKey = null;
295299
BlobServiceClient oauthService = new BlobServiceClient(context.StorageAccount.BlobEndpoint, context.Track2OauthToken, null);
296300

0 commit comments

Comments
 (0)